共计 2782 个字符,预计需要花费 7 分钟才能阅读完成。
在上一篇文章,咱们着重介绍 PPE 危险,并提供缓解相干危险的平安倡议与实际。在本篇文章中,咱们将会理解凭据应用环境治理不善与不平安的系统配置,并给出相应的危险缓解倡议。
凭据应用治理不善
因为与凭据四周的访问控制、不平安的机密治理和过于宽松的凭据无关的缺点,凭据环境治理不善会给攻击者提供获取和应用分布在整个流水线中的各种机密和令牌的能力的机会。
危险形容
CI/CD 环境由多个互相通信和身份验证的零碎构建而成,因为凭据可能存在的多种上下文,因而在爱护凭据方面有不小的挑战。应用程序在运行时应用应用程序凭据,流水线应用生产零碎的凭据将基础架构、工件和应用程序部署到生产环境,开发人员将凭据用作其测试环境的一部分以及代码和工件中的一部分。
这种不同的上下文,以及用于存储和应用它们的大量办法和技术,为凭据的不平安应用发明了机会。影响凭据环境平安的一些次要危险在于:
- 蕴含凭据的代码被推送到 SCM 存储库的其中一个分支:因为没能发现代码中蕴含的敏感信息,或未能理解相干危险,将蕴含凭据的代码推送到 SCM 存储库的分支。凭据会裸露给对存储库具备读取权限的任何人,即便从推送到的分支中删除,信息也会持续呈现在提交历史记录中,任何具备存储库拜访权限的人都能够查看。
- 在构建和部署过程中不平安地应用凭据:这些凭据用于拜访代码存储库、读取和写入工件存储库,以及将资源和工件部署到生产环境。鉴于开发人员须要拜访大量的流水线和指标零碎,必须明确以下几个问题:
- 在哪种状况下,应用哪种办法,应用了什么凭据?
- 每个流水线是否仅拜访所需的凭据?
- 流经流水线的未经审查的代码能够拜访凭据吗?
- 这些凭据如何被调用并注入到构建中?这些凭据是否只能在运行时拜访,并且只能从须要它们的上下文中拜访?
- 容器镜像层中的凭据:仅用于构建镜像的凭据依然存在于其中一个镜像层中,任何可能下载镜像的人都能够应用。
- 传输到控制台输入的凭据:流水线中应用的凭据通常无意或无心地打印到控制台输入。这可能会使凭据以明文模式在日志中公开,任何有权拜访构建后果的人都能够查看。这些日志可能会流入日志管理系统,从而扩充其裸露面。
- 未轮换凭据:因为凭据遍布整个工程生态系统,因而这些凭据裸露给大量员工和承包商。未能轮换凭据会导致领有无效凭据的人员和工件数量一直减少。对于流水线应用的凭据,如果企业秉持“未损坏就不修复”的理念进行治理,那么未轮换的凭据则会长期有效,平安危险也会随着领有无效凭据人员的数量减少而减少。
影响
凭据是攻击者最常利用的工具,攻击者试图将凭据用于拜访高价值资源或部署恶意代码和工件。而在凭据治理不善的开发环境中,攻击者取得了多种获取凭据的路径。最大的危险还是人为因素,因为不足平安治理凭据相干常识以及对凭据轮换可能影响流程的担心,使得凭据裸露于危险中,让许多企业的高价值资源面临因凭据裸露而受到侵害的危险。
倡议
- 从代码到部署,倡议建设程序来继续映射软件开发生态系统中不同零碎中发现的凭据。确保每组凭据都遵循最小权限准则,确保所需权限被精准授予到相干服务的应用。
- 防止在多个上下文中共享同一组凭据。这减少了实现最小特权准则的复杂性,并对问责制产生负面影响。
- 倡议应用长期凭据,缩小应用动态凭据。如果须要应用动态凭据,倡议建设定期轮换所有动态凭据并检测古老的凭据的相干程序。
- 将凭据的应用配置为仅限于预约条件(例如限定特定源 IP 或身份),以确保即便在受到破坏的状况下,泄露的凭据也不能在您的环境之外应用。
- 检测推送到代码存储库并存储在其中的密钥。应用诸如 IDE 插件之类的控件来辨认本地更改中应用的密钥、每次代码推送时的主动扫描以及对存储库及其过来提交的定期扫描。
- 确保 CI/CD 零碎中应用的秘密以容许每个流水线和步骤仅拜访其须要的秘密的形式限定范畴。
- 应用内置的供应商选项或第三方工具来避免秘密被传送到将来构建的控制台输入。确保所有现有输入不蕴含秘密。
- 验证是否从任何类型的工件(例如容器镜像、二进制文件或 Helm Chart 的层)中删除了秘密。
不平安的系统配置
不平安的系统配置危险源于流水线中不同零碎(例如 SCM、CI、Artifact 存储库)的平安设置、配置和加固方面的缺点,这类危险往往扩充了企业的攻击面,给攻击者可趁之机。
危险形容
CI/CD 环境由多个供应商提供的多种零碎组成。为了优化 CI/CD 安全性,企业及其开发团队须要高度重视流经流水线的代码和工件,以及每个独自零碎的状态和弹性。与存储和解决数据的其余零碎相似,CI/CD 零碎波及所有级别的各种平安设置和配置——应用程序、网络和基础设施,这些设置对 CI/CD 环境的平安情况和潜在危害的敏感性有重大影响。攻击者总是在寻找潜在的 CI/CD 破绽和谬误配置,这些破绽和谬误配置能够用来为他们谋取利益,比方:
- 应用过期版本或短少重要安全补丁的自我管理系统和 / 或组件。
- 具备过于宽松的网络访问控制的零碎。
- 对底层操作系统具备管理权限的自托管零碎。
- 具备不平安系统配置的零碎。配置通常确定与受权、访问控制、日志记录等无关的要害平安性能。在许多状况下,默认配置集并不平安,须要优化。
- 凭据环境治理不当的零碎——例如未禁用的默认凭据、过于宽松的编程令牌等等。
- 尽管应用 SaaS CI/CD 解决方案打消了与零碎强化和网络内横向挪动相干的一些潜在危险,但组织仍须要高度关注并平安配置其 SaaS CI/CD 解决方案。每个解决方案都有本人的一套独特的平安配置和最佳实际,这对于放弃最佳平安状态至关重要。
影响
攻击者可能会利用其中一个 CI/CD 零碎中的安全漏洞来取得对系统的未经受权的拜访,甚至毁坏零碎并拜访底层操作系统。攻击者可能会滥用这些破绽来操纵非法的 CI/CD 流程、获取秘密令牌并可能拜访生产环境。在某些状况下,这些缺点可能会让攻击者有机会在开发环境内和 CI/CD 零碎的上下文之外横向挪动。
倡议
- 保护正在应用的零碎和版本的清单,包含每个零碎的指定所有者对应的映射图。继续查看这些组件中的已知破绽。如果有可用的安全补丁,请更新易受攻击的组件。如果没有,该当思考移除组件 / 零碎,或通过限度对系统的拜访或零碎执行敏感操作的能力来缩小利用破绽的潜在影响。
- 确保对系统的网络拜访合乎最小拜访准则。
- 建设安全检查流程,来定期检查所有系统配置中可能影响系统安全情况的任何设置,并确保所有设置都是最佳的。
- 确保依照最小权限准则授予流水线执行节点的权限。在这种状况下,一个常见的谬误配置是向开发人员授予执行节点上的调试权限。尽管在许多组织中这是一种常见做法,但必须思考到任何可能在调试模式下拜访执行节点的用户,都可能在将所有秘密加载到内存并应用节点身份时裸露所有敏感信息。因而请审慎为领有此类权限的开发人员降级权限。
下一篇文章为本系列文章的最初一篇,咱们将理解 第三方服务的监管有余 , 工件完整性验证及日志可见性有余 这三个 CI/CD 平安危险及缓解相应危险的倡议与措施。