首页/安全/漏洞与攻击面速查/Jenkins 未授权与脚本控制台风险
主机与服务风险面53 条

Jenkins 未授权与脚本控制台风险

Jenkins 默认允许匿名用户查看部分内容;若匿名权限过大或凭据泄露,脚本控制台(Script Console)等价于任意代码执行;历史版本还有 CLI 文件读取等 CVE。

漏洞与攻击面速查安全更新于 2026-10-13

Jenkins 风险是什么

Jenkins 是使用最广的持续集成服务,也是攻击者眼中的高价值目标:它能读源码、拿部署凭据、直接在生产上执行构建。默认配置允许匿名用户查看部分内容;若匿名权限过大或管理员凭据泄露,脚本控制台(Script Console)等价于任意代码执行。历史版本还存在 CLI 文件读取等已公开漏洞。

基本信息

默认端口8080(HTTPS 常配 8443)
权限模型安全矩阵或项目矩阵(按用户/组授权)
高危功能Script Console、CLI 通道、凭据插件中的密钥
加固顺序先权限,再网络收敛,再升级与插件治理

加固要点

加固要点
1. 关闭匿名权限:安全矩阵中匿名仅保留必要项(如无)
2. 管理员使用强口令 + 双因素;停用或删除默认残留账号
3. 禁用不必要的 CLI(或限制端口来源),关闭未用的远程访问通道
4. 及时升级核心与插件,关注插件漏洞公告(插件问题占比高)
5. 凭据统一由 Credentials 插件管理,避免明文写在任务脚本里
6. 构建节点与 Jenkins 控制器网络隔离,控制器不直接接触生产目标

快速核查

快速核查
curl -s --max-time 3 http://<目标IP>:8080/api/json | head -c 200   # 返回 JSON 说明未拦截匿名访问
curl -sI http://<目标IP>:8080/ | head -5                          # 看是否直接暴露登录页
# 结合 Jenkins 的「安全」配置页确认匿名授权范围,不要只看能否访问首页

典型使用场景

  • 上线前安全评审:确认匿名权限、CLI 与脚本控制台的可达性
  • 暴露面排查:从外部视角探测 8080 是否可达并返回 Jenkins 特征
  • 凭据治理:盘点任务脚本中的明文口令、Token 与私钥
  • 插件治理:定期比对插件版本与安全公告,淘汰不再维护的插件
  • 入侵排查:构建记录与凭据使用日志是判断是否已被利用的关键证据

常见问题与后果

问题后果整改方向
匿名可读构建日志源码片段与内网地址泄露收敛匿名权限
匿名可触发构建可被用作内网探测跳板构建需要认证授权
脚本控制台可达等价任意命令执行限制管理员范围并加审计
凭据明文写在脚本仓库泄露即凭据泄露改用凭据插件并轮换
构建系统掌握源码与部署凭据,入侵后果常扩散到代码仓库与生产环境,因此 Jenkins 的定级不应按「内部工具」处理。
Jenkins 插件生态是主要风险来源:核心版本很新但插件陈旧的情况很常见,插件清单要和安全公告一起比对。

易错点

  • 只改管理口令不管匿名授权:匿名脚本能力同样可能造成失守
  • 把 Jenkins 直接暴露在公网且不做访问控制,等于把构建机的执行能力开放出去
  • 凭据写死在任务脚本或构建参数里,仓库一旦泄露即等同于凭据泄露
  • 长期不升级插件,只升级核心版本,攻击面仍停留在旧插件上
  • 控制器直接连通生产网络与凭据库,一次失守即可横向扩散

数据来源与参考

  • Jenkins 官方文档(Securing Jenkins)
  • Jenkins 安全公告(jenkins.io/security)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