代码安全 | 第十八期:调用System.exit()存在安全漏洞
Posted 中科天齐软件原生安全
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了代码安全 | 第十八期:调用System.exit()存在安全漏洞相关的知识,希望对你有一定的参考价值。
本期主题为调用System.exit()存在安全漏洞的相关介绍。
一、为什么调用System.exit()存在安全漏洞?
J2EE应用程序调用System.exit(),会关闭其容器。
System.exit()其实是Java中结束进程的方法,调用它将关闭当前的JVM虚拟机。对于web应用程序来说,尝试关闭应用程序容器绝不是一个值得推荐的方法,因为调用可以关闭应用程序的函数可以作为拒绝服务(DoS)攻击的一种途径。
二、调用System.exit()漏洞构成条件有哪些?
满足以下条件,就构成了一个该类型的安全漏洞:
J2EE服务器程序存在某个功能调用System.exit()。
三、调用System.exit()漏洞会造成哪些后果?
关键词:DoS;崩溃、退出或重新启动;
攻击者访问具有System.exit()的功能,可能会导致程序崩溃、退出或重启,实现Dos攻击。
四、调用System.exit()漏洞的防范和修补方法有哪些?
1、特权分离:具有关闭程序的功能应该是特权功能,只有具有授权的管理用户才能使用。
2、Web应用不应该调用如System.exit()这样可以导致虚拟机退出的方法。
3、Web应用程序不应该将任何异常抛出到服务器,这可能会产生负面影响。
4、非Web应用程序可能具有含有System.exit()的main()方法,但不应该在其他位置调用。
五、调用System.exit()漏洞样例:
用Wukong检测上述程序代码,则可以发现代码中存在着“调用System.exit()” 导致的代码缺陷,如下图:
调用System.exit()在CWE中被编号为CWE-382: J2EE Bad Practices: Use of System.exit()
以上是关于代码安全 | 第十八期:调用System.exit()存在安全漏洞的主要内容,如果未能解决你的问题,请参考以下文章
2018年自适应动态规划与强化学习研讨会暨 第十八期自动化前沿热点论坛会议通知
鲁大师电动车智能化测评报告第十八期:加量降价,九号完成产品破圈?
第十八期设计模式系列之基本模式(Facade Pattern)——提供统一的出口