移动应用中的 Text4Shell(CVE-2022-42889)……我需要担心吗?
CVE-2022-42889 是 Apache Commons Text 库中的一个漏洞,由字符串插值滥用功能强大的处理器所致,存在于 Amazon Shopping、Udemy 和 Grammarly 等热门应用中。本文探讨该漏洞对移动应用的适用性和风险。
CVE-2022-42889 是 Apache Commons Text 库中的一个漏洞,由字符串插值滥用功能强大的处理器所致,
可导致远程代码执行。
该漏洞被称为 Text4Shell,在 1.10 版本发布之前,它已经等待修复长达七个月
。
对于移动应用而言,Apache Commons Text 库是一个相对流行的库,存在于许多热门
应用中,例如:
Mi Music,下载量超过十亿次。Amazon shopping,下载量超过五亿次。Flo Ovulation、LG ThinQ、Fitbit、UMANG、Mi Home、Webnovel、Grammarly Keyboard、Udemy,下载量均达数千万次。
从技术上讲,该漏洞源于插值处理器的使用,这些处理器能够执行脚本、 解析 DNS 查询、读取文件、解析并访问 XML、读取 Java 常量或发起 URL 请求。
以下是利用 script 处理器的示例:
String poc1 = “${script:javascript:java.lang.Runtime.getRuntime().exec(\”touch /tmp/tarlogic\”);}”;
String rce1 = StringSubstitutor.createInterpolator().replace(poc1);
String poc2 = “script:javascript:java.lang.Runtime.getRuntime().exec(\”touch /tmp/tarlogic\”)”;
String rce2 = StringLookupFactory.INSTANCE.interpolatorStringLookup().lookup(poc2);
该漏洞可追溯到两个支持插值的类:StringSubstitutor
和 StringLookupFactory。
1.10 版本中引入的修复从默认配置中移除了脚本、URL 和 DNS 处理器。
* 修复:https://github.com/apache/commons-text/commit/b9b40b903e2d1f9935039803c9852439576780ea
但它保留了文件内容、环境变量和 XML 路径等其他处理器,这些处理器仍可能被滥用来访问密钥、密码或源代码等 敏感信息。
对使用该漏洞库的移动应用进行分析后发现,由于受影响的 API 很少被使用, 这些应用存在漏洞的可能性较低。
例如,在包含该依赖的应用中搜索 StringLookupFactory 类,得到的 结果寥寥无几。对于匹配到的结果,其方法调用栈也并未表明会接触到危险输入。

在审查的 50 多个包含 Apache Commons Text 的应用中,我们发现有一个使用了 StringLookupFactory
,
其余应用使用的都是该库中不存在漏洞的 API。
不过,仅凭名称搜索该库是不够的,因为在一些情况下该库经过了混淆,原始 类名已被移除。下面以 Udemy 应用为例。


总体而言,我们的分析表明存在漏洞的可能性较低。如果您拥有一款移动应用:
- 您可以查看扫描报告中的指纹(fingerprint)部分,确认您的应用中是否包含该库。

- 使用分析环境检查存在漏洞的类的使用情况,但别忘了检查是否存在 代码混淆。
- 当前实施的修复只消除了远程代码执行的风险。仍然可以读取文件 内容、访问环境变量或读取 java 常量。因此,建议将这些处理器从已启用的处理器 列表中移除。