孫典 徐亞峰 黃成鑫 陶希同



摘要:近年來因敏感信息泄露導致的信息安全事件屢見不鮮,如何避免敏感信息在泄露后造成的嚴重損失,是待解決的問題。該系統基于GO語言,調用Github搜索API結合lucene語法過濾規則實現分布式掃描,并在掃描后及時將掃描結果通過微信告知用戶,使用Macaron庫及其中間件和輔助模塊編寫路由,并提供前端Web應用供用戶審計結果。該系統包括掃描、審計、登錄、用戶管理、規則管理、Token管理六大模塊。使用該系統用戶可以根據自身所關心關鍵詞自行編寫符合lucene語法過濾規則,因此該系統具有較好的擴展性和實用性,部署后能降低企業因敏感信息泄露而遭受的損失。
關鍵詞:敏感信息;Go語言;泄露;預警;網絡安全
中圖分類號:TP315? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)25-0102-04
Abstract:Information security incident occurred frequently due to the leakage of sensitive information in recent years. Based on the Go language, this system calls GitHub Search API and Lucene syntax filtering rules to realize distributed scanning. After scanning, the system timely informs users of the scanning results through wechat. And it uses Macaron library and its inter parts and auxiliary modules to write routing, and provides users thefront-end web application to audit results. This system is mainly composed of six modules: login, audit, user management, rule management, token management, and scanning.?Users can write their own Lucene syntax filtering rules according to the keywords they care about.Therefore,the system has good scalability and practicability, and can reduce the loss of enterprises due to the disclosure of sensitive information after deployment. And after its deployment, it is extensible and practical enough to reduce enterprises' lossas a result of the leakage of sensitive information.
Key words: sensitive information; Go language; disclosure; early warning;cyber security
1引言
隨著互聯網技術、通信技術的發展并加持上大數據時代的到來[1],越來越多的企業將企業代碼開源到代碼托管平臺上。企業將代碼開源到代碼托管平臺可以幫助開發企業更好的存儲和管理其源代碼,而且方便開發者追蹤、記錄源代碼的修改,在必要的時候能夠幫助開發者快速回溯到之前的歷史版本等。然而將代碼托管到類似于GitHub代碼托管平臺也會帶來很多安全問題,許多企業的部分開發人員由于缺少安全意識,誤把企業內部敏感信息例如數據庫配置信息、SSH登錄密碼、企業郵箱密碼等上傳到托管平臺上。黑客可以十分容易地利用各大代碼托管平臺的搜索引擎抓取到代碼庫里的配置信息,這些配置信息中會涉及賬號密碼等敏感數據,一旦被利用來釣魚、脫庫等網絡攻擊活動會給企業相關業務帶來安全威脅,如果黑客利用泄露賬戶、密碼成功登錄外部機器,并以此機器作為跳板進入企業內網,必定給企業帶來重大的經濟損失。本系統為了能夠更好地避免代碼泄露造成的損失,結合眾多企業源代碼泄露的事件,通過對企業關注的關鍵詞進行信息收集從而生成匹配規則和過濾規則,方便企業收集到不同類型的可能泄露的敏感信息,并進行審計審查,供企業對于敏感信息泄露進行預警,減少因敏感信息泄露所帶來的損失。
2 HK-scout系統設計
2.1 GitHubAPI
本系統設計的自動化掃描大致可以分為兩步,第一步是搜索代碼,第二步就是檢查搜索的代碼結果中是否含有敏感信息。首先搜索代碼有兩種選擇一種是模擬正常登錄后的用戶操作[2],另一種是調用GitHubAPI搜索。第一種就是爬取搜索代碼的結果頁后解析DOM,但是這種模擬登錄加搜索的方法首先需要我們拿到頁面CSRF Token(Cross-site request forgery Token),然后在成功登錄前可能會出現一步向我們使用的CSRF Token賬號的郵箱發送驗證碼并驗證,或者因為賬號開啟了2FA二次驗證需要輸入驗證碼,而且此操作容易被GitHub風控甚至更嚴重的會直接導致封禁賬號,所以此種方法不太適合使用。
GitHub提供了go-github庫,且調用API十分容易,返回的數據也十分詳細,可以直接得到具體的 Repository信息,源文件內容、倉庫地址等信息。所以本系統采用GitHubAPI進行搜索,在對GitHub敏感信息掃描時使用go-github庫,需要調用GitHub的SearchAPI, GitHub對于API的調用有限制速率,但是經過GitHub Token認證后,可以把速率提升為每小時5000次。請求的速率限制經過GitHubToken認證后可以提高到30次每分鐘,認證后的請求速率和調用速率都足夠本系統使用。