EN JP CN

SV.UMC.EXIT

SV.UMC.EXIT

Web アプリケーションは、System.exit() や Runtime.exit() の呼び出しを行うべきではありません。コードがデッド コードの場合や、Java 仮想マシンをシャットダウンする権限を持たない場合であっても、そのコードは、おそらくデバッグの取り残しコード、または非 J2EE アプリケーションから残されたコードです。

脆弱性とリスク

System.exit() および Runtime.exit() は、Java 仮想マシンをシャットダウンします。この結果、DOS 攻撃が発生する可能性があります。

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

軽減と防止

System.exit() および Runtime.exit() への呼び出しを削除する必要があります。適切なエラー処理を実装します。

例 1

16     public void doPost(HttpServletRequest request,
17                        HttpServletResponse response) throws IOException,
18                                                             ServletException {
19         doProcessRequest(request, response);
20     }
21     public void doGet(HttpServletRequest request,
22                       HttpServletResponse response) throws IOException,
23                                                            ServletException {
24         doProcessRequest(request, response);
25     }
26     // called from servlet
27     private void doProcessRequest(HttpServletRequest request,
28                                   HttpServletResponse response) throws IOException,
29                                                                        ServletException {
30         if ("shutdown".equals(request.getParameter("action"))) {
31             System.exit(1);
32         }
33         doCreatePage(request, response);
34         // ...
35     }

SV.UMC.EXIT が 31 行目の呼び出しに対して報告されています。'java.lang.System.exit()' メソッドの呼び出しをサーブレットコードで使用できません。