800 萬 GitHub 的用戶信息是如何從 GeekedIn 的 MongoDB 中泄露的

DorSchleini 8年前發布 | 38K 次閱讀 MongoDB 安全相關 Github

首先,我們在文章的開篇對此事做一個清晰的說明:該事件并不代表GitHub的任何安全漏洞,僅僅是由于其他服務對GitHub網站數據的不恰當的抓取,無意中暴露出另一個服務的漏洞。我的數據,也可能是你的數據,如果你處在軟件行業中,以及數百萬人的數據被泄露。

星期六,在數據交易場景中彈出了一個字符,并給我發送一個名為geekedin.net_mirror_20160815.7z,大小為594M的文件。該文件貌似是一個我以前沒聽說過的網站——GeekedIn——從8月份到現在的一個MongoDB的備份文件。界面顯示如下:

稍微檢索一下,可以看到他們的總部位于巴塞羅那,是一個服務于開發者和雇傭者的專業技術平臺。進一步檢索,發現他們在波蘭運行了兩臺MongoDB實例:

第二個IP地址是網站本身正在運行的IP地址,所有的點表示開始加入。直到我發現自己的數據,我才意識到發生了什么。這是我發現的信息:

{
    "_id": "5cb692d1-8fd5-44d7-8639-e680fb2b30f41454836589580",
    "_class": "com.geekedin.domain.entities.mongo.EDeveloper",
    "scores": [],
    "libraryScores": [],
    "compactLibraries": [],
    "name": "Troy Hunt",
    "email": "troyhunt@hotmail.com",
    "location": "Sydney",
    "country": "AU",
    "city": "0fab4eb2-c5d5-459d-a7c5-c50b845c12da1448621413411",
    "score": 0,
    "scanCompleted": false,
    "socialNetworks": [
        {
            "_id": "https://github.com/troyhunt",
            "socialNetwork": "other",
            "url": "https://github.com/troyhunt"
        },
        {
            "_id": "troyhunt",
            "socialNetwork": "github",
            "url": "https://github.com/troyhunt"
        },
        {
            "_id": "http://troyhunt.com",
            "socialNetwork": "other",
            "url": "http://troyhunt.com"
        }
    ],
    "locationPoint": {
        "x": 151.20732,
        "y": -33.86785
    },
    "yearsOfExperience": 0,
    "otherLocations": [],
    "extraEmails": [],
    "locateTryFailed": false,
    "locateTried": true,
    "beingLocated": false,
    "remoteLocateTried": true,
    "blogFindTried": false,
    "contactIsPossible": true,
    "freelancer": false,
    "compactLibrariesComputed": false,
    "compactLibrariesBeingComputed": false,
    "followersFound": false,
    "emailAddresses": [
        {
            "email": "troyhunt@hotmail.com",
            "type": "primary"
        }
    ]
}

下面是GitHub的引用。當我查看我GitHub的個人資料時,我確實有暴露了我的電子郵件地址以及位置。但我的個人資料實際上是相當稀疏的,像這樣:

{
    "technology": "06405e50-a3b3-471d-a50d-17fc2cb4a9181448621393946",
    "library": "56623985e4b0cab0586c4d09",
    "score": 0,
    "lastCompute": {
        "sec": 1449279293,
        "usec": 262000
    },
    "endorsements": 0,
    "version": "0.3-SNAPSHOT"
},
{
    "technology": "06405e50-a3b3-471d-a50d-17fc2cb4a9181448621393946",
    "library": "56623e9ae4b0cab0586cb344",
    "score": 0,
    "lastCompute": {
        "sec": 1449279293,
        "usec": 262000
    },
    "endorsements": 0,
    "version": "0.1"
},
{
    "technology": "06405e50-a3b3-471d-a50d-17fc2cb4a9181448621393946",
    "library": "56623ab1e4b0cab0586c64ab",
    "score": 0,
    "lastCompute": {
        "sec": 1449279293,
        "usec": 262000
    },
    "endorsements": 0,
    "version": "1.0.0"
},
{
    "technology": "06405e50-a3b3-471d-a50d-17fc2cb4a9181448621393946",
    "library": "56623ee2e4b0cab0586cb624",
    "score": 0,
    "lastCompute": {
        "sec": 1449279293,
        "usec": 262000
    },
    "endorsements": 0,
    "version": "0.2"
}...

 

這個只是整個資料文件的一個小的快照,最終的文件要比我之前展示的要大好幾百倍。上述數據存儲在一個叫“scores”的集合中,顯然,這是用戶技術使用資料中的一部分。在這里,我不再深入更多的細節,因為我將告訴你如何快速的獲取數據,這樣你就能看到第一手數據的內容。另一個我不想深入更多細節的原因是雖然這是從GitHub公開的用戶資料獲取的數據,但我覺得像這樣把用戶資料聚齊起來是不對的。我不知道GitHub是否有暴露大批量獲取這些公開資料的方式(例如,通過API),但是坦白的說,我開始聞到一點壞的味道了...

