跳到正文
Vercel Blog(vercel.com)· Andy Riancho·· 17 小時前精選AI 評分76

Vercel Sandbox 100萬美元安全挑戰揭示多項漏洞

Findings from the $1M Vercel Sandbox challenge

AI 導讀

Vercel 在八月發起了價值 100 萬美元的 Sandbox 安全挑戰,吸引 1,285 報告,並發現多項安全缺陷。

  • 報告數量:1,285 報告,其中 57 有效、32 具資訊性,1 個關鍵、5 個高階、9 個中級、42 個低階。
推薦理由

此次 $1M Sandbox 挑戰揭示多項安全缺陷,說明雲端隔離層的脆弱性與修補優先度,對雲端安全實務具有重要參考價值。

正文 · AI 翻譯

八月,我們推出了 $1M Vercel Sandbox 駭客挑戰,邀請安全研究人員嘗試逃離 Vercel Sandbox。我們也與網路安全專家 Trail of Bits 合作審查原始碼與安全架構。

以下是挑戰摘要:

  • 兩週內共收到 1,285 報告

  • $242,000 的懸賞金已支付

  • 發現一個 Linux 核心零日漏洞

沒有報告顯示有人存取 Vercel Sandbox 中的客戶資料。最嚴重的發現是上游 Linux 核心的缺陷。

核心零日漏洞

該計畫最重要的報告於第三天提交。

Paulos Yibelo (pwn.ai),一名從標準沙盒、無特殊存取許可權的 HackerOne 研究人員,發現 Linux 核心網路堆疊中的缺陷。Paulos 發現,從 microVM 內部傳送的特製封包可啟動三種不同攻擊:

  1. 透過網路洩漏主機記憶體

  2. 使主機機器崩潰

  3. 在主機上執行程式碼

洩漏主機記憶體

在第一種攻擊中,主機(你的沙盒與其他租戶共用的機器)的記憶體會出現在使用者機器傳送到網際網路的封包中。只要使用者機器持續傳送,這種情形就會持續發生。

此攻擊已在 Vercel 產品沙盒上演示。

使主機崩潰並在主機上執行程式碼

研究人員還發現,透過傳送特定封包,他們能夠攻破主機。

首先,透過傳送兩個封包,研究人員使主機機器崩潰,導致其上所有沙盒停止運作。其次,利用同一缺陷,他們能以完整管理員許可權在主機上執行指令,突破沙盒的隔離邊界。

這些與封包相關的崩潰與程式碼執行攻擊,在研究人員自己的 KVM 與 Firecracker 機器上演示,該機器配置符合 Vercel Sandbox。

負責任地披露核心漏洞

幾乎所有主要雲端供應商都在 Linux 核心的同一層隔離客戶工作負載,因此任何缺陷都構成共享基礎設施風險。

收到通知後,我們立即與研究人員合作,瞭解並緩解此漏洞,並與 AWS 及其他產業夥伴協作優先修復,確保 Vercel 客戶及其他使用此核心的開發者安全。

研究人員亦聯絡核心維護者並協同建立候選修補程式。修補方案正在私下審查中,CVE 尚待公佈,因此在修補程式公開前,我們不會發布額外細節。我們公佈此漏洞的存在,因其已於公開渠道另行披露。

我們對 Vercel Sandbox 的壓力測試方法

HackerOne 挑戰向任何研究人員提供懸賞金,但我們亦擴充計畫,包含內部評估與獨立調查。

在啟動公開懸賞前,我們以完整原始碼存取權與 Vercel Sandbox 開發與維護工程師的協助,進行即時安全評估。亦邀請 Trail of Bits,派遣兩名工程師評估我們的安全架構。

並非所有發現皆來自外部。Vercel 內部實習生 Marcos Hernanz 在 Linux device‑mapper 儲存層發現跨租戶資料洩漏。此漏洞允許任何沙盒讀取先前已刪除沙盒的回收磁碟區塊。

白盒深度調查

Trail of Bits 在我們的原始碼內部投入了四個工程師週的時間,擁有完整的倉庫存取許可權以及兩支企業測試團隊。他們交付了 20 項發現,且每項都已被測試、確認,並對應到精確的程式碼。

他們亦進行了架構審查,並結論我們的虛擬化邊界是安全的。每個沙盒都在自己的 Firecracker microVM 上執行,擁有獨立的客戶端核心,裝置模型亦被刻意設計得極小。沒有任何客戶端共用執行中的核心與主機或其他租戶。

在此基礎之上,他們提供了三項結構性建議,我們已經落實:

  • 尋找並消除對客戶端的所有信任。 我們的控制平面接受來自 microVM 內部軟體回傳的值,且每一項值都是租戶輸入。任何跨越邊界的資料都應在伺服器端衍生,或以客戶端無法存取的金鑰簽署。

  • 單一政策,單一決策者。 出站執行被拆分到多個子系統,每個子系統獨立解析相同的網路政策,且並不總是達成共識。我們現在為每種資料型別使用一個標準化程式,為每項決策使用一個元件,並在政策變更時重新驗證連線。

  • 假設下一個零日漏洞。 我們加強了每個沙盒的保護,以限制攻擊者利用虛擬化軟體時造成的損害。我們保持主機核心為最新版本,已停用巢狀虛擬化,並使用 Firecracker 的 jailer 以受限許可權執行每個 microVM 程式,將其與主機其餘部分隔離。

Vercel Sandbox 發現

我們在兩週內收到 1,285 報告。這樣的數量只有研究人員以 AI 速度進行搜尋才有可能。

以下為各類別報告的分佈:

  • 877 個重複報告

  • 319 個不適用

  • 57 個有效

  • 32 個資訊性

在報告篩選中,我們已驗證:

  • 1 個關鍵發現

  • 5 個高危發現

  • 9 個中等發現

  • 42 個低危發現

  • 32 個資訊性發現

我們已支付 $242,000 的漏洞賞金。

中等、低危及資訊性發現都是小型政策邊界缺口,例如防火牆規則行為與檔案不符,或某欄位對客戶端的信任度過高。

最嚴重的發現是 Linux 核心零日漏洞,且沒有報告顯示有人讀取客戶檔案、機密或應用程式資料。

我們最印象深刻的是報告的多樣性。顯而易見,研究人員使用不同的設定並有不同的偏好。有些人明顯熟悉 Linux 名稱空間,並將其代理直接對準核心邊界;其他人則攻擊網路政策,還有許多人攻擊我們未曾考慮列入清單的區域。

這種多樣性正是你透過公開挑戰所資助的成果。以下是一項較有趣的發現。

跨租戶磁碟快照還原(有限制)

此報告於挑戰第一天提交,是我們最喜愛的範例,說明即使在內部評估與白盒交付後,我們仍舊舉辦公開漏洞賞金。

當你對沙盒進行快照時,控制平面必須記錄快照資料落點:{storage_url, size, checksum}。研究人員發現的缺陷細微之處在於,該答案來自於客戶端內部執行的軟體,而主機上的服務則信任它。這即為信任邊界違規。客戶端是我們的客戶(以及駭客)執行非受信任程式碼的地方,主機永遠不能將其作為權威。

研究人員將已知、已檔案化的容器逃逸原始方法與此信任缺陷結合。他們在自己的沙盒內攔截快照回應並重新寫入,交換了兩個屬於各自擁有的不同帳戶的兩個快照的儲存物件。這意味著還原 \"your\" 快照實際上會產生另一個帳戶的整個檔案系統。

研究人員證明每個帳戶都能讀取並修改對方的檔案,並使用雜湊驗證結果,同時保留測試資源,以便我們能獨立重現發現。

此攻擊的限制很重要。將交換目標對準特定受害者需要知道該受害者內部快照儲存金鑰,這是平臺為每個快照隨機產生的 96 位元識別碼,且永不透過 API 顯示。該金鑰唯一齣現在受害者自己的沙盒內。研究人員擁有兩個帳戶,這使得證明成為可能;並未展示陌生人能針對另一租戶的路徑。我們仍將其視為優先修正,因為依賴秘密保持秘密的邊界並非真正的邊界。

Trail of Bits 在其評估中獨立指出相同的根本原因,這讓我們知道此發現是真實、重要且可從兩個完全不同的角度發現。

修正於一週內推出,控制平面現在將每個快照物件繫結到其建立的專案並拒絕其他任何物件。快照建立已從可被客戶端存取的環境移至主機端服務,且儲存路徑以專案為範圍,使用嚴格驗證的 URL。

感謝研究社群

我們想感謝每位提交報告的研究人員,無論其發現是零日漏洞還是重複報告。挑戰中發現的每項技術都告訴我們如何保護在 Vercel Sandbox 上執行的工作負載。

也感謝 Trail of Bits 的全面內部調查與指導。

閱讀 原始挑戰公告,並在 檔案 中瞭解更多關於 Vercel Sandbox 的資訊。

閱讀更多

來源: Vercel Blog (vercel.com)
開啟原文