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