导语:威胁分子使用 Atlassian Bitbucket 工件文件以明文形式泄露的身份验证密钥来破坏 AWS 帐户。
威胁分子使用 Atlassian Bitbucket 工件文件以明文形式泄露的身份验证密钥来破坏 AWS 帐户。
Mandiant 率先发现该问题,他当时正在调查最近曝光的 Amazon Web Services (AWS) 机密,威胁分子利用这些机密来访问 AWS。
尽管该问题是在调查中发现的,但它说明了之前被认为是安全的数据可以以纯文本形式泄露到公共存储库。
BitBucket 的安全变量
Bitbucket 是一个与 Git 兼容的基于 Web 的版本控制存储库和托管服务,由 Atlassian 运行,为开发人员提供代码管理和协作平台。
Bitbucket Pipelines 是一种集成的持续交付/部署 (CI/CD) 服务,可自动执行构建、测试和部署流程。系统管理员通常将 Pipelines 直接链接到 AWS,以便快速部署应用程序并使用 AWS CLI、开发工具包和其他 AWS 工具访问资源。
为了促进这种自动化,Bitbucket 允许开发人员将敏感信息(例如 AWS 身份验证密钥)存储在“安全变量”中,以便在代码中轻松使用这些变量,而无需将密钥暴露给其他人。
在 Bitbucket 中存储安全变量
当变量在 BitBucket 中设置为安全时,它们将以加密形式存储,以防止在 Bitbucket 环境中公开暴露其值。
Bitbucket 文档解释说:“您可以保护变量,这意味着它可以在您的脚本中使用,但其值将隐藏在构建日志中(参见下面的示例)。如果想编辑安全变量,只能为其赋予新值或删除它。安全变量以加密值的形式存储。”
然而,Mandiant 发现,在管道运行期间生成的工件文件可能包含敏感信息,包括纯文本形式的安全变量。由于开发人员可能不知道这些秘密在工件文件中暴露,因此源代码可能会发布到公共存储库,威胁者可以从中窃取它们。
明文形式的秘密
工件在 bitbucket-pipelines.yml 配置文件中定义,用于指定 Bitbucket 项目的 CI/CD 流程。
这些文件中的指令之一是 artifacts:,用于指定导出到工件的变量、文件和目录,以便在构建和测试过程的进一步步骤中保留和使用。开发人员通常使用 printenv 命令将所有环境文件存储在文本文件中,然后将其传递给工件对象以供构建过程中的后续步骤使用。
将所有环境变量导出到工件文件
但是,这样做将导致“安全变量”以明文形式而不是以加密形式导出到工件文件。如果这些工件文件随后存储在公共位置,威胁分子只需打开文本文件并以明文形式查看所有变量,即可轻松窃取可用于窃取数据或执行其他恶意活动的身份验证机密。
以纯文本形式泄露机密的文本文件
报告中写道:“Mandiant 发现,开发团队在 Web 应用程序源代码中使用 Bitbucket 工件进行故障排除,但开发团队并不知道,这些工件包含密钥的纯文本值。这导致密钥暴露在公共互联网上,随后被攻击者利用,获得未经授权的访问权限。”
Mandiant 认为,另一种可能性是错误配置定义 CI/CD 管道的“bitbucket-pipelines.yml”文件,将安全变量包含在日志或工件中。当管道脚本出于调试目的记录环境变量时,它们可能会无意中记录敏感信息,而且由于这些日志通常存储在可访问的位置,因此再次存在密钥暴露的风险。
缓解技巧
Mandiant 提醒开发人员,Bitbucket 并非为管理机密而设计,建议使用专用的、专门的产品来实现此目的。还建议开发人员仔细检查工件,以确保生成的文件中不包含任何纯文本机密。
最后,建议在整个管道生命周期中部署代码扫描,以捕获秘密暴露事件并在代码到达生产之前将其删除。
文章翻译自:https://thecyberexpress.com/bitbucket-artifacts-could-expose-aws-secrets/如若转载,请注明原文地址