
日前,知名雲身份安全服務商Okta正式披露其私有GitHub儲存庫遭到駭客攻擊,部分源程式碼遭洩露。儘管Okta公司表示,本次洩露事件不會造成其客戶的隱私資料安全,Okta有充分的技術手段來保護使用者服務安全。但安全研究人員認為,源程式碼洩露造成隱形危害在短時間內尚難以準確評估。
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