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());