月初听闻广东某高校(中山大学)发布通知:关于停止使用Apache Struts2开发框架的通知
鉴于S2漏洞较多、维护难度较大,为防范控制网络安全风险,经研究决定,新建信息化项目不得使用S2;
在用S2的信息系统(网站)应尽快转用其他更安全的MVC框架(如Spring MVC等);从即日起,使用S2的信息系统(网站)将仅限校园网内访问。
作为信息安全爱好者,个人对学校的决定是举双手支持的,Struts 2框架在安全方面似乎有着与生俱来的缺陷,与同类开源项目相比,它的问题是在是太多了。下面说一下我个人支持的原因:
一、数据泄漏
9月9日那天,国外有消息称“Struts漏洞导致1.43亿美国公民信息被泄”,并且Apache Struts 2官方也对此做了回应(声明):
https://blogs.apache.org/foundation/entry/apache-struts-statement-on-equifax?from=timeline
图1
大概的E文翻译(感谢网易有道)如下:
Apache Struts 项目管理委员会愿意就Equifax数据泄露做出声明,因为这与Apache Struts Web框架有关,而且我们在知晓Equifax遭受了数据泄露,且盗取数据者是利用Apache Struts Web框架后,感到非常遗憾。目前,尚不清楚被利用的是哪一个Struts漏洞。Quartz.com网站上曾发表一篇文章,称与CVE-2017-9805漏洞有关,而这个漏洞是在9月4号公布的,随后Apache便发布了可修复漏洞的Struts框架新升级。然而,该安全漏洞早在7月就以被检测到,这意味着要么是Equifax服务器上存在未被及时修复的补丁,要么是攻击者利用了零日漏洞。如果漏洞确由CVE-2017-9805引起,那可能是黑客在利用该漏洞时,它还只是个零日漏洞。因为这篇文章称CVE-2017-9805已经存在九年时间。
作为Apache Struts的项目管理委员会想表明的是,我们的研发团队为了保障我们产品的安全付出了巨大努力,而且会在第一时间解决问题。按照Apache 安全政策的要求,一旦我们发现可能存在的安全问题,我们就会先私下与报告方合作解决问题,并升级产品以修复漏洞。然后才会将漏洞以及修复的方式告知大众。即便漏洞是我们已经知道的,我们也会将信息拦截若干周,以便泄露事件在全球爆发前他们有足够的时间修复自己的软件。然而,由于漏洞检测和漏洞的利用已经成了专门的产业,通过对补丁做逆向工程或是扫描未知漏洞,是很有可能在我们完全曝光攻击向量之前就出现攻击事件的……
虽然1.43亿的数据泄漏发生在美国,离我们比较远,但其实类似的事件,我们国内也曾发生过。
2016年12月10日,国内某知名电商平台被爆出12GB用户数据遭泄漏:身份证、密码、电话等敏感信息无一逃脱。
随后在12月11日,官方平台发布声明:“经京东信息安全部门依据报道内容初步判断,该数据源于2013年Struts 2的安全漏洞问题,当时国内几乎所有互联网公司及大量银行、政府机构都受到了影响,导致大量数据泄露。京东在Struts 2的安全问题发生后,就迅速完成了系统修复,同时针对可能存在信息安全风险的用户进行了安全升级提示,当时受此影响的绝大部分用户都对自己的账号进行了安全升级。但确实仍有极少部分用户并未及时升级账号安全,依然存在一定风险。”