SV.IL.FILE
このエラーは、ファイル名が内部ファイル名または一時ファイル名としてユーザーに出力される場合に表示されます。
脆弱性とリスク
ユーザーに表示されたファイル名は、攻撃者が他のファイル名を推測するために使用される可能性があります。 たとえば、一時ファイルの次の名前を推測するなどです。この情報は、他のユーザーの秘密データの盗用など、不正アクセスに使用される可能性があります。また、ディレクトリ構造も明らかになり、コードにパスインジェクションの脆弱性がある場合には、攻撃者のパス操作攻撃を許可します。パスディスクロージャ の脆弱性とも呼ばれます。
Klocwork セキュリティ脆弱性 (SV) チェッカーは、潜在的に危険なデータを生成する呼び出しを特定します。このような呼び出しは安全でないソースと考えられます。ユーザーは攻撃者になる可能性があり、ヒューマンエラーを取り込む可能性があるため、安全でないソースはユーザーが指定した任意のデータである可能性があります。
軽減と防止
フルファイル名や一時ファイル名を絶対にユーザーに表示しないようにします。デバッグにはサーバーログを使用し、ユーザーの画面は使用しません。
例 1
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// use user Name as the unique prefix
String debug = req.getParameter("debug");
File file = File.createTempFile("tempfile", ".tmp");
if (debug.equals("true")) {
resp.getOutputStream().print("Using " + file.toString());
}
// ...
file.delete();
}
SV.IL.FILE が 17 行目に対して報告されています。 15 行目で作成された一時ファイル file の名前がリークしています。これは機密情報であり、攻撃者が他のファイルの場所を推測するために利用すると、不正アクセスが行われる可能性があります。
外部参考資料
セキュリティトレーニング
Secure Code Warrior が提供しているアプリケーションセキュリティトレーニング教材。
拡張機能
このチェッカーは、Klocwork knowledge base (ナレッジベース) を利用して拡張できます。詳細については、Java 解析のチューニングを参照してください。