Jenkins 的暴露面在哪
Jenkins 是持续集成平台,权限一旦放开就等于把构建环境、凭据库与部署权限一起放开。常见问题包括:匿名可读甚至可写、脚本控制台(/script)对普通用户开放、插件长期未更新、以及默认或共享的管理员凭据。核查以权限矩阵与对外暴露面为两条主线。
基本信息
| 适用平台 | Jenkins LTS 与周更版,可运行于 Windows/Linux 容器 |
|---|---|
| 核查入口 | 配置全局安全、权限矩阵或项目式矩阵授权 |
| 高风险功能 | 脚本控制台 /script、凭据管理与流水线共享库 |
| 暴露面 | 主端口 8080、代理端口 50000、反向代理后的路径前缀 |
典型使用场景
- CI/CD 平台纳入评估范围时的暴露面盘点
- 排查构建服务器被当作跳板进入生产环境的风险
- 核查凭据库里存放的部署密钥与云账号权限
- 评估对外映射的 Jenkins 是否可被任意人访问
- 为平台加固提供权限矩阵改造清单
检查要点
检查要点
1. 匿名访问:项目列表、构建日志、系统信息页是否可直接打开
2. 脚本控制台与系统管理页面是否只对管理员开放(普通用户可进入即高危)
3. 凭据管理:是否存在全局凭据被多个任务共享、是否绑定部署密钥
4. 代理节点:50000 端口是否对业务网段可达、节点是否可复用
5. 版本与插件:插件列表中长期未更新项与已知问题,升级计划是否可行
6. 反代配置:路径前缀暴露内部任务名,或未限制来源 IP权限项与判据
| 权限项 | 期望配置 | 风险表现 |
|---|---|---|
| 匿名读取 | 关闭 | 未登录可看任务与日志 |
| 脚本控制台 | 仅管理员 | 普通用户可执行脚本 |
| 系统配置 | 仅管理员 | 可改凭据与节点配置 |
| 节点管理 | 限定管理员与专用账号 | 任意任务可挂载到生产节点 |
| 部署权限 | 按环境与项目分权 | 同一账号可发布到生产 |
Jenkins 常在反向代理后对外开放:评估时要确认代理层是否做了来源限制与路径收敛,很多风险实际上是“内网平台被映射到公网”造成的。
构建任务通常持有生产部署权限:发现可匿名触发或修改任务的能力后应立即通报,不要实际触发部署动作。