读后笔记
1.使用开源的框架必须实时关注其动态,特别是安全漏洞方面
2.任何公开的入口,都必须进行严格的安全检查
3.框架的选型十分重要,必须将安全考察进去,选择使用比较成熟的框架。
作为架构师及产品负责人应该及时关注框架安全方面的相关漏洞,对未来可能产生的影响做到未雨绸缪。
Equifax 信息泄露始末
Equifax 日前确认,黑客利用了其系统中未修复的 Apache Struts 漏洞(CVE-2017-5638,
2017 年 3 月 6 日曝光)来发起攻击,导致了最近这次影响恶劣的大规模数据泄露事件。
作为美国三大信用报告公司中历史最悠久的一家,Equifax 的主营业务是为客户提供美国、加拿 大和其他多个国家的公民信用信息。保险公司就是其服务的主要客户之一,涉及生命、汽车、火 灾、医疗保险等多个方面。
此外,Equifax 还提供入职背景调查、保险理赔调查,以及针对企业的信用调查等服务。由于
Equifax 掌握了多个国家公民的信用档案,包括公民的学前、学校经历、婚姻、工作、健康、政
治参与等大量隐私信息,所以这次的信息泄露,影响面积很大,而且性质特别恶劣。
受这次信息泄露影响的美国消费者有 1.43 亿左右,另估计约有 4400 万的英国客户和大量加拿 大客户受到影响。事件导致 Equifax 市值瞬间蒸发掉逾 30 亿美元。
Apache Struts 漏洞相关
Apache Struts 是世界上最流行的 Java Web 服务器框架之一,它最初是 Jakarta 项目中的一个
子项目,并在 2004 年 3 月成为 Apache 基金会的顶级项目。
Struts 通过采用 Java Servlet/JSP 技术,实现了基于 Java EE Web 应用的 MVC 设计模式的应 用框架,也是当时第一个采用 MVC 模式的 Web 项目开发框架。随着技术的发展和认知的提 升,Struts 的设计者意识到 Struts 的一些缺陷,于是有了重新设计的想法。
2006 年,另外一个 MVC 框架 WebWork 的设计者与 Struts 团队一起开发了新一代的 Struts 框架,它整合了 WebWork 与 Struts 的优点,同时命名为“Struts 2”,原来的 Struts 框架改 名为 Struts 1。
因为两个框架都有强大的用户基础,所以 Struts 2 一发布就迅速流行开来。在 2013 年 4 月, Apache Struts 项目团队发布正式通知,宣告 Struts 1.x 开发框架结束其使命,并表示接下来官方将不会继续提供支持。自此 Apache Struts 1 框架正式退出历史舞台。
同期,Struts 社区表示他们将专注于推动 Struts 2 框架的发展。从这几年的版本发布情况来 看,Struts 2 的迭代速度确实不慢,仅仅在 2017 年就发布了 9 个版本,平均一个月一个。
但从安全角度来看,Struts 2 可谓是漏洞百出,因为框架的功能基本已经健全,所以这些年 Struts 2 的更新和迭代基本也是围绕漏洞和 Bug 进行修复。仅从官方披露的安全公告中就可以 看到,这些年就有 53 个漏洞预警,包括大家熟知的远程代码执行高危漏洞。
根据网络上一份未被确认的数据显示,中国的 Struts 应用分布在全球范围内排名第一,第二是 美国,然后是日本,而中国没有打补丁的 Struts 的数量几乎是其它国家的总和。特别是在浙 江、北京、广东、山东、四川等地,涉及教育、金融、互联网、通信等行业。
Equifax 中招的漏洞编号是 CVE-2017-5638,此次漏洞的原因是 Apache Struts 2 的 Jakarta Multipart parser 插件存 在远程代码执行漏洞,攻击者可以在使用该插件上传文件时,修改 HTTP 请求头中的 Content- Type 值来触发漏洞,最后远程执行代码。说白了,就是在 Content-Type 注入 OGNL 语言,进而执行命令。代码如下(一行 Python 命 令就可以执行服务器上的 shell 命令。
在 GitHub 上有相关的代码,链接为:https://github.com/mazen160/struts-pwn 或 https://github.com/xsscx/cve-2017-5638
注入点是在 JakartaMultiPartRequest.java 的 buildErrorMessage 函数中,这个函数里的 localizedTextUtil.findText 会执行 OGNL 表达式,从而导致命令执行(注:可以参看 Struts 两个版本的补丁“2.5.10.1 版补丁”“2.3.32 版补丁”),使客户受到影响。
因为默认情况下 Jakarta 是启用的,所以该漏洞的影响范围甚广。当时官方给出的解决方案是尽 快升级到不受影响的版本,看来 Equifax 的同学并没有注意到,或者也没有认识到它的严重 性。