每天成千上萬新的API或加密密鑰通過GitHub項目泄露出去。

  六個月期間掃描GitHub公共代碼庫總數中13%的數十億個文件後發現,超過100000個代碼庫泄露了API令牌和加密密鑰,每天數千個新的代碼庫在泄露新的祕密內容。

  這次掃描是北卡羅來納州立大學(NCSU)的團隊開展的一項學術研究的課題,研究結果已交給GitHub,GitHub看到調查結果後採取了行動,加快開發一項名爲令牌掃描(Token Scanning)的新安全功能,目前該功能處於測試階段。

  研究人員掃描了數十億個GitHub文件

  NCSU的這項研究是迄今爲止對GitHub最全面和最深入的掃描,超過之前的任何同類研究。

  2017年10月31日至2018年4月20日,NCSU的研究人員掃描了多個GitHub帳戶,掃描時間持續近六個月,尋找API令牌和加密密鑰等格式的文本字符串。

  他們不僅使用GitHub Search API來尋找這些文本模式,就像之前的其他研究工作一樣,還查看了谷歌的BigQuery數據庫中記錄的GitHub代碼庫快照。

  在這六個月期間,研究人員分析了無數GitHub代碼庫當中的數十億個文件。

  在上個月發表的一篇研究論文中,NCSU的三人團隊表示,他們使用GitHub Search API獲取並分析了代表681784個代碼庫的4394476個文件,以及代表谷歌的BigQuery數據庫中記錄的3374973個代碼庫的另外2312763353個文件。

  NCSU團隊掃描了11家公司的API令牌

  研究人員在這龐大的文件堆中尋找採用特定的API令牌或加密密鑰格式的文本字符串。

  由於並非所有的API令牌和加密密鑰都採用同樣的格式,因此NCSU團隊決定使用15種API令牌格式(來自屬於11家公司的15項服務,其中5家來自Alexa Top 50)和4種加密密鑰格式。

  這包括谷歌、亞馬遜、Twitter、Facebook、Mailchimp、MailGun、Stripe、Twilio、Square、Braintree和Picatic使用的API密鑰格式。

  許多流行API的密鑰有着獨特的結構,一旦泄密,將導致安全風險。

  結果立馬出來了,研究項目發現每天數千個API和加密密鑰泄露出去。

  總的來說,NCSU團隊表示他們發現了575456個API和加密密鑰,其中201642個具有獨特性,它們都散佈於100000多個GitHub項目中。

  合併數據集中的祕密內容絕大多數被單一所有者使用。

  研究團隊在學術論文中披露,使用谷歌Search API找到的“祕密內容”和通過谷歌BigQuery數據集發現的“祕密內容”也很少有重疊。

  研究人員說:“合併兩個數據集後,我們確定這兩個數據集中出現了7044個祕密內容,佔總數的3.49%。這表明我們的方法在很大程度上是互補的。”

  此外,大多數API令牌和加密密鑰(93.58%)來自單一所有者帳戶,而不是多個所有者代碼庫。

  這意味着NCSU團隊發現的絕大多數API和加密密鑰很可能是實際環境中使用的有效令牌和密鑰,因爲多個所有者的帳戶通常往往包含用於共享測試環境和開發階段代碼的測試令牌。

  泄露的API和加密密鑰停留數週

  由於研究項目是在六個月的期間內進行,研究人員還有機會觀察帳戶所有者是否以及何時認識到自己泄露了API和加密密鑰,並從代碼中刪除敏感數據。

  該團隊表示,他們跟蹤的API和加密密鑰中有6%在泄露後一小時內被刪除,這表明這些GitHub所有者立馬意識到了所犯的錯誤。

  超過12%的密鑰和令牌一天後消失,而19%的密鑰和令牌最多停留了16天。

  研究人員說:“這也意味着我們發現的祕密內容中81%沒有被刪除。這81%祕密內容的開發人員很可能不知道祕密內容被泄露,或者低估了泄露的風險。”

  短期和長期監測祕密內容

  研究團隊發現了一些重大泄露

  研究人員開始研究其中一些內容是從何處泄露時,這種掃描的重要性顯露出來。

  NCSU團隊說:“有一次,我們發現了我們認爲是美國數百萬大學申請者所依賴的一大網站的AWS登錄信息,可能是由承包商泄露的。”

  “我們還找到了一個西歐國家的主要政府機構的網站的AWS登錄信息。在這種情況下,我們能夠證實該帳戶的有效性,甚至證實提交祕密內容的特定開發商。該開發商在網上聲稱擁有近10年的開發經驗。”

  在另一個案例中,研究人員還發現了564個谷歌API密鑰,這些密鑰被一家在線網站用來規避YouTube的速率限制,並下載以後託管在另一個視頻共享門戶網站上的YouTube視頻。

  NCSU的研究人員說:“由於密鑰數量非常多,我們懷疑(但無法確認)這些密鑰可能是以欺詐手段獲得的。”

  最後但並非最不重要的是,研究人員還在OpenVPN配置文件中發現了7280個RSA密鑰。研究人員發現,通過分析這些配置文件中的其他設置,絕大多數用戶禁用了密碼身份驗證,完全依賴RSA密鑰進行身份驗證,這意味着凡是發現這些密鑰的人都可以訪問成千上萬的私密網絡。

  研究人員使用其他API令牌掃描工具分析他們自己的數據集以確定掃描系統的效率時,掃描結果的高質量也顯露無遺。

  研究團隊說:“我們的研究結果表明,TruffleHog在檢測機密內容基本上無效,因爲它的算法只檢測到我們的Search數據集中25.236%的祕密內容和BigQuery數據集中29.39%的祕密內容。”

  GitHub獲悉後忙於補救

  北卡羅來納州立大學計算機科學系助理教授Brad Reaves今天接受ZDNet的採訪時表示,他們在2018年將這項研究的結果告知了GitHub。

  Reaves說:“我們與GitHub討論了結果。對方啓動了一個內部項目,幾乎就在我們完成研究的同時,檢測並告知開發人員泄露的祕密內容。該項目於2018年10月公開承認。”

  “我們被告知GitHub在監測研究文檔中列出的祕密內容之外的更多祕密內容,但我們沒有獲得進一步的細節。”

  Reaves補充道:“由於這種類型的泄露很普遍,我們很難通知所有受影響的開發人員。我們面臨的諸多挑戰之一就是,我們根本無法獲得大批GitHub開發人員的安全聯繫信息。”

  “在我們的論文發表時,我們試圖與GitHub合作以通知開發人員,但考慮到我們的令牌掃描與GitHub的有重疊,他們覺得沒必要另外通知。”

  API密鑰泄露是已知問題

  開發人員在衆多應用程序和網站的源代碼中留下API和加密密鑰,這不是什麼新問題。亞馬遜已敦促互聯網開發人員掃描代碼,從早至2014年的公共代碼庫中刪除任何AWS密鑰,甚至發佈了一個工具來幫助他們向公共代碼庫提交任何代碼之前掃描代碼庫。

  一些公司已主動負起責任,掃描GitHub及其他代碼共享庫,查找無意中泄露的API密鑰,搶在API密鑰所有者注意到泄露或濫用之前撤銷令牌。

  NCSU開展這項研究是爲了最深入地研究這個問題。

  Reaves稱:“研究結果表明,開源軟件代碼庫中的登錄信息管理對於新手和專家來說仍然具有挑戰性。”

相关文章