于我

【漏洞分析】CVE-2022-41852 Apache Commons JXPath 远程命令执行漏洞

2022/10/12
漏洞详情

apache commons-jxpath 是一个java库,是Xpath基于java语言的一种实现。

近日,Apache Commons JXPath爆出存在安全漏洞,该漏洞是由于使用 JXPath 来解释不受信任的 XPath 表达式,这可能容易受到远程代码执行攻击。除了 compile() 和 compilePath() 函数之外,所有处理 XPath 字符串的 JXPathContext 类函数都容易受到攻击,攻击者可以使用 XPath 表达式从类路径加载任何 Java 类,从而导致代码执行。

影响范围

0 <= apache commons-jxpath <= 1.3

漏洞编号

CVE-2022-41852

cvss评分

9.8

环境搭建

构建springboot工程,在pom.xml文件中加入commons-jxpath依赖,如下图所示:

新建一个controller,调用JXPathContext.newContext()并执行context.getValue()函数。

漏洞分析

在getValue(p)处打断点,跟进程序:

在Parser.parseExpression()中解析的xpath表达式:

parser.ReInit()是根据xpath语句初始化解析类。

parser.parserExpression()是使用解析类解析xpath语句。

xpath语句中包含()时,表达式处理类会匹配到ExtensionFunction类。

后面JXPathContextReferenceImpl.getValue(String xpath)::getValue(xpath, expression)会使用ExtensionFunction类解析带()的xpath表达式。

接着判断方法名中是否包含new字符串,是的话判断类中有没有对应的构造函数并返回;否则判断类中有没有对应的静态函数并返回。

调用链如下:

后面使用构造函数或者静态函数的对应Function类,invoke调用反射执行指定类函数代码。

缓解措施

该组件已停止维护,建议使用其它相同功能的组件替代。

上一篇:【漏洞分析】CVE-2022-35405 漏洞分析
下一篇:反病毒软件静态查杀能力评估的3个要素

开始免费试用灰度产品

申请试用