SV.DOS.TMPFILEEXIT

このエラーは、一時ファイルが作成され、終了時または使用後に削除するスケジュールが設定されていない場合に表示されます。

脆弱性とリスク

一時ファイルに機密情報が含まれている場合、アプリケーションの終了後に攻撃者がこの情報へのアクセスを取得する可能性があります。また、アプリケーションが一時ファイルの名前を使い果たしたり、ディレクトリがすべてのファイルを保持できなく可能性があるため、Web アプリケーションがリソースの枯渇を引き起こす可能性があります。

Klocwork セキュリティ脆弱性 (SV) チェッカーは、潜在的に危険なデータを生成する呼び出しを特定します。このような呼び出しは安全でないソースと考えられます。ユーザーは攻撃者になる可能性があり、ヒューマンエラーを取り込む可能性があるため、安全でないソースはユーザーが指定した任意のデータである可能性があります。

軽減と防止

一時ファイルは、使用後すぐに削除する必要があります。少なくとも、すべての一時ファイルを deleteOnExit とします。

例 1

コピー
     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         String name = req.getParameter("userName");
         File file = File.createTempFile("file", ".dat");
         fillWithUserData(name);
         char[] data = readData(file);
         resp.getWriter().print(data);
     }

SV.DOS.TMPFILEEXIT が 19 行目に対して報告されています。ファイル 'file' は一時ファイルですが、終了時に削除されません。

拡張機能

このチェッカーは、Klocwork knowledge base (ナレッジベース) を利用して拡張できます。詳細については、Java 解析のチューニングを参照してください。