GitHub拥有9000万活跃用户,是目前全球最受欢迎的源代码管理工具。由于它是信息系统底层基础设施的重要部分,因此长期以来受到非法攻击团伙的重点关注。本次Okta源代码泄漏事件,只是近年针对GitHub代码库非法访问攻击中的最新案例。Dropbox、Gentoo Linux和微软的GitHub账户之前也都遭受过类似的攻击。
攻击者不仅企图获取源代码,同时也觊觎代码中的敏感信息,以便在后续攻击活动中使用。通过访问应用系统的源代码,攻击者可以查找其中的漏洞,然后在后续攻击中利用这些漏洞。同时,攻击者还可以获取存储在GitHub中的硬编码密钥、密码及其他凭据,从而访问托管在AWS、Azure或GCP中的云服务和数据库。
Okta的GitHub代码库被入侵是一个教训深刻的例子,表明了保护企业内部的访问安全到底有多难,但这并不是独特的案例。虽然GitHub提供了一些保护代码管理库应用安全的防护工具,但很多企业组织并不充分知道如何使用工具。而且遗憾的是,一些最重要的安全功能需要额外付费才能够使用。
不过,以下七个实践经验被证明可以提高GitHub的安全性,对于目前正在应用GitHub的企业组织可以尽快关注并尝试应用。
1.不要将私人账户用于工作
对于开发人员,私人GitHub账户是其个人品牌履历的一部分,可帮助其职业生涯的晋升和成长。遗憾的是,这也是如今使用GitHub的组织面临的最大漏洞之一:它们对私人账户用于工作往往没有严格管理。从代码安全的角度,私人GitHub账户不应该用于工作,尽管这么做会带来一些便利性,但企业根本没有办法有效控制谁可以访问创建私人GitHub账户的私人Gmail地址。
2.通过单点登录进行身份验证
在GitHub现有的业务模式中,用户需要为集成单点登录(SSO)服务支付额外的费用。但是从代码访问安全的角度,企业应该将GitHub连接到组织的SSO系统中,比如Okta、Azure AD或Google Workspace。开发人员的身份信息应该和企业进行锁定,只允许通过统一的SSO进行身份验证。
3.所有账户都采用2FA
在很多企业的SSO提供程序中,会设有豁免组和策略异常处置,这可以使SSO MFA被攻击者轻松绕过。因此,当企业通过SSO执行统一的身份验证时,最安全的选择是对组织中的所有GitHub用户都要强制执行多因素身份验证2FA,防止绕过行为的发生。
4.使用SSH密钥用于git操作
虽然GitHub通过个人访问令牌(PAT)引入了细粒度权限控制,但它们仍然容易遭到网络钓鱼的攻击,因为这些令牌常常以明文形式存储。如果使用SSH密钥对git操作进行身份验证,企业需要使用完善的PKI来管理如何配置和提供SSH密钥,还可以将其与企业的设备管理和CA证书有效联系起来。
5.使用角色限制特权访问
GitHub目前提供了几种不同的代码库角色,可以基于最小权限原则进行分配。基本权限可以在组织层面加以控制。在实际使用中,管理者需要合理分配保障成员高效工作所需的最小权限角色,尽量避免让开发人员拥有高等级的管理员权限。
6.严格限制外部合作者使用
与第三方供应商合作是管理大型软件项目的一个常态。然而,目前GitHub所能提供的外部合作者管理能力存在较大不足,难以确保企业的开发活动安全。因此,需要强制要求外部合作者通过公司的SSO进行身份验证,杜绝代码库管理员直接邀请他们访问代码库的情况发生。
7.审核,分析,再审核
没有一家企业的安全控制策略和措施是完美的,即使制定了再好的GitHub应用安全策略,账户也会出现安全疏漏,错误也会在所难免。因此,企业在应用GitHub过程中,要花时间实施定期审计流程,以寻找不安全的休眠账户,并限制代码库中特权角色的数量。一旦企业的GitHub环境被严格保护后,应注意及时发现那些违反策略的情况,比如用户仍然在SSO之外进行身份验证,或者没有使用2FA。
参考链接:https://www.darkreading.com/edge-articles/why-attackers-target-github-and-how-you-can-secure-it