Jenkins任意文件读取漏洞 (CVE-2024-23897)通告
内容提要
绿盟科技CERT监测到Jenkins发布安全公告,修复了Jenkins CLI中的一个任意文件读取漏洞(CVE-2024-23897)。攻击者可通过使用Jenkins 控制器进程的默认字符编码读取Jenkins上的任意文件,并实现任意代码执行。官方已发布新版本修复该漏洞,受影响的用户应尽快升级版本进行防护。
延伸解读
漏洞利用链解析
该漏洞源于Jenkins CLI命令解析器默认启用的expandAtFiles功能,攻击者可通过@符号后跟文件路径读取任意文件。读取文件后,攻击者可能结合Resource Root URL、Remember me cookie、存储型XSS或CSRF等条件,在Jenkins控制器中实现任意代码执行。目前PoC已公开,利用门槛可能较低,需警惕实际攻击风险。
影响版本与修复版本
受影响版本包括Jenkins <= 2.441和Jenkins LTS <= 2.426.2。官方已发布修复版本:Jenkins >= 2.442和Jenkins LTS >= 2.426.3。用户应尽快升级至安全版本,以消除漏洞风险。
临时缓解措施
若无法立即升级,可采取临时缓解措施:禁用Jenkins CLI,将Java系统属性hudson.cli.CLICommand.allowAtSyntax设置为true;或禁用CLI端点与SSH端口。这些措施可降低漏洞被利用的可能性,但升级仍是最彻底的解决方案。
Q&A
CVE-2024-23897 是什么漏洞?
CVE-2024-23897 是 Jenkins CLI 中的一个任意文件读取漏洞。由于 Jenkins 默认启用 CLI 命令解析器的 expandAtFiles 功能,攻击者可通过 @ 参数后跟文件路径读取 Jenkins 控制器上的任意文件,并结合其他漏洞实现任意代码执行。
哪些 Jenkins 版本受 CVE-2024-23897 影响?
受影响版本包括 Jenkins <= 2.441 和 Jenkins LTS <= 2.426.2。不受影响版本为 Jenkins >= 2.442 和 Jenkins LTS >= 2.426.3。
攻击者如何利用 CVE-2024-23897 实现任意代码执行?
攻击者利用 Jenkins CLI 的 expandAtFiles 功能读取任意文件,然后结合 Resource Root URL、Remember me cookie、存储型 XSS 或 CSRF 等漏洞,在 Jenkins 控制器中实现任意代码执行。
如何修复 CVE-2024-23897 漏洞?
官方已发布新版本修复该漏洞,受影响的用户应尽快升级到 Jenkins >= 2.442 或 Jenkins LTS >= 2.426.3。下载链接:https://www.jenkins.io/download。
如果无法升级 Jenkins,有哪些临时缓解措施?
若暂时无法升级,可采取以下临时缓解措施:1. 禁用 Jenkins CLI:将 Java 系统属性 hudson.cli.CLICommand.allowAtSyntax 设置为 true;2. 禁用 CLI 端点与 SSH 端口,参考文档:https://github.com/jenkinsci-cert/SECURITY-3314-3315。
Jenkins 是什么?
Jenkins 是一款基于 Java 开发的开源项目,用于持续集成和持续交付的自动化中间件,可通过 Pipeline 持续、自动地构建/测试软件项目,并监控软件开发流程,快速问题定位及处理。