开源项目由各种SAML实现使用
研究人员警告说,Xalan-j(由多个SAML实现使用的Apache项目)中的漏洞可以允许任意执行。
XSLT(可扩展的样式表语言转换)是一种标记语言,可以将XML文档转换为其他格式,例如HTML。
Xalan-J是XSLT处理器的Java版本实现。
处理恶意XSLT样式表时,该项目容易遭受整数截断问题的影响,发现由Google Project Zero的Felix Wilhelm。
他警告说,此问题可用于损坏由内部XSLTC编译器生成的Java类文件并执行任意Java字节码,他警告说,允许使用XALAN-J在软件中进行任意代码执行,以处理不信任的XSLT StylesHeets。
Wilhelm警告说,由于Xalan-J在OpenJDK中使用XML签名验证期间执行XSLT转换,因此此错误可能会影响大量基于Java的SAML实现。
SAML是一种身份验证方法,它使用户能够使用一组登录凭据访问多个Web应用程序。beplay体育能用吗
缓解
研究人员指出,XSLT对XML签名的支持可以使用org.jcp.xml.dsig.securevalidation但是,在JDK 17之前,属性,未经安全管理器运行的应用程序的默认值是错误的,“因此我希望很多实现很容易受到影响”。
在博客文章威廉(Wilhelm)于8月份出版,他说他能够为此错误编写概念验证(POC)利用“生成一个有效(但无用的)类文件,几乎完全由攻击者控制”。
He continued: “While I haven’t successfully executed my own bytecode yet I’m very confident that this is possible with a bit more time investment, so I am reporting this issue now and may follow-up with a more complete proof-of-concept at a later stage.”
此后,另一位研究人员产生了他们自己的POC对于脆弱性,更多的细节可以是在github上找到。
此后,该漏洞已固定在OpenJDK,Java Standard Edition(Java SE)和Java Development Kit(JDK)的开源实现中。
威廉指出,它尚未在Apache的版本中修复,正在退休。