SV.UMC.EXIT
Web アプリケーションは、System.exit() や Runtime.exit() の呼び出しを行うべきではありません。コードがデッドコードの場合や、Java 仮想マシンをシャットダウンする権限を持たない場合であっても、そのコードは、おそらくデバッグの取り残しコード、または非 J2EE アプリケーションから残されたコードです。
脆弱性とリスク
System.exit() および Runtime.exit() は、Java 仮想マシンをシャットダウンします。この結果、DOS 攻撃が発生する可能性があります。
Klocwork セキュリティ脆弱性 (SV) チェッカーは、潜在的に危険なデータを生成する呼び出しを特定します。このような呼び出しは安全でないソースと考えられます。ユーザーは攻撃者になる可能性があり、ヒューマンエラーを取り込む可能性があるため、安全でないソースはユーザーが指定した任意のデータである可能性があります。
軽減と防止
System.exit() および Runtime.exit() への呼び出しを削除する必要があります。適切なエラー処理を実装します。
例 1
コピー
public void doPost(HttpServletRequest request,
HttpServletResponse response) throws IOException,
ServletException {
doProcessRequest(request, response);
}
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws IOException,
ServletException {
doProcessRequest(request, response);
}
// called from servlet
private void doProcessRequest(HttpServletRequest request,
HttpServletResponse response) throws IOException,
ServletException {
if ("shutdown".equals(request.getParameter("action"))) {
System.exit(1);
}
doCreatePage(request, response);
// ...
}
SV.UMC.EXIT が 31 行目の呼び出しに対して報告されています。'java.lang.System.exit()' メソッドの呼び出しをサーブレットコードで使用できません。