日前,疑似
“陜西普通話成績查詢網(wǎng)(sxpth.cn)”由于網(wǎng)站的程序員把所有考生信息(包括照片、身份證、準考證號、院校等)通過硬編碼的方式直接寫進了網(wǎng)頁源代碼里,導致大量考生信息泄漏。


該網(wǎng)站在之后被查明是一個假冒官方的網(wǎng)站。不過這種 “Serverless無服務(wù)器”的架構(gòu)方式受到了程序員的群嘲,也引起了大眾對于個人數(shù)據(jù)泄漏的擔心。
雖然以上這種低級的錯誤,相信絕大多數(shù)稍有水平的程序員都不會犯。然而,目前確實還存在著很多由于開發(fā)者數(shù)據(jù)安全意識不強造成的數(shù)據(jù)泄漏,其中最明顯例子的就是在GitHub上。
今年4月22日嗶哩嗶哩源代碼G


今年4月22日嗶哩嗶哩源代碼GitHub泄漏門估計大家都還記憶猶新,更久遠一些的Uber 5700萬司機與乘客數(shù)據(jù)泄漏,估計大家也還有印象,但是如果你以為GitHub上只會由于程序員的不小心偶爾泄漏某些大公司的源代碼或者數(shù)據(jù),那你就大錯特錯了。
為了讓大家了解由于開發(fā)者的數(shù)據(jù)安全意識不強(很多時候是無意的)而導致的在GitHub平臺上的數(shù)據(jù)泄漏,我們對此進行了一番研究,得出的結(jié)果可謂是觸目驚心:你的身份證、住址、電話等個人信息,郵箱賬號、密碼、銀行卡號等敏感信息,個人或企業(yè)的數(shù)據(jù)庫,可能都在GitHub上以公開信息的形式裸奔。
一、什么是GitHub
GitHub是目前最大的軟件源代碼托管平臺,類似于代碼的云倉庫。簡單來說,假如開發(fā)者小A開發(fā)了一款坦克大戰(zhàn)的游戲,他可以通過GitHub把這款游戲的源代碼開源出來,供全世界的開發(fā)者參考和學習。
當然,為了這款游戲更完善,全世界的開發(fā)者也可以通過GitHub提出自己的修改版本,大家一起完善這款游戲。GitHub由于本身具備代碼開源共享的屬性,吸引了超過四千萬的用戶,保存了超過1億個代碼存放的倉庫。
代碼開源共享促進了開發(fā)者的學習和交流,也成為了開發(fā)者的一大主流價值觀。大家越來越愿意把自己寫好的代碼文件提交到GitHub上供其他人參考和學習,然而在提交的過程中,很可能就無意識地把一些代碼中的敏感信息和文件一并共享了出來。
二、個人郵箱賬號密碼泄漏
開發(fā)者不小心共享出來的東西有哪些呢?最常見的就是各種賬號和密碼,特別是通過硬編碼方式寫入代碼文件里面的個人郵箱賬號密碼。這些提交到GitHub平臺共享出來的賬號密碼,任何人通過關(guān)鍵字搜索都可以獲取到,相當于直接公開。
我們在GitHub通過關(guān)鍵字搜索發(fā)現(xiàn),包含網(wǎng)易、QQ、新浪、Gmail、Outlook、Hotmail、Yahoo等各種郵箱的賬號和密碼在GitHub平臺上都存在公開泄漏。以下是通過關(guān)鍵字搜索得出的各主流郵箱賬號和密碼存在于代碼文件中的數(shù)量:
可見單單Gmail就存在1350.9萬個,當然這1350.9萬個結(jié)果當中,有些只是代碼文件中包含了關(guān)鍵字,有些賬號對應(yīng)的密碼已被安全意識較強的開發(fā)者提交GitHub前就刪除掉了。但是如果只按5%的賬號密碼有效比率來估計的話,這里面列出來的郵箱中,就存在139萬個郵箱的賬號密碼存在公開泄漏。
三、個人簡歷信息泄漏
程序員都比較喜歡鼓搗屬于自己的個人網(wǎng)站,在這些個人網(wǎng)站里面通常會放上自己的介紹或者簡歷,以便獲取更好的機會。同時,他們之中有些人也比較喜歡把自己的建站代碼開源到GitHub上。這樣一來,在GitHub搜索跟“簡歷(resume)”相關(guān)的關(guān)鍵詞時,無數(shù)份程序員的簡歷數(shù)據(jù)就出來了。
這些簡歷里面,不但包含了個人的姓名、電話、微信號、郵箱,還包括生日、學歷、畢業(yè)院校、工作經(jīng)歷、所在城市等。雖然很多人覺得自己的這些信息被人看到的幾率也不高,但是如果被有心人士批量獲取下來的話,那么下回接到能夠準確說出你姓名、生日和經(jīng)歷等對你個人信息了如指掌的推銷電話的時候,就不要太驚訝了。
四、身份證號、家庭住址等個人信息泄漏
看到這里你可能會想:前面兩項的泄漏都集中在一些程序員的身上,可能跟我們關(guān)系并不大呀??凸偾衣?,請往下看。
在提倡網(wǎng)絡(luò)實名制的今天,有些網(wǎng)站注冊的時候動不動就要填自己的身份證號碼進行實名認證。但是,一些網(wǎng)站對于個人信息的保護卻做得不怎么好。當我們使用跟“身份證”相關(guān)的關(guān)鍵字進行GitHub搜索的時候,結(jié)果出現(xiàn)了大量包含姓名、身份證號、家庭住址等個人信息的數(shù)據(jù)表。這些個人信息明顯是需要被嚴格加密保護的,卻被分享到了公開的平臺上。
類似于以上的這些被開源共享出來的個人信息數(shù)據(jù)數(shù)不勝數(shù)。有些數(shù)據(jù)表除了個人信息之外,通常還包括了更多與個人有關(guān)的詳細信息。在我們使用關(guān)鍵字進行搜索期間,在這些開源文件中還意外發(fā)現(xiàn)大連市某知名企業(yè)董事長及高管的身份證、住址等個人信息都被公開了。
我們再往深處想一下,這些涉及個人身份證、家庭住址等敏感信息的數(shù)據(jù)會被開源到GitHub公開出來,如果數(shù)據(jù)持有方是企業(yè)的話,說明有些企業(yè)對個人信息數(shù)據(jù)嚴重缺乏管理和保護機制,如果數(shù)據(jù)持有方是個人的話,拋開數(shù)據(jù)安全保護意識不說,這些個人數(shù)據(jù)來源于哪里,也是一個大問題。
再從另一方面看,這些能被不小心開源到GitHub的個人信息數(shù)據(jù)其實只是個人信息數(shù)據(jù)中的冰山一角,可以想象這背后的冰山有多大。可能你我提交的個人信息,早就在互聯(lián)網(wǎng)上被轉(zhuǎn)手、交易、裸奔好多回了。
五、卡號和密碼泄漏
以上都是關(guān)乎個人信息的,可能你會“破罐子破摔”地覺得已經(jīng)沒什么所謂了,反正自己的個人信息早就已經(jīng)在裸奔了,又不涉及具體的利益??凸偾衣?,請往下看。
在我們使用跟“卡號”相關(guān)的關(guān)鍵詞進行GitHub搜索的時候,得出了大量的卡號以及對應(yīng)的密碼搜索結(jié)果。這里面的卡包括各種購物卡、禮品卡、充值卡、各種平臺的會員卡等。里面甚至出現(xiàn)了銀行卡卡號和密碼,而且密碼竟然幾乎都是明文密碼!
六、API秘鑰、云服務(wù)器、云數(shù)據(jù)庫泄漏
當然,2019年的數(shù)據(jù)泄漏,裸奔的不只是你的個人信息,還有各種API秘鑰、個人和企業(yè)的云服務(wù)器秘鑰、個人和企業(yè)的云數(shù)據(jù)庫地址和密碼。
API秘鑰泄漏的話,可能被別有用心的人竊用,導致高額的服務(wù)費。云服務(wù)器、云數(shù)據(jù)庫泄漏的話,可能被別人非法登錄,輕則被獲取到云服務(wù)器、云數(shù)據(jù)庫里存儲的個人或企業(yè)的全部數(shù)據(jù),重則被惡意刪庫。有時候真的不是黑客太狡猾,而是開發(fā)者太大意了。
為了弄清楚開發(fā)者開源到GitHub上的各種秘鑰泄漏有多嚴重,來自美國北卡羅萊納州立大學的一個團隊進行了深入的研究,他們使用近六個月的時間(2017年10月31日至2018年4月20日)掃描了GitHub上13%的代碼庫,總共包含數(shù)10億個代碼文件,發(fā)現(xiàn)超過10萬個代碼庫泄漏了秘鑰,每天有數(shù)千個新的秘鑰在泄漏。[1]
這些秘鑰,來自于Twitter、Facebook、亞馬遜、谷歌、YouTube、PayPal等等主流的平臺。研究顯示,6%的秘鑰在上傳到GitHub后一小時之內(nèi)被刪除掉,說明只有6%的開發(fā)者馬上意識到了這個問題并采取了措施。在上傳到GitHub 1天之內(nèi),只有12%的秘鑰被刪除掉,16天之內(nèi),只有19%的秘鑰被刪除掉,這說明1天之內(nèi)沒有刪除掉的秘鑰,基本上都會在GitHub上長期存在,長期公開泄漏。
這說明,絕大部分提交秘鑰到GitHub的開發(fā)者是并不知道、事后也沒有意識到自己把秘鑰通過這種方式公開了的。
該研究還把這些秘鑰所在的文件拓展名進行了分類,看這些秘鑰都藏在哪些類型的文件里。結(jié)果表明,超過50%的秘鑰都藏在專門用于儲存秘鑰或者憑證的文件里(如拓展名為。key的文件),接近30%的秘鑰嵌在源代碼文件里(如拓展名為。py的文件),約8%在數(shù)據(jù)表里(如拓展名為。csv的文件),約2%在配置文件里(如拓展名為。conf的文件)。
這說明,大部分的秘鑰泄漏的原因是把秘鑰直接寫死在源代碼里面。莫非真的應(yīng)了那句話:最危險的地方就是最安全的地方?
該研究還通過假設(shè)檢驗的方法證明,把秘鑰提交到GitHub這種泄密方法,跟開發(fā)者自身的經(jīng)驗、GitHub使用時長并無太大關(guān)系。也就是說,這是一個新手、老手都可能犯的錯誤。
由于該研究涉及的主要是美國的企業(yè),那么中國企業(yè)的云服務(wù)器、云數(shù)據(jù)庫等,是否也被無意中公開泄漏了呢?我們在GitHub通過關(guān)鍵字檢索發(fā)現(xiàn),這一情況在我國有過之而無不及,包括阿里云、騰訊云、百度云在內(nèi)的國內(nèi)主要云服務(wù)提供商,其提供給個人或者其它企業(yè)使用的云服務(wù)器、云數(shù)據(jù)庫都存在公開泄漏。
要知道,這些公開了主機、端口號、用戶名及密碼的云數(shù)據(jù)庫,任何人利用這些信息都是可以連接上的,跟裸奔沒有區(qū)別。一旦被別有用心的人獲取到,數(shù)據(jù)庫里面存儲的包含企業(yè)、客戶、用戶信息的所有數(shù)據(jù)表、所有詳細的經(jīng)營數(shù)據(jù)都會處于危險之中。
這些云數(shù)據(jù)庫在GitHub上的數(shù)量可能有多少呢?以MySQL云數(shù)據(jù)庫為例子,我們通過關(guān)鍵字搜索了阿里云、騰訊云、百度云潛在泄漏的MySQL云數(shù)據(jù)庫數(shù)量:
最多的是阿里云,存在31128個潛在泄漏的MySQL云數(shù)據(jù)庫。如果按照5%的有效比率保守估計的話,都存在超過1678個個人或者企業(yè)的MySQL云數(shù)據(jù)庫存在泄漏!
七、現(xiàn)在能怎么辦呢?
看完以上的情況,真是讓人不寒而栗。2019年的數(shù)據(jù)泄漏,個人數(shù)據(jù)、企業(yè)數(shù)據(jù)都在裸奔,而企業(yè)數(shù)據(jù)里面又可能包含大量的個人數(shù)據(jù)。那現(xiàn)在能怎么辦呢?
Alfred看來,這事兒必須從政府加強數(shù)據(jù)保護立法、企業(yè)加強數(shù)據(jù)保護制度建設(shè)、開發(fā)者加強數(shù)據(jù)安全意識培訓、GitHub平臺加強提交前敏感信息檢測提醒四方面著手。
加強數(shù)據(jù)保護立法,是從根源上解決數(shù)據(jù)保護問題的方法。歐盟2018年5月生效的GDPR(《通用數(shù)據(jù)保護條例》)是一個很好的例子。我國最近頒布的《密碼法》也是一個很好的開端。
企業(yè)方面需要加強數(shù)據(jù)保護制度建設(shè),明確數(shù)據(jù)的獲取、操作、管理流程和相關(guān)權(quán)限,對開發(fā)者做好數(shù)據(jù)安全意識培訓。畢竟一項由IBM Security發(fā)起的Ponemon研究所2019年7月公布的第7次資料外泄的調(diào)查報告顯示,數(shù)據(jù)外泄近50%來自內(nèi)部。[2]
那么對于普通人而言呢?這篇文章警示著大家要好好保護好自己的個人信息,別用個人信息換取一時的方便。
八、聲明
本文所引用的所有數(shù)據(jù)或例子,均為GitHub上已公開的數(shù)據(jù)。為了防止數(shù)據(jù)進一步泄漏,我們把所有敏感的信息都打上了馬賽克。Alfred數(shù)據(jù)室并未獲取和使用這些密碼、秘鑰,并且已盡可能通知相關(guān)代碼倉庫的上傳者。
引用
[1] Michael Meli, et al。 How Bad Can It Git? Characterizing Secret Leakage in Public GitHub Repositories。 Network and Distributed Systems Security (NDSS) Symposium, 2019。
[2] Ponemon Institute。 Cost of a Data Breach Report 2019.IBM Security, 2019。
文章轉(zhuǎn)載自新浪新聞
文章轉(zhuǎn)載自新浪新聞
常山圖庫
新聞排行榜
