OSコマンドインジェクション
OSコマンドインジェクション
概要
OSコマンドインジェクションは、利用者入力がシェルコマンドへ渡されると発生します。
影響
攻撃者はアプリケーション権限で任意のコマンドを実行できる可能性があります。
対策
シェル実行を避け、安全なAPIを直接呼び出し、引数を許可リスト化し、エスケープは最後の手段とし、最小権限で実行します。
例
Set<String> filterSet = new HashSet<String>();
filterSet.add("del");
filterSet.add("rmdir");
String year = request.getParameter("year");
for (String filter : filterSet) {
year = year.replace(filter, "##" + filter.trim() + "## ");
}
File exeFile = new File(...);
FileUtil.write(exeFile, file.getAbsolutePath() + " " + year);
Process process = Runtime.getRuntime().exec(exeFile.getPath(), null, file.getParentFile());