GitHub擁有9000萬活躍用戶,是目前全球最受歡迎的源代碼管理工具。由于它是信息系統底層基礎設施的重要部分,因此長期以來受到非法攻擊團伙的重點關注。本次Okta源代碼泄漏事件,只是近年針對GitHub代碼庫非法訪問攻擊中的最新案例。Dropbox、GentooLinux和微軟的GitHub賬戶之前也都遭受過類似的攻擊。
攻擊者不僅企圖獲取源代碼,同時也覬覦代碼中的敏感信息,以便在后續攻擊活動中使用。通過訪問應用系統的源代碼,攻擊者可以查找其中的漏洞,然后在后續攻擊中利用這些漏洞。同時,攻擊者還可以獲取存儲在GitHub中的硬編碼密鑰、密碼及其他憑據,從而訪問托管在AWS、Azure或GCP中的云服務和數據庫。
Okta的GitHub代碼庫被入侵是一個教訓深刻的例子,表明了保護企業內部的訪問安全到底有多難,但這并不是獨特的案例。雖然GitHub提供了一些保護代碼管理庫應用安全的防護工具,但很多企業組織并不充分知道如何使用工具。而且遺憾的是,一些最重要的安全功能需要額外付費才能夠使用。
不過,以下七個實踐經驗被證明可以提高GitHub的安全性,對于目前正在應用GitHub的企業組織可以盡快關注并嘗試應用。
1.不要將私人賬戶用于工作
對于開發人員,私人GitHub賬戶是其個人品牌履歷的一部分,可幫助其職業生涯的晉升和成長。遺憾的是,這也是如今使用GitHub的組織面臨的最大漏洞之一:它們對私人賬戶用于工作往往沒有嚴格管理。從代碼安全的角度,私人GitHub賬戶不應該用于工作,盡管這么做會帶來一些便利性,但企業根本沒有辦法有效控制誰可以訪問創建私人GitHub賬戶的私人Gmail地址。
2.通過單點登錄進行身份驗證
在GitHub現有的業務模式中,用戶需要為集成單點登錄(SSO)服務支付額外的費用。但是從代碼訪問安全的角度,企業應該將GitHub連接到組織的SSO系統中,比如Okta、AzureAD或GoogleWorkspace。開發人員的身份信息應該和企業進行鎖定,只允許通過統一的SSO進行身份驗證。
3.所有賬戶都采用2FA
在很多企業的SSO提供程序中,會設有豁免組和策略異常處置,這可以使SSOMFA被攻擊者輕松繞過。因此,當企業通過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