在我開始談論該泄露事件之前,還有最后一件事:當我分析該數據集,發現了近820萬個不同的電子郵件地址。這也是我所預期的GitHub上的賬戶數,但是有點奇怪的事情是有710萬個郵件地址是以".xyzp.wzf"結尾的。當我更深入的對其進行分析時,我意識到這是GitHub賬戶未對外公開的電子郵件地址。例如,我的同事Niall Merrigan個人資料沒有郵件地址,所以在數據集中他的郵件地址用 niallmerrigan@github.xyzp.wzf 表示。在該數據集中還有15000個@bitbucket.xyzp.wzf地址,雖然這部分地址占的百分比很小,但是很明顯,它們是從多個數據源中獲取的。

繼續,鑒于我目所看到的數據,我決定直接聯系GitHub,畢竟這些數據與他們有關,即使這些數據是從另一個服務泄露出來的。GitHub在處理安全事件方面有很好的跟蹤記錄,這不僅僅是他們有很豐富的經驗,而是在他們處理這些問題的方式。例如2013年的40000個獨立IP的暴力攻擊以及(非常具有創造力)對中國Great Firewall(國家防火墻)的攻擊。幾個小時后,我與他們的一個聯系人取得了聯系,我首先建議他們考慮GeekedIn的做法是否是可接受的?其次,對于該事件,他們是否需要做任何的溝通。我關心的是,這里有一份巨大的“GitHub數據”(加上引號是因為雖然該數據是GitHub的,但是卻不是來自于GitHub),我不想弄錯數據的來源。特別是,如果該數據在交易者之間流通,那么只要有機會,就有人跳出來說:“嗨,我有GitHub泄露的數據”。

我們最終采取的方式是GitHub和我都直接到單獨與GeekedIn聯系。不過這有點困難。因為他們的網站上的推ter帳戶看起來是死的,網站上的聯絡單似乎也沒有反應。我試圖通過推ter找到一個聯系人,但是沒起到任何作用,除了指向他們的網站的詳細信息和antiliasoft.com網站的版權,其他都從谷歌返回404。 最后,我在同一個域名下找到了一個電子郵件地址,并且在昨天得到了回應,他們承認了該事件并承諾會保護數據。

我咨詢GitHub,我是否可以在這篇文章分享該事件的某些東西,他們給我的反饋如下:

第三方經常會出于各種原因(例如研究或歸檔)抓取GitHub公開的數據。我們允許這種類型的抓取,只要是他們使用用戶的個人信息僅限于與GitHub提供信息的相同目的。但是出于商業目的的信息抓取則違反了我們的隱私聲明,我們不允許這種類型的使用。

所以很明顯,這是不對的:

由于在某些數據中公開了自己的信息,但是我還是不希望我的數據以這種方式銷售。再次說明,是的,你可以公開的獲取每個人的基本信息,但是,從我的親朋好友的一致反饋都是:共享這些信息“感覺是不對的”。這是錯誤的,不僅僅是商業化了我們信息,還包括這種不需要密碼,就直接通過MongoDB將數據漂浮在數據商業圈中行為。到目前為止,這些數據可以HIBP中檢索到。不過這次我做了一點小小的改動,這使得原始的數據變得可用。現在,我想謹慎處理這件事,因為這不是我通常做的事情,也不是我希望很快再做這樣的事情。通常情況下,我們無法將源數據直接加載到HIBP中,我已經口頭批評任何服務,因為這違反了服務本身。特別是,任何存儲純文本憑證都是非常魯莽的,不幸的是,有很多服務都是這么做的。

這里有兩方面的區別:首先,這是公開暴露的數據。它不應該被聚集在一個大文件中,更不應被泄露,但是,它是一個基于個人的數據,你可以在任何人的GigHub個人資料中查詢到數據。第二,該事件的大部分觀眾都理解什么是一個大的JSON集合,也知道如何解釋它。這些都是技術人員——像我一樣的人——基于大括號的集合和JSON語法是他們經常說的語言。

還有第三個原因,對我來說,這是一個探索性的練習。我經常聽到人們發現自己的信息泄露后,他們想知道什么信息被暴露了。我得到這個 - 他們想知道任何擁該數據的人知道什么 - 但它不是對我所做上面的事情的解釋。 這是一個機會,沒有涉及到敏感數據,其他人與我的風險是一致的。 我真的很好奇,想知道這方面的反饋,以及它對人們的(如果有的話)價值。

大警告時間:您只能看到自己的數據,并且只有電子郵件地址被轉儲。我知道,我們已經確定它是面向公眾的數據,但我仍然想限制它的數據所有者是我自己。我這樣做的方法是使用HIBP的現有通知服務,它已經有一種驗證電子郵件地址的方法。 它的工作過程是這樣的:

1、 跳轉到haveibeenpwned.com/NotifyMe

2、 點擊電子郵件中的鏈接以驗證您的地址

3、 最后一步會給我或數百萬人中的任何一個實際電子郵件地址泄漏人,顯示了一個類似這樣的頁面:

當我切換到“顯示geekedin原始數據”時,我獲取到如下記錄:

就是這樣!再次聲明,如果您的電子郵件地址已成功從GitHub提取,您就會在這里顯示,我希望這對數百萬從未預期自己信息會暴露在某些地方的用戶是有用的。

 

 

來自:http://www.jointforce.com/jfperiodical/article/3753

 

 本文由用戶 DorSchleini 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!