本文来自微信公众号“嘶吼专业版”,作者/小二郎。
新一代供应链攻击日盛
软件供应链一直是漏洞和攻击的巨大催化剂,近年来,新一代供应链攻击正在兴起。在这种攻击中,黑客通常将第三方和内部非人类身份作为访问核心业务系统的手段。虽然许多关于供应链安全风险的讨论都集中在软件应用程序组件本身的漏洞上,但它们却忽略了供应链安全风险的一个关键领域:非人类身份及其对核心业务和工程环境的不受控制的访问。
1.不受监控的内部访问密钥和令牌
先来看一组实际工程环境中的数据:
·开发团队每周在GitHub中创建大约20-30个新的个人访问令牌和SSH密钥。
·在典型的GitHub环境中,大约有1/4的令牌(PAT和SSH密钥)没有被使用,并可以在不影响业务的情况下安全地删除。
·在Snowflake生产环境中,五分之一的用户实际上是服务帐户。
为了开发应用程序并使其正常工作,开发团队会定期生成“秘密”——密钥和令牌。这些密钥和令牌允许访问资源、代码和基础设施——也就是组织最有价值的资产。但是,保管这些密钥却是一大挑战,因为它们分散在不同的秘密管理器中,并且经常被开发团队访问,而这些团队经常无意中暴露它们(例如,用于调试)。
虽然采用“左移”方法的AppSec解决方案保护了代码漏洞和依赖关系、CI/CD进程和运行时环境,但安全团队缺乏对实际访问密钥的可视性,不了解它们在哪里、是否暴露、拥有什么权限等。秘密扫描器(secret scanners)或vaults(一个基于身份的机密和加密管理系统,可管理一些私密的信息)不能解决这个问题——vaults只存储用户的秘密。秘密扫描器只发现暴露的秘密,同样没有任何上下文或优先考虑风险的能力。
一个被盗的密钥允许攻击者访问组织的应用程序代码,甚至修改或窃取它,致使应用程序无法使用,造成昂贵的停机成本和潜在的声誉损害。
2.第三方非人类身份访问
人类身份主要是终端用户、开发人员、DevOps和云管理员;非人类身份则是由附加到云服务、API、微服务、软件供应链、云数据平台等的身份组成。
如今,IT、DevOps、开发人员甚至安全团队越来越多地授权新的第三方工具和服务(如GitHub、GitLab、AWS和Big Query)访问核心工程环境,以简化开发工作并提高敏捷性。随着自下而上的软件采用和免费增值云服务的发展趋势,许多这些连接都是由没有任何安全治理的开发人员完成的。
它们在敏感工程系统与外部第三方应用程序和流程之间创建了“影子”连接,这些连接通过API密钥、服务帐户、webhook、OAuth令牌或SSH密钥完成。这些密钥和令牌通常具有高级权限,有时甚至具有无限的永久访问权限。即使在用户使用完所连接的服务之后,其中也有一部分不会就此撤销。
这种“影子”集成的例子是开发人员使用一种新的基于云的CI/CD工具,比如日益流行的CircleCI,它依赖于API访问GitHub源代码存储库。这种不受管制的自由访问的结果正如您所知——CircleCI在2023年初被攻破。
在这次攻击中,攻击者获得了CircleCI客户的密钥,这意味着他们可以将代码推送到部署。这种攻击的结果可能包括将恶意代码推送到生产环境和窃取客户数据,以及使应用程序无法使用。这是一次通过非人类访问的软件供应链攻击。
而最近发生的各种事件也突出了不安全的非人类访问所造成的风险:
·Okta(2023年10月):攻击者使用泄露的服务帐户访问Okta的支持案例管理系统,这使得攻击者可以查看一些Okta客户上传的文件。
·GitHub Dependabot(2023年9月):黑客窃取了GitHub个人访问令牌(PAT)。然后使用这些令牌作为Dependabot向公共和私有GitHub存储库进行未经授权的提交。
·微软SAS密钥(2023年9月):微软人工智能研究人员发布的SAS令牌实际上授予了对其创建的整个存储帐户的完全访问权限,结果导致超过38TB的极度敏感信息泄露且这些权限暴露给攻击者超过2年之久。
·Microsoft365伪造访问令牌(2023年7月):攻击者从企业Azure系统中窃取了非活动签名密钥,用于签名和创建有效的电子邮件访问令牌,这些令牌被多个客户的Azure AD云系统错误地接受。这使得攻击者可以将其攻击范围扩展到共享相同Azure AD云环境的所有组织。
·Jumpcloud(2023年7月):在对漏洞的持续调查中,Jumpcloud宣布所有API密钥无效,随后敦促其客户轮换提供的所有令牌。
·WordPress Ultimate Member插件(2023年7月):通过一个漏洞,任何未经身份验证的攻击者都能随意创建具有完全管理权限的用户,从而接管WebPress网站。
·Slack GitHub存储库(2023年1月):在这次事件中,威胁行为者通过“有限”数量的被盗Slack员工令牌获得了Slack外部托管的GitHub存储库的访问权限。从那里,他们可以下载私有代码库。
·GitHub个人访问令牌(2022年12月):2022年12月6日,来自GitHub Atom、桌面和其他已弃用的GitHub存储库被与机器帐户关联的受损个人访问令牌(PAT)克隆。恶意攻击者随后使用PAT读取这些存储库,其中包含敏感信息。
·微软OAuth网络钓鱼攻击(2022年12月):恶意OAuth应用程序被用来窃取客户的电子邮件。随后,攻击者使用这些账户在Azure AD中注册经过验证的OAuth应用程序,并针对英国和爱尔兰的企业用户进行网络钓鱼攻击。
·微软OAuth(2022年9月):通过利用OAuth集成,恶意应用程序被部署在受损的云租户上,修改了Exchange Online的设置来传播垃圾邮件。
·GitHub(2022年4月):被盗的OAuth令牌允许攻击者使用Travis CI和Heroku作为后门攻破数十个GitHub帐户。
·Mailchimp(2022年4月):黑客滥用API密钥破坏了数百个Mailchimp账户。
·Codecov(2021年4月)攻击者采取的一种攻击路径是从Codecov窃取17,000家公司的Git访问令牌,并使用它们访问私有Git存储库并破坏敏感数据。
这样的例子不胜枚举。其他受到黑客滥用身份或访问密钥攻击的知名公司还包括Slack、微软和谷歌。
防御建议
·为系统操作员定义角色,映射到特定权限,并根据基于角色的访问控制(RBAC)实施最小特权访问。如果特定参与者的账户或资产受到损害,此类活动可以降低风险;
·建议经常描代码中是否存在机密,如密钥或访问令牌,以防被恶意行为者滥用;
·制定事件响应计划,为暴露的机密获取优先级补救指导,最大限度降低攻击影响;
·第三方和内部非人类访问的发现和态势管理,获悉所需的风险和业务上下文,以便轻松地修复过度特权、不必要和不可信的访问;
·检测错误配置并完善更新机制;
·实施异常和威胁检测,通过行为分析实时检测和修复可疑的非人类访问;使用威胁和异常检测引擎持续分析应用程序、服务、供应商和机密,以及它们连接至工程环境的方式,以便在攻击发生之前检测到它们。
·实施网络分段,这是最小化供应链攻击影响的绝佳方法;
·实施零信任模型,“永不信任,始终验证”,阻止攻击者横向移动;
·培训员工和供应商了解最新的攻击趋势,提高安全意识,规范开发行为。