僅因一個配置錯誤,微軟意外洩露 38TB 內部資料!

整理 | 鄭麗媛

多達 38TB 的微軟內部資料遭洩露,起因竟只是一個小小的配置錯誤?——確實如此,你沒看錯。

本週雲安全初創公司 Wiz Research 發佈了一則公告:微軟 AI 研究團隊在 GitHub 上發佈大量開源培訓資料時,意外暴露了 38TB 的額外私人資料,其中還有兩名員工工作站的磁碟備份,包括了機密資訊、私鑰、密碼和超過 30000 條內部 Microsoft Teams 訊息。

而這一切的源頭,僅是一個配置錯誤的共享訪問簽名(SAS)令牌。

38TB 內部資料遭洩露!

38TB 內部資料遭洩露!

據 Wiz 介紹,微軟這場規模龐大的資料洩露,早在 2020 年 7 月就存在了,只是在今年 6 月才被 Wiz 發現。

作為 Wiz 研究團隊工作的一部分,他們會查找雲託管資料意外暴露的情況,在網際網路上掃描配置錯誤的儲存容器。在此過程中,今年 6 月 Wiz 發現了一個屬於微軟 AI 研究部門的 GitHub 儲存庫。

這個 GitHub 儲存庫提供了用於圖像識別的開源程式碼和 AI 模型,並引導開發者前往微軟雲儲存系統 Azure Storage 的 URL,來下載相關程式碼和開源模型:

乍看之下,這個 URL 沒有任何問題,但 Wiz 卻發現:該 URL 中包含了一個訪問範圍過於寬鬆的共享訪問簽名(SAS)令牌,被錯誤配置為授予整個 Azure 儲存賬戶的許可權——也就是說,點選該連結的人不僅可以訪問開源模型,更可以共享該 Azure 儲存賬戶中的全部資料!

根據 Wiz 掃描顯示,該 Azure 儲存賬戶包含 38TB 的額外資料,其中包括微軟員工的個人電腦備份。這些備份包含敏感的個人資料,包括微軟服務的密碼、金鑰以及來自 359 名微軟員工的 30000 多條內部 Microsoft Teams 訊息。

在計算機備份中找到的一小部分敏感檔案樣本

兩名微軟員工之間經過編輯的團隊對話

兩名微軟員工之間經過編輯的團隊對話

「許可權過大」的 SAS 令牌

「許可權過大」的 SAS 令牌

說了這麼久,那 SAS 令牌到底是什麼呢?具體來說,共有 3 種類型的 SAS 令牌:賬戶 SAS、服務 SAS 和使用者授權 SAS。而此次用於微軟儲存庫中的,正是賬戶 SAS 令牌。

在 Azure 中,SAS 令牌是一個經過簽名的 URL,可授予對 Azure 儲存資料的訪問許可權,其訪問範圍和到期時間都可以由使用者自定義:

  • 許可權可以選擇「只讀」和「完全控制」,範圍可以是單個檔案、容器或整個儲存賬戶;

  • 到期時間也完全可定製,使用者可以創建永不過期的訪問令牌。

生成帳戶 SAS 令牌的過程很簡單,使用者只需配置令牌的範圍、許可權和到期日期,即可生成令牌。在後臺,瀏覽器會從 Azure 下載賬戶金鑰,並用金鑰簽署生成的令牌——整個過程在客戶端完成,既不是 Azure 發起的事件,生成的令牌也不是 Azure 對象。

但也正因如此,一旦使用者創建了一個許可權過高且還沒過期的 SAS 令牌時,管理員就很難發現。

例如,2020 年 7 月 20 日微軟 AI 開發人員首次將 SAS 令牌提交到 GitHub 儲存庫,並把許可權到期日設為 2021 年 10 月 5 日;到了 2021 年 10 月 6 日,又把 SAS 令牌到期日更新為 2051 年 10 月 6 日。

從時間上來看,微軟的這個 SAS 令牌沒什麼問題;但從許可權範圍和級別來看,其風險就很大了:不僅可以訪問儲存賬戶中的全部資料,該 SAS 令牌還被錯誤配置為「完全控制」許可權而非「只讀」許可權。

