公告编号:TPSA21-38公告来源:TSRC发布日期:2021-08-23
文|腾讯蓝军
近日XStream官方发布重要安全更新,修复了14个安全漏洞,其中5个严重漏洞由TSRC向XStream官方报告,通过这些漏洞,攻击者构造特定的XML数据,可以绕过XStream的黑名单拦截,最终仅需依赖JDK库即可触发反序列化造成任意代码执行。
TSRC与XStream维护者多次探讨黑名单过滤修复方案的缺陷,目前XStream官方已将1.4.18版本修改成白名单过滤方式,建议大家及时更新到最新版以规避历史安全漏洞。
2021/05
三位TSRC白帽子在研究XStream安全漏洞时,陆续发现存在多个黑名单绕过,随后立即向TSRC报告漏洞细节
2021/05
TSRC第一时间复现漏洞后,立即代白帽子们向XStream官方提交报告
2021/05
XStream官方确认漏洞报告
2021/05
鉴于黑名单存在持续被绕过的风险,TSRC与XStream维护者多次探讨黑名单过滤修复方案的缺陷后,XStream修改成白名单过滤方式
2021/08/22
XStream官方发布重要安全更新,修复14个安全漏洞,其中包含由TSRC上报的5个严重漏洞(CVE-2021-39141、CVE-2021-39144、CVE-2021-39146、CVE-2021-39147、CVE-2021-39148)
2021/08/23
TSRC发布安全通告
影响版本:version <= 1.4.17
安全版本:version = 1.4.18
XStream是一种用来处理XML文件序列化库,可以排查项目的jar文件或者依赖配置文件中XStream的版本,如果小于等于1.4.17则说明受影响。
https://x-stream.github.io/news.html
历史上XStream多次出现严重漏洞,仅依赖JDK库绕过黑名单就有多例,依赖第三方库进行绕过黑名单的方法更多,而且新的反序列化攻击链不断被挖掘出来,黑名单不断被绕过,建议务必升级到默认采用白名单过滤方式的最新版本。
如果由于业务特殊情况无法升级到最新版本,低版本可使用以下缓解方案进行加固
https://x-stream.github.io/security.html#example
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.security.NoTypePermission;
import com.thoughtworks.xstream.security.NullPermission;
import com.thoughtworks.xstream.security.PrimitiveTypePermission;
import java.io.File;
import java.io.FileOutputStream;
public class Test {
public static void main(String[] args) throws Exception {
XStream xstream = new XStream();
xstream.toXML(new People("test",11),new FileOutputStream(new File("/tmp/peoplexml")));
// 不允许白名单
xstream.addPermission(NoTypePermission.NONE);
// 允许基础类
xstream.addPermission(NullPermission.NULL);
xstream.addPermission(PrimitiveTypePermission.PRIMITIVES);
// 允许业务类
xstream.allowTypeHierarchy(People.class);
People people = (People) xstream.fromXML(new File("/tmp/peoplexml"));
System.out.println(people.name); //打印 test
}
}
目前腾讯的流量、主机、扫描器等安全系统已具备检测防护能力。
感谢白帽子Ceclin、yxxx、wh1t3Pig报告安全风险,也感谢XStream官方采用默认安全的白名单方案,一起为互联网安全作出贡献。
腾讯蓝军(Tencent Force)由腾讯TEG安全平台部于2006年组建,十余年专注前沿安全攻防技术研究、实战演练、渗透测试、安全评估、培训赋能等,采用APT攻击者视角在真实网络环境开展实战演习,全方位检验安全防护策略、响应机制的充分性与有效性,最大程度发现业务系统的潜在安全风险,并推动优化提升,助力企业领先于攻击者,防患于未然。
捐款成功,感谢您的无私奉献