關注我們
帶你讀懂網絡安全

Git是一個開源的分布式軟件版本控制系統,用于敏捷高效地處理任何或小或大的系統開發項目。Git 存儲庫看上去就是一個文件夾,不過,在這個文件夾中不僅僅保存了所有應用系統的當前版本,也同時保存了所有的歷史記錄。Git存儲庫的開放性和便利性使其經常面臨人為錯誤的影響,企業每天在公共Git存儲庫上泄露數以千計的重要代碼信息,包括數據庫密碼、郵箱賬號、管理URL等隱私信息等,造成了巨大損失。隨着人們對這個問題的認識不斷加深,一些新的安全工具和技術也不斷湧現,以在整個軟件開發生命周期(SDLC)中提供針對性的安全保護。
什麼是Git秘密掃描(secret scanning)?
代碼隱私信息泄露的危害性不容忽視。無論是錯誤放置的密鑰,或是意外泄露的數據庫密碼都可能會轉化為即時危機,帶來沉重的經濟損失。Git秘密掃描是從攻擊者的角度出發,提前對需要上傳至Git存儲庫的代碼數據進行掃描或周期性的掃描,防止敏感信息泄露,並及時刪除暴露的信息。Git秘密掃描有兩種模式,每種模式都涵蓋「持續集成」(Continuous Integration,簡稱CI)/「持續交付」(Continuous Delivery,簡稱CD)管道的不同階段。
• 第一種模式側重於預防
第一種模式試圖從一開始就防止秘密泄露,這種Git秘密掃描模式通過集成到CI/CD管道中並實時監控開發人員的操作,攔截包含秘密的意外代碼提交,阻止其公開暴露。
• 第二種模式側重於及時檢測
第二種模式則嘗試檢測可能已經暴露的秘密。惡意行為者一直在使用Git掃描技術,試圖從公共和配置錯誤的Git存儲庫中提取秘密,並將其用於惡意活動中。如果沒有像惡意攻擊者所用的這般強大的掃描工具,企業可能根本不知道自己的秘密已被泄露。此外,還需要注意的是,秘密檢測是一個不斷發展的過程,必須定期更新。
Top 9秘密掃描解決方案
沒人願意淪為Git秘密泄露的受害者,以下列舉了9款Git秘密掃描解決方案,幫助企業在軟件開發生命周期(SDLC)的早期引入安全性,目標是讓參與SDLC的每個人來開發更安全的應用程序。
1. gitLeaks

gitLeaks是在MIT許可下發布的開源靜態分析命令行工具,主要用於檢測本地和GitHub存儲庫(私有和公共)中的硬編碼秘密,如密碼、API密鑰和令牌。
gitLeaks利用正則表達式(Regular expressions)和熵字符串編碼(entropy string coding),根據自定義規則檢測秘密,並以JSON、SARIF或CSV格式導出報告。
優點:gitLeaks是一個開源項目,由50多位貢獻者積極開發所得,可免費使用。值得一提的是,gitLeaks還包含大多數開源項目中沒有的集成、審計和克隆功能。
缺點:由於缺乏用戶界面且只有有限的集成選項,gitLeaks比較適合安全專業人士、研究人員或專業開發項目。
2. SpectralOps

Spectral是較全面的秘密掃描解決方案,涵蓋從集成到構建過程的各個方面。無論是靜態構建、預提交到Git還是CI集成,Spectral都能提供簡單的集成選項。
有趣的是Spectral能夠掃描Git存儲庫,不僅可以掃描代碼中的配置問題和秘密,還可以掃描代碼庫中的日誌、二進制文件和其他容易忽略的潛在泄漏源。
優點:Spectral使用直觀的用戶界面,使其更易於訪問並適合企業管理。Spectral秘密掃描技術所運用的AI和機器學習算法,可確保隨着系統處理數據量的不斷增加,檢測率也能不斷提高,並不斷降低誤報率。
缺點:Spectral不太適合小型項目或單個開發人員,它專為在大型代碼庫上進行協作的開發團隊而設計。
3. Git-Secrets

Git-secrets是一種開發安全工具,可防止用戶在Git存儲庫中包含機密和其他敏感信息。它會掃描提交代碼和說明,當與用戶預先配置的禁止表達式模式匹配,就會阻止提交。
優點:Git-Secrets可以集成到CI/CD管道中以實時監控提交信息。
缺點:Git-secrets使用相當簡單的檢測算法,主要為「正則表達式」(regular expression),這通常會導致許多誤報。而且,該項目不再定期維護,可能不適合在專業開發環境中使用。
4. Whispers

