孫典 徐亞峰 黃成鑫 陶希同
摘要:近年來因敏感信息泄露導(dǎo)致的信息安全事件屢見不鮮,如何避免敏感信息在泄露后造成的嚴(yán)重?fù)p失,是待解決的問題。該系統(tǒng)基于GO語言,調(diào)用Github搜索API結(jié)合lucene語法過濾規(guī)則實現(xiàn)分布式掃描,并在掃描后及時將掃描結(jié)果通過微信告知用戶,使用Macaron庫及其中間件和輔助模塊編寫路由,并提供前端Web應(yīng)用供用戶審計結(jié)果。該系統(tǒng)包括掃描、審計、登錄、用戶管理、規(guī)則管理、Token管理六大模塊。使用該系統(tǒng)用戶可以根據(jù)自身所關(guān)心關(guān)鍵詞自行編寫符合lucene語法過濾規(guī)則,因此該系統(tǒng)具有較好的擴展性和實用性,部署后能降低企業(yè)因敏感信息泄露而遭受的損失。
關(guān)鍵詞:敏感信息;Go語言;泄露;預(yù)警;網(wǎng)絡(luò)安全
中圖分類號:TP315? ? ? ? 文獻(xiàn)標(biāo)識碼: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引言
隨著互聯(lián)網(wǎng)技術(shù)、通信技術(shù)的發(fā)展并加持上大數(shù)據(jù)時代的到來[1],越來越多的企業(yè)將企業(yè)代碼開源到代碼托管平臺上。企業(yè)將代碼開源到代碼托管平臺可以幫助開發(fā)企業(yè)更好的存儲和管理其源代碼,而且方便開發(fā)者追蹤、記錄源代碼的修改,在必要的時候能夠幫助開發(fā)者快速回溯到之前的歷史版本等。然而將代碼托管到類似于GitHub代碼托管平臺也會帶來很多安全問題,許多企業(yè)的部分開發(fā)人員由于缺少安全意識,誤把企業(yè)內(nèi)部敏感信息例如數(shù)據(jù)庫配置信息、SSH登錄密碼、企業(yè)郵箱密碼等上傳到托管平臺上。黑客可以十分容易地利用各大代碼托管平臺的搜索引擎抓取到代碼庫里的配置信息,這些配置信息中會涉及賬號密碼等敏感數(shù)據(jù),一旦被利用來釣魚、脫庫等網(wǎng)絡(luò)攻擊活動會給企業(yè)相關(guān)業(yè)務(wù)帶來安全威脅,如果黑客利用泄露賬戶、密碼成功登錄外部機器,并以此機器作為跳板進入企業(yè)內(nèi)網(wǎng),必定給企業(yè)帶來重大的經(jīng)濟損失。本系統(tǒng)為了能夠更好地避免代碼泄露造成的損失,結(jié)合眾多企業(yè)源代碼泄露的事件,通過對企業(yè)關(guān)注的關(guān)鍵詞進行信息收集從而生成匹配規(guī)則和過濾規(guī)則,方便企業(yè)收集到不同類型的可能泄露的敏感信息,并進行審計審查,供企業(yè)對于敏感信息泄露進行預(yù)警,減少因敏感信息泄露所帶來的損失。
2 HK-scout系統(tǒng)設(shè)計
2.1 GitHubAPI
本系統(tǒng)設(shè)計的自動化掃描大致可以分為兩步,第一步是搜索代碼,第二步就是檢查搜索的代碼結(jié)果中是否含有敏感信息。首先搜索代碼有兩種選擇一種是模擬正常登錄后的用戶操作[2],另一種是調(diào)用GitHubAPI搜索。第一種就是爬取搜索代碼的結(jié)果頁后解析DOM,但是這種模擬登錄加搜索的方法首先需要我們拿到頁面CSRF Token(Cross-site request forgery Token),然后在成功登錄前可能會出現(xiàn)一步向我們使用的CSRF Token賬號的郵箱發(fā)送驗證碼并驗證,或者因為賬號開啟了2FA二次驗證需要輸入驗證碼,而且此操作容易被GitHub風(fēng)控甚至更嚴(yán)重的會直接導(dǎo)致封禁賬號,所以此種方法不太適合使用。
GitHub提供了go-github庫,且調(diào)用API十分容易,返回的數(shù)據(jù)也十分詳細(xì),可以直接得到具體的 Repository信息,源文件內(nèi)容、倉庫地址等信息。所以本系統(tǒng)采用GitHubAPI進行搜索,在對GitHub敏感信息掃描時使用go-github庫,需要調(diào)用GitHub的SearchAPI, GitHub對于API的調(diào)用有限制速率,但是經(jīng)過GitHub Token認(rèn)證后,可以把速率提升為每小時5000次。請求的速率限制經(jīng)過GitHubToken認(rèn)證后可以提高到30次每分鐘,認(rèn)證后的請求速率和調(diào)用速率都足夠本系統(tǒng)使用。