SV.UMC.EXIT
应用程序不得调用 System.exit() 或 Runtime.exit()。即使代码为“死”代码或没有权限关闭 Java 虚拟机的代码,则该代码也可能残留调试代码或来自非 J2EE 应用程序的代码。
漏洞与风险
System.exit() 和 Runtime.exit() 可以关闭 Java 虚拟机。这可能导致拒绝服务攻击。
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);
// ...
}
针对第 31 行的调用报告 SV.UMC.EXIT:java.lang.System.exit() 方法调用不应该用于 servlet 代码