Whispers是一種開源靜態代碼分析工具,旨在搜索硬編碼憑據和危險函數。它可以作為命令行工具運行或集成到CI/CD管道中。該工具旨在解析結構化文本,例如YAML、JSON、XML、npmrc、.pypirc、.htpasswd、.properties、pip.conf、conf/ini、Dockerfile、Shell腳本和Python3以及聲明指定的Javascript、Java、GO、PHP格式。
優點:Whispers開箱即用,支持多種秘密檢測格式,包括密碼、AWS密鑰、API令牌、敏感文件、危險函數等。此外,Whispers還包括一個插件系統,可用於將其掃描功能進一步擴展到新的文件格式。
缺點:Whispers旨在配合其他秘密掃描解決方案,不對實際代碼執行深度掃描,其掃描規則也只是基於正則表達式、Base64和Ascii檢測的有限組合。
5. GitHub秘密掃描(Secret scanning)

當使用GitHub作為企業的公共存儲庫時,GitHub會提供自己的集成秘密掃描解決方案,以檢測流行的API密鑰和令牌結構。如果想要掃描私有存儲庫,企業需要獲得高級安全許可證。用戶可以通過提供「正則表達式」公式來擴展檢測算法,以檢測自定義秘密字符串結構。
優點:使用GitHub可以更輕鬆地進行可視化掃描、配置和集成。該服務包含對許多網絡流行服務廣泛API密鑰和令牌字符串結構的支持,為任何安全評估提供堅實的基礎。
缺點:目前,針對私有存儲庫的秘密掃描正處於測試階段。整個服務的關注點非常狹窄,主要針對已知的字符串結構,例如API密鑰和令牌,而忽略其他秘密,例如數據庫密碼、電子郵件地址、管理URL等。
6. Gittyleaks

Gittyleaks是一個簡單的Git秘密掃描命令行工具,能夠掃描和克隆存儲庫。它試圖發現不應包含在代碼或配置文件中的用戶名、密碼和電子郵件。
優點:Gittyleaks是一款簡單的工具,可用於快速掃描存儲庫以查找明顯的秘密。它比較簡潔,不需要其他解決方案那樣進行更複雜的配置。
缺點:鑑於其簡單性和固定規則,Gittyleaks最適合作為介紹性工具,以幫助用戶了解代碼中的秘密。但是,它缺乏商業開發團隊所需的強大功能和靈活性。
7. Scan

Scan是一個全面的開源安全審計工具。它可以與Azure、BitBucket、GitHub、GitLab、Jenkins、TeamCity等流行存儲庫和管道集成。此外,Scan還支持廣泛的流行框架和語言,能夠集成到CI/CD管道中以提供實時保護,並提供廣泛的報告功能。
優點:由於其良好的開源性質,Scan可能是企業可以免費獲得的最強大、最靈活的DevSecOps工具之一。
缺點:雖然Scan確實強大且靈活,但其並不友好的用戶界面和複雜設置,使得只有少數安全專家才能真正使用Scan並從中受益。
8. Git-all-secrets
Git-all-secrets是一個開源的秘密掃描器集成項目。該工具目前依賴於兩個開源秘密掃描項目,即truffleHog和repo-supervisor——這兩個項目使用「正則表達式」和高熵(high entropy)算法進行秘密檢測。Git-all-secrets匯總了兩個掃描器的組合結果,以呈現更全面的視圖。
優點:Git-all-secrets引入了一個有趣的概念,它試圖通過不依賴單一算法的方式來增強秘密掃描結果。
缺點:雖然使用了一種新穎的方法,但Git-all-secrets底層掃描仍然依賴於基本算法,並且目前已經沒有人再積極維護該項目了。該工具提供了更多的概念驗證(proof-of-concept,PoC),將來可能會被其他項目利用。
9. Detect-secrets
Detect-secrets是一個積極維護的開源項目,專為企業客戶設計。它的創建初衷是防止新的秘密進入代碼庫,檢測預防措施是否存在缺陷,並提供一份秘密清單以在安全存儲中進行維護。Detect-secrets的工作原理是定期比較「正則表達式」語句,以識別可能已提交的新秘密。
優點:Detect-secrets的掃描方法避免了掃描整個git歷史文件,以及每次都需要掃描整個存儲庫的繁複任務。而且,它的插件支持也非常好,目前有18個不同的插件可用,涵蓋AWS密鑰、熵字符串、Base64編碼、Azure密鑰等等。
缺點:如果秘密被分成多行或不包含足夠的熵,則Detect-secrets可能無法實時檢測到它們。
小結
很明顯,積極掃描Git存儲庫和開發人員提交文件以防止機密泄露,應該成為每個公司軟件開發管道的強制性部分。每天,都會上演惡意行為者竊取個人身份信息和私人知識產權的戲碼。而這些通常是由於缺乏代碼安全實踐或僅僅由於人為錯誤造成。企業用戶可以通過使用直接集成到CI/CD管道中的秘密掃描技術,對與這些項目相關的Git存儲庫進行主動秘密掃描來緩解其中的許多問題。
原文鏈接:
https://blog.checkpoint.com/2022/03/18/top-9-git-secret-scanning-tools-for-devsecops/
推薦閱讀
網安智庫平台長期招聘兼職研究員
歡迎加入「安全內參熱點討論群」
文章來源:安全牛