Nuclei模板项目中的Jenkins远程代码执行问题分析
在安全研究领域,Jenkins作为广泛使用的持续集成工具,其安全性一直备受关注。近期,Nuclei模板项目中针对CVE-2017-1000353问题的讨论揭示了Jenkins早期版本中存在的一个高危远程代码执行问题。本文将深入剖析该问题的技术原理、影响范围以及检测方案。
问题背景
该问题影响Jenkins 2.56及更早版本,以及2.46.1 LTS及更早的长期支持版本。攻击者能够通过Jenkins CLI接口发送特制的序列化Java SignedObject对象,绕过现有的反序列化保护机制,最终实现未授权远程代码执行。由于该问题利用链清晰且影响范围广,CVSS 3.1评分高达9.8分,属于严重级别问题。
技术原理
问题的核心在于Java反序列化机制的安全缺陷。Jenkins CLI接口在处理通信数据时,会使用ObjectInputStream对接收到的序列化对象进行反序列化。虽然Jenkins实现了保护机制来阻止危险类的反序列化,但SignedObject类未被包含在初始的保护列表中。
攻击者可以构造包含恶意代码的SignedObject对象,通过序列化后发送给Jenkins服务端。由于缺乏有效的签名验证,Jenkins在反序列化时会执行嵌入的恶意代码。这种攻击方式完全绕过了身份认证,使得问题危害性大幅提升。
影响版本
经确认,以下版本存在风险:
- Jenkins主版本 ≤ 2.56
- Jenkins LTS版本 ≤ 2.46.1
值得注意的是,Oracle通信云原生核心自动化测试套件1.9.0版本也受到此问题影响,这表明问题可能存在于多个集成Jenkins的产品中。
解决方案
Jenkins官方采取了双重修复策略:
- 将SignedObject类加入反序列化保护列表
- 在2.54版本中引入新的HTTP CLI协议,并在2.46.2 LTS版本中默认禁用基于Java序列化的旧版CLI协议
检测方法
安全研究人员可以通过以下特征检测问题存在:
- 检查Jenkins版本号是否在受影响范围内
- 尝试通过CLI接口发送测试序列化数据
- 监控反序列化过程中的异常行为
该问题的发现和修复过程再次证明了持续集成工具安全性的重要性。对于仍在使用受影响版本的用户,应立即升级到安全版本或采取适当的缓解措施。安全团队在构建自动化检测方案时,应充分考虑反序列化问题的特殊性,采用深度防御策略来保护CI/CD环境。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0148- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
auto-devAutoDev 是一个 AI 驱动的辅助编程插件。AutoDev 支持一键生成测试、代码、提交信息等,还能够与您的需求管理系统(例如Jira、Trello、Github Issue 等)直接对接。 在IDE 中,您只需简单点击,AutoDev 会根据您的需求自动为您生成代码。Kotlin03
Intern-S2-PreviewIntern-S2-Preview,这是一款高效的350亿参数科学多模态基础模型。除了常规的参数与数据规模扩展外,Intern-S2-Preview探索了任务扩展:通过提升科学任务的难度、多样性与覆盖范围,进一步释放模型能力。Python00
skillhubopenJiuwen 生态的 Skill 托管与分发开源方案,支持自建与可选 ClawHub 兼容。Python0111