EN JP CN

SV.STR_PAR.UNDESIRED_STRING_PARAMETER

SV.STR_PAR.UNDESIRED_STRING_PARAMETER

ファイル パスの文字列パラメーター

ファイルパスに文字列パラメーターを使用することは、危険である可能性があります。 重要なデータを悪意のある攻撃にさらすことになるからです。SV.STR_PAR.UNDESIRED_STRING_PARAMETER チェッカーは、絶対パスを文字列パラメーターと組み合わせて使用するファイル操作関数のインスタンスを探します。

脆弱性とリスク

システムデータまたはデバッグ情報が、許可を受けていない者でもそれらのデータや情報にアクセスできるようにする出力ストリームまたはロギング関数を通じてプログラムから流出すると、情報開示が発生することがあります。この脆弱性は、入力検証エラーが原因で生じることがあります。この場合、攻撃者がルートを回避して、"\.." 文字シーケンスを使用してディレクトリトラバーサル攻撃を通じてシステム上の任意のファイルを取得または配置することが可能になります。また、存在しないファイルの取得を試みることで、ルートの絶対パスを開示することも可能になります。

この種のエラーに対する対応から、詳細なシステム情報が明らかになり、結果としてセキュリティメカニズムに障害が発生し、サービス拒否 (DoS) 攻撃が行われる可能性があります。

軽減と防止

この脆弱性を回避するには、次の操作を実行します。

  • 文字列パラメーター使用でのファイル名操作をレビューします。
  • スタックトレースとエラーメッセージが、ユーザーからは見られないログに直接コミットされることを確認します。
  • エラーメッセージが、悪意のある攻撃で使用される可能性があるパス情報を公表しないことを確認します。

脆弱コード例

1  int main(int argc, char *argv[])
2  {
3      int fh;
4      fh = creat( "/usr/bin/ls", _S_IREAD | _S_IWRITE );
5      if ( fh == -1 )
6          return -1;
7      else
8      {
9          write(fh, argv[1], sizeof(argv[1]));
10         close( fh );
11         return 0;
12     }
13 }

Klocwork は 4 行目で指摘レポートを生成し、'creat' の呼び出しでファイルパスに潜在的に危険な文字列パラメーターが使用されていることを示します。