SV.EXEC.PATH

信頼できない検索パス

SV.EXEC.PATH エラーは、アプリケーションの直接制御下にないリソースを指す可能性がある短いパスまたは相対パスを使用して、アプリケーションが重要なリソースを検索するときに発生します。

脆弱性とリスク

短いパスまたは相対パスを使用すると、攻撃者は、自己所有のプログラムを実行したり、権限のないデータファイルにアクセスしたり、予期しない方法で構成を変更したりする可能性があります。あるアプリケーションが、プログラムなどの重要なリソースを見つけるために、検索パスを使用している場合、攻撃者はその検索パスを変更して、悪意のあるプログラムを指定する可能性があり、その後ターゲットとなったアプリケーションが実行されます。

軽減と防止

他のプログラムを呼び出すときは、完全修飾パス名を使用してそれらのプログラムを指定します。

他のプログラムを呼び出す前に、すべての環境設定を削除または制限します。これには PATH 環境変数が含まれます。

検索パスを使用する前に確認し、現在の作業ディレクトリや一時ファイルディレクトリなどの、安全ではないと思われる要素を削除します。

脆弱コード例

コピー
   public class Test{
     static public void main(String[] args) throws IOException {
       Runtime.getRuntime().exec("calc.exe");  // No full path specified.SV.EXEC.PATH detected
     }
   }  

上記の例では、プログラムは make の絶対パスを指定しておらず、Runtime.exec() を呼び出す前にその環境を整理していません。Klocwork は 3 行目で SV.EXEC.PATH エラーを報告します。これは、「短いパスまたは相対パスで新しいプロセスが作成された」ことを示しています。

修正コード例

コピー
   public class Test {
       static public void main(String[] args) throws IOException {
           Runtime.getRuntime().exec("c:\\windwows\\system32\\calc.exe");
       }
   }

修正されたコード例では、完全修飾パスが与えられ、悪意のあるアクセスの可能性を排除します。

関連チェッカー

セキュリティトレーニング

Secure Code Warrior が提供しているアプリケーションセキュリティトレーニング教材。