他直接了當地說,對於再次經歷 MSRC 的流程已經「毫無興趣」。那一次更早的漏洞,最初是回報給 GitHub 的 HackerOne 賞金計畫,結果對方明確告訴他這「不在範圍內」,要他去找 MSRC —— 就這樣在官僚流程中被踢來踢去,最後既沒得到補償,也未被承認
。
這項攻擊精巧地串連了三個漏洞機制,形成一個能繞過 github.dev 所有安全邊界的完整攻擊鏈。
VS Code 裡面的 Webview —— 也就是用來顯示 Jupyter Notebook、Markdown 預覽等內容的隔離沙箱 —— 本來應該是安全獨立的區塊。然而,為了讓鍵盤快捷鍵在 Webview 裡面也能運作,VS Code 會把沙箱內的鍵盤事件轉發到主編輯器程序中 。
攻擊者儲存庫中埋藏了一個惡意的 Jupyter Notebook。這個 Notebook 裡的腳本會在沙箱化的 Webview 中送出偽造的鍵盤事件(例如 Ctrl+Shift+A、Ctrl+F1),這些事件會直接被傳遞到 VS Code 的主視窗 。這些按鍵會悄悄觸發「安裝擴充功能」的指令,並且繞過那個原本會阻擋未信任發行者擴充功能的驗證對話框
。
攻擊者的儲存庫裡已經事先放好了一個預先打包的 VS Code 擴充功能,存放在 .vscode/extensions 這個資料夾中。因為 github.dev 會把「跟工作區一起提供的擴充功能」視為隱性信任,所以這個惡意功能就會在完全沒有任何使用者許可提示的狀態下自動安裝 。
惡意功能一旦啟動,就能夠取得 github.dev 執行環境的完整存取權。在這個環境中,正好保存著一個 GitHub OAuth 權杖 —— 當使用者透過 github.dev 打開任何儲存庫時,github.com 會在背後以 POST 方式把這個權杖傳給 github.dev。最關鍵的問題在於,這個權杖並非只限定於當前打開的儲存庫,而是帶著使用者所擁有的完整存取權限 。擴充功能會取出這個權杖,向 GitHub API 查詢受害者所有的私人儲存庫清單,然後把權杖和儲存庫的相關資料一起傳送給攻擊者
。
到了 6 月 3 日,微軟陸續推出伺服器端的修正,包括在開啟僅瀏覽器執行的 Notebook 時加入信任確認步驟,以及封鎖擴充功能安裝指令,使其不再接受任意的呼叫者資訊 。到了 6 月 4 日,又再部署了額外的 Webview 事件處理限制
。
這個攻擊鏈特別值得關注的原因有三。
第一,攻擊面就只是一個網址。受害者不需要下載檔案、不需要打開終端機、也不需要同意任何權限要求。一個通往 github.dev 的瀏覽器連結,就是攻擊的唯一先決條件。
第二,權杖的授權範圍極度廣泛。github.com 傳遞給 github.dev 的那個 OAuth 權杖,並不會被限制在「只能存取當前瀏覽的儲存庫」。它帶的是使用者擁有的完整 GitHub 權限。這意味著,一個攻擊者如果成功破解了一位正在參與公開開源專案的開發者,他也同時取得了那位開發者「公司內部私人儲存庫」的權杖 。
第三,工作區信任被逆轉為攻擊武器。那個讓本地開發更順暢的功能 —— 也就是自動信任專案內附帶的擴充功能 —— 反而成為了讓惡意酬載自動執行的完美機制。
在 Askar 發布 VS Code 漏洞的同一時間,研究人員也揭露了 OpenClaw AI 代理框架中的五個零日漏洞。這些漏洞讓攻擊者能夠冒充允許清單中的使用者,在 Telegram、Slack、Discord、WhatsApp 等多種通訊平台上劫持受信任 AI 代理的存取權 。
根本原因出自架構設計:OpenClaw 支援了 15 種不同的渠道轉接器(Adapter),而每個轉接器都各自獨立實作自己的允許清單授權與 Webhook 驗證機制 。其中做為安全關鍵、用來進行允許清單比對的身分欄位 —— 像是人類可讀的顯示名稱 —— 在平台層級上是可被修改的,而且這些欄位在不同轉接器之間被解析成穩定使用者 ID 的方式也並不一致
。
正因為缺乏一個集中式的政策執行層,攻擊者就可以做到以下這些事:
一份於 2026 年 6 月 3 日發布在 arXiv 上的安全分析報告指出,漏洞橫跨了多個架構層級(包含執行策略、閘道、渠道、沙箱、瀏覽器、外掛、以及提示詞),其中最顯著的結構性模式是以「每一層級、每個呼叫點各自實施的信任執行」來取代統一的政策邊界 。該分析發現,這些離散的架構弱點可以層層組合,最終形成一條不需要身分驗證的遠端程式碼執行(RCE)路徑
。
Comments
0 comments