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 が提供しているアプリケーションセキュリティトレーニング教材。