十大 CICD 安全风险(五)
字数 1424 2025-08-12 11:34:48
CI/CD 安全风险分析与缓解措施教学文档
一、第三方服务监管不足
风险描述
CI/CD攻击面包括企业资产(如SCM和CI)以及被授权访问这些资产的第三方服务。第三方服务可以极其轻松地被授予对CI/CD系统中资源的访问权限,从而扩大了企业攻击面。
以GitHub SAAS为例,可通过以下5种方式连接第三方应用:
- GitHub应用程序
- OAuth应用程序
3.提供给第三方应用的访问令牌
4.提供给第三方应用的SSH密钥
5.发送给第三方的webhook事件配置
构建系统也允许轻松集成第三方,通常只需在流水线配置文件中添加1-2行代码或从构建系统市场安装插件。
影响
- 破坏RBAC(基于角色的访问控制)实施
- 增加企业攻击面
- 可能导致恶意代码推送和构建系统上的恶意代码执行
缓解建议
批准阶段:
- 建立审查程序,确保第三方在被授予访问权限前获得批准
- 遵循最小特权原则授予权限
集成阶段:
- 保持对所有集成第三方的持续可见性
- 记录所有整合方法(市场应用、插件、OAuth应用等)
- 记录授予第三方的权限级别和实际使用情况
持续使用:
- 限制第三方仅访问特定资源
- 删除未使用/冗余权限
- 对构建过程中的第三方实施严格出入口过滤
取消配置:
- 定期审查所有集成第三方
- 删除不再使用的集成
二、工件完整性验证不当
风险描述
CI/CD流程由多个步骤组成,涉及内部资源和第三方包/工件的结合,创建了多个可能被篡改的入口点。如果被篡改的资源成功渗透到交付过程中,可能作为受信任资源流向生产环境。
影响
- 恶意工件通过流水线传送
- 恶意代码在CI/CD系统或生产环境中执行
缓解建议
验证措施:
-
代码签名:
- 使用贡献者唯一密钥对提交签名
- 防止未签名提交流入流水线
-
工件验证软件:
- 使用如Sigstore等工具签名和验证代码/工件
- 防止未经验证软件进入流水线
-
配置偏差检测:
- 检测未使用签名IAC模板管理的云环境资源
- 识别不受信任源或进程部署的资源
第三方资源处理:
- 计算第三方资源哈希值
- 交叉验证官方发布的哈希值
- 确保资源完整性后再使用
三、日志记录和可见性不足
风险描述
开发环境中的系统和流程通常未被充分纳入企业的日志记录和可见性程序,导致难以检测和调查安全事件。
影响
- 无法及时检测违规行为
- 降低事件响应和补救能力
- 增加攻击者成功机会
缓解建议
环境映射:
- 识别所有参与CI/CD流程的系统(SCM、CI、工件存储库等)
- 建立系统清单,包含每个实例
日志源管理:
- 确保启用所有相关系统的审计日志和应用日志
- 同时关注人工访问和程序访问的可见性
日志集中处理:
- 将日志传送到SIEM等集中位置
- 支持日志聚合和跨系统关联分析
监控与警报:
- 创建检测异常和潜在恶意活动的警报
- 包括单个系统异常和跨系统代码传送异常
- 需深入理解内部构建和部署过程
四、总结
CI/CD安全风险管理的三个关键方面:
-
第三方服务监管:
- 实施全生命周期管理(批准、集成、持续监控、取消配置)
- 严格遵循最小特权原则
- 保持对第三方访问的持续可见性
-
工件完整性验证:
- 实施端到端验证机制(代码签名、工件验证、配置检测)
- 严格处理第三方资源
- 确保从开发到生产的每个环节资源完整性
-
日志与可见性:
- 全面识别和映射CI/CD环境
- 确保关键日志源的启用和收集
- 建立集中日志管理和异常检测机制
通过系统性地实施这些措施,企业可以显著降低CI/CD环境的安全风险,提高对潜在攻击的检测和响应能力。