Apache Tomcat存在远程代码执行漏洞CVE-2024-56337
栋科技漏洞库关注到 Apache 软件基金会近期发布针对 Apache Tomcat 远程代码执行漏洞的修复更新,漏洞被追踪为CVE-2024-56337。
二、漏洞分析
CVE-2024-56337漏洞具体而言,是存在于Apache Tomcat中检查时间使用时间TOCTOU(Time-of-Check Time-of-Use)竞争条件漏洞。
CVE-2024-56337漏洞源于对先前 Apache Tomcat 远程代码执行漏洞CVE-2024-50379的不完整修复而导致的,CVSS评分系统暂未定级。
该漏洞影响 Apache Tomcat 从11.0.0-M1到11.0.1,从10.1.0-M1到10.1.33,从9.0.0.1到9.0.97等多个版本,涉及远程代码执行(RCE)。
若默认servlet为可写(参数readonly设置值为false,此为非默认设置)表示不区分大小写文件系统,在负载下并发读取和上传同一文件时,
可绕过Tomcat大小写检查,攻击者通过构造恶意请求上传含恶意JSP代码的文件使其触发解析并执行这些文件,从而导致远程代码执行。
具体分析来说,就是当 Apache Tomcat 在默认servlet启用写入功能的情况下时,攻击者就可以在区分大小写的文件系统上利用这一漏洞。
恶意行为者通过操控特定路径能够绕过安全措施,构造恶意请求上传含恶意JSP代码的文件,使其触发解析并执行文件导致远程代码执行。
研究人员Nacl、WHOAMI、Yemoli和Ruozhi发现并报告该漏洞,Knownsec 404团队的dawu和Sunflower也提供了详细概念验证(PoC)。
Apache软件基金会敦促相关受影响用户尽快更新到最新的安全版本:Apache Tomcat 11.0.2及以上、10.1.34及以上、9.0.98及以上版本。
根据与Tomcat一起使用的Java版本,用户可能还需要进行进一步配置,以完全降低风险,具体如下:
若用户在不区分大小写的文件系统上运行Tomcat且默认启用servlet写入功能(参数readonly设置值为false),则可能需要进行额外配置,
如此才能完全缓解CVE-2024-50379,这取决于用户使用的Tomcat与Java的对应版本,具体缓解措施如下:
在Java 8或Java 11上运行:系统属性sun.io.useCanonCaches必须明确设置为false(默认值为true)
在Java 17上运行:系统属性sun.io.useCanonCaches(如果设置)必须设置为false(默认值为false)
在Java 21及更高版本上运行:无需进一步配置(系统属性和有问题的缓存已被删除),
这是由于Tomcat 11.0.3、10.1.35和9.0.99以上版本将检查sun.io.useCanonCaches是否设置正确,
然后才允许在不区分大小写的文件系统上启用默认servlet的写功能,Tomcat还会尽可能将sun.io.useCanonCaches默认设置为false。
三、影响范围
9.0.0.M1 <= Apache Tomcat < 9.0.98
10.1.0-M1 <= Apache Tomcat < 10.1.34
11.0.0-M1 <= Apache Tomcat < 11.0.2
四、修复建议
官方已发布修复方案,受影响的用户建议更新至安全版本:Apache Tomcat 11.0.2及以上、10.1.34及以上、9.0.98及以上
五、参考链接