這意味著,所有人不僅可以查看儲存賬戶中的所有檔案,都能隨時刪除、替換並向其中注入惡意內容。

對於這個隱患,Wiz 聯想到了最初這個 GitHub 儲存庫的目的:提供用於圖像識別的開源程式碼和 AI 模型。Wiz 分析稱,儲存庫讓使用者從 SAS 連結下載模型資料檔案,並將其輸入腳本,該檔案格式為 ckpt,是 TensorFlow 庫生成的一種格式,它使用 Python 的 pickle 格式化器進行格式化,而這種格式化器在設計上很容易執行任意程式碼。

對此,Wiz 提出了一種假設:「也就是說,攻擊者可以將惡意程式碼注入該儲存賬戶中的所有 AI 模型,而每個信任微軟 GitHub 儲存庫的使用者都會因此受到感染。」

組織 AI 研究時,注意安全檢查和保護措施

基於這種擔憂,Wiz 在 6 月 22 日就與微軟分享了調查結果,兩天後也就是 6 月 24 日,微軟就撤銷了該 SAS 令牌。到了 7 月 7 日,微軟將新的 SAS 令牌上傳至 GitHub,並於 8 月 16 日完成了對潛在影響的內部調查。

不過值得注意的是,Wiz 指出這個儲存帳戶似乎並沒有直接暴露給公眾:「事實上,這是一個私人儲存賬戶。」

表面上看,微軟開發人員使用了一種名為「SAS 令牌」的 Azure 機制,允許創建一個可共享的連結,授予對 Azure 儲存賬戶資料的訪問許可權。但 Wiz 表示:在檢查時,該儲存賬戶看起來仍然是完全私有的。

對於這個問題,微軟安全響應中心也強調:「沒有客戶資料因此暴露,也沒有其他內部服務因這個問題而面臨風險。」微軟表示,根據 Wiz 的研究結果,它已經擴展了 GitHub 的秘密掃描服務,該服務可以監控所有公開源程式碼的更改,以防明文暴露憑證和其他機密,包括任何可能具有過度許可許可權或過期的 SAS 令牌。

儘管此次事件並未造成嚴重後果,但 Wiz 依舊認為,這件事提醒了工程師們,在組織 AI 研究時,必須充分考慮到所需的安全措施——畢竟像微軟這樣的科技巨頭,也會因為一個錯誤配置導致大規模的資料洩露:

「隨著資料科學家和工程師競相將新的 AI 解決方案投入生產,他們處理的海量資料需要額外的安全檢查和保護措施。由於許多開發團隊需要處理海量資料、與同行共享資料或在公共開源項目上合作,像微軟這樣的案例越來越難以監控和避免。」

參考連結:

https://www.wiz.io/blog/38-terabytes-of-private-data-accidentally-exposed-by-microsoft-ai-researchers#introduction-and-microsoft-findings-2

https://techcrunch.com/2023/09/18/microsoft-ai-researchers-accidentally-exposed-terabytes-of-internal-sensitive-data/

歡迎參與 CSDN 重磅發起的《2023 AI 開發者生態調查問卷》,分享您真實的使用體驗,更有精美好禮等你拿!

相關文章

Linux 核心不能進行軟體工程?

Linux 核心不能進行軟體工程?

摘要:許多人認為在Linux核心上進行軟體工程是不可能的,甚至根本就不需要軟體工程。雖然軟體架構可以通過C語言完成,但這不能滿足驅動程序的實...

ChatGPT 能拯救程式設計師嗎?

ChatGPT 能拯救程式設計師嗎?

【CSDN 編者按】這篇文章探討了軟體工程的複雜性,以及如何應對。作者認為,雖然大型語言模型(LLM)如 ChatGPT 可以減少編寫軟體時...

「僅 1 行程式碼,我們改了 6 天!」

「僅 1 行程式碼,我們改了 6 天!」

編譯 | 鄭麗媛 「這是一個真實的故事。」 是的,你沒看錯,「花 6 天時間,改 1 行程式碼」這件事是真實發生的——甚至改動的這行程式碼,...