甲骨文 WebLogic 服务器曝关键漏洞,无需身份验证即可被远程利用
安全人员在甲骨文 WebLogic 服务器(WLS)中发现了一个新的可远程利用的漏洞。该漏洞编号CVE-2019-2725,其无需用户身份验证即可被远程利用,且CVSS评分达 9.3 分(满分 10 分),是一个关键漏洞。
甲骨文发布了一个安全警报,指出受此漏洞影响的服务器版本包括 10.3.6.0 和 12.1.3.0。这个漏洞很容易被利用,黑色产业已经有很多攻击者用它来植入勒索程序,挖矿程序及其它恶意程序。甲骨文“强烈建议客户尽快应用更新”。
此漏洞的主要缺陷在于对反序列化的 XML 数据的验证不充分。通过特制的 SOAP 请求,攻击者可以在服务器上获得完整的代码执行权限。
具体而言,该漏洞存在于 /_async/AsyncResponseService 端点上的 WLS 的异步组件中。此端点是用于处理异步请求——响应功能的内部端点。
当 AsyncResponseService 端点收到请求时,它会遍历 handler 列表,从而允许每个 handler 都有机会处理请求。一个名为 WorkAreaServerHandler 的特殊 handler 会用到 WorkContextXmlInputAdapter,后者又用到 XMLDecoder,这里就是漏洞的源头了。
XMLDecoder 本质上与用来接收 Serializable 对象的 ObjectInputStream 非常相似,区别在于 XMLDecoder 使用 XML 格式而非二进制格式来描述序列化对象。如果没有合适干净的输入内容,任何 Java 对象都可以被反序列化。
不幸的是,这个漏洞并不是 WebLogic 或 Java 的第一个漏洞。2017 年,WebLogic 报告了一个类似的漏洞(CVE-2017-10271)。反序列化漏洞在 Java 中很常见,正如 InfoQ 文章《Java 序列化的状态》中所提到的一样。为了阻止这类漏洞,Java 9 引入了JEP-290。
甲骨文建议立即使用修补程序解决此问题。其它非官方的建议有:阻止访问所有的 /_async/* 地址,或删除 WAR 文件以及同异步功能相关的所有文件。