湖北头饰价格联盟

Structs2 0Day漏洞-Coverity早就支持的检测规则-兼论当前国内安全团队现状

只看楼主 收藏 回复
  • - -
楼主
  

俗话说人分三种,你懂的。黑客也分三种,白帽黑帽和灰帽。看到国内的安全团队这两天在热炒Structs2远程执行漏洞利用的0Day,我也耐不住寂寞,尝试着用Coverity检测了一下,发现Coverity早在2014年1月份的7.0版本就能够检测此类问题,没想到其他安全团队今年才把这事儿翻出来-而且还铺天盖地。Synopsys一贯低调,不引人瞩目,默默地把Badlock也找到的事儿可以另开一篇文章再仔细说说。

那就讲讲这个0Day的原理和干货好了。

Structs团队,隶属于Apache的开源项目,Struts通过采用Java Servlet/JSP技术,基于Java EE Web应用实现了Model-View-Controller(MVC)设计模式的应用框架,是MVC经典设计模式中的一个经典产品,是应用最广泛的Web应用框架之一。Struts2早期远程溢出漏洞曾经风靡一时,没想到这一次又不幸中枪。

先来说说出问题的的Struts.xml文件,作为Struts 2的核心配置文件,struts.xml文件主要负责管理应用中的Action映射,以及该Action包含的Result定义,也配置Struts项目的全局属性,用户请求和响应Action之间的对应关系,以及配置Action中可能用到的参数,以及处理结果的返回页面。还包括各种拦截器的配置等。类似于Web.xml中的一些参数,但又不同。

而出问题的这个配置,叫做DynamicMethodInvocation,它可能会导致恶意程序远程执行-也就是这两天最出名的0Day漏洞,默认是打开的-但最好关闭,这个检测规则很简单,模式匹配就行。上一张Coverity的实际检测图片-8.0版本检测的:


再来说说其他的安全性检测:

绝大多数的网站应用框架,都不可避免的需要获取外部输入,这些外部输入被Coverity识别为被污染的数据-Taineted Data,然后在不同的函数和文件之间传递,最终被使用-这一部分可执行路径短的可能两三步,多的可能有几百步,Coverity将会记录并监控所有的可执行路径,在最后的使用点检测是否存在潜在的安全风险-XSS,SQL-Injection,目录遍历,命令行注入....OWASP TOP 10你懂的,上一张覆盖图片(ASP+JSP,目前正在扩展Javascript)



再多说两句,一般情况下,Synopsys的Coverity Security Lab在找到这一类漏洞后将会直接联系该项目的研发团队提供修复补丁,之后才报告给互联网上最大的漏洞库-CVE,联系大家修复。所以在你们都不知道的情况下,问题已经修复了-网络安全不是搞噱头,你大规模的爆出了漏洞之后,很多真正的用户是会直接被攻击的!名声是上去了,但有没有考虑过那些被攻击的网站和企业怎么办?很有可能有人被处理,被下岗,银行的储蓄账户被盗。只能感慨利益、金钱和名声的伟大,可以让白帽子变成灰帽子,甚至黑帽子。

要注意的是,最近的两个Structs 0Day漏洞Coverity都可以发现,你懂的:

S2-029

https://struts.apache.org/docs/s2-029.html

这是Synopsys的大牛Romain率先发现的。。。当然后续大家都发现了。

S2-032

https://struts.apache.org/docs/s2-032.html

这个问题是我写的这篇文章-但技术很明显是很久以前了。

当然事实情况是,Structs2还有一些漏洞-XSS,目录遍历,后端执行,这些问题由于安全原因,无法告诉大家。大家如果想看看你自己的代码是否也有这些安全问题的话欢迎申请Coverity的试用,请联系Bao.Han@synopsys.com 或13311307163 。

如果您喜欢我们的文章,那就:




别光看,起来扫





举报 | 1楼 回复