Security

Jenkins CVE-2024-23897 RCE 攻击 – 尽快修补!

开源持续集成/持续交付和部署 (CI/CD) 自动化软件 Jenkins 的维护者已经解决了九个安全漏洞,其中包括一个严重错误,如果成功利用该错误,可能会导致远程代码执行 (RCE)。

该问题被分配了 CVE 标识符CVE-2024-23897,被描述为通过内置命令行界面 ( CLI )的任意文件读取漏洞

“在处理 CLI 命令时,Jenkins 使用 args4j 库来解析 Jenkins 控制器上的命令参数和选项,”维护人员在周三的公告中表示。

“此命令解析器具有一个功能,可以将参数中的 @ 字符后跟文件路径替换为文件内容 (expandAtFiles)。此功能默认启用,Jenkins 2.441 及更早版本、LTS 2.426.2 及更早版本不会禁用它”。

威胁参与者可以利用此怪癖,使用 Jenkins 控制器进程的默认字符编码读取 Jenkins 控制器文件系统上的任意文件。

虽然具有“总体/读取”权限的攻击者可以读取整个文件,但没有该权限的攻击者可以根据 CLI 命令读取文件的前三行。

此外,该缺陷可以被武器化以读取包含加密密钥的二进制文件,尽管有某些限制。詹金斯表示,只要可以提取二进制秘密,就可以为各种攻击打开大门 –

  • 通过资源根 URL 远程执行代码
  • 通过“记住我”cookie 远程​​执行代码
  • 通过构建日志存储的跨站点脚本(XSS)攻击远程执行代码
  • 通过 CSRF 保护绕过远程执行代码
  • 解密存储在 Jenkins 中的秘密
  • 删除 Jenkins 中的任何项目
  • 下载 Java 堆转储

詹金斯说:“虽然可以读取包含二进制数据的文件,但受影响的功能尝试使用控制器进程的默认字符编码将它们读取为字符串。”

“这很可能导致某些字节无法成功读取并被替换为占位符值。哪些字节可以或不能读取取决于此字符编码。”

SonarSource 安全研究员 Yaniv Nizry 于2023 年 11 月 13 日发现并报告了该缺陷,该缺陷已通过禁用命令解析器功能在 Jenkins 2.442、LTS 2.426.3 中修复。

作为应用补丁之前的短期解决方法,建议关闭对 CLI 的访问。

近一年前,Jenkins 解决了两个名为CorePlague(CVE-2023-27898 和 CVE-2023-27905)的严重安全漏洞,这些漏洞可能导致目标系统上的代码执行。

发表评论