🌐 This article hasn't been translated yet — showing the Japanese version.
github.dev の「クリック1回」で GitHub トークンが盗まれる脆弱性 — Webview のキー転送を Jupyter で偽装 thumbnail

github.dev の「クリック1回」で GitHub トークンが盗まれる脆弱性 — Webview のキー転送を Jupyter で偽装

Importance: High
⏱ approx. 2 min views 76 likes 0 LOG_DATE:2026-06-04
TOC

github.dev のブラウザ版 VS Code で、細工されたリンクを 1 回クリックするだけ で GitHub の認証トークンを盗み出せる脆弱性が、セキュリティ研究者アマル・アスカール氏によって報告された。GitHub 側は 6 月 3 日〜4 日にかけて修正を入れている。

どうやってクリック1回でトークンが取れたのか #

github.dev は、ブラウザ内で動く VS Code のフル機能版だ。攻撃の起点は Jupyter Notebook の中に埋め込まれた JavaScript。Notebook の描画用 Webview からエディタ本体に向けて、ユーザーが押していないキー操作を偽装転送できた点が核心だ。

VS Code の Webview は本来サンドボックスで隔離されているが、ショートカット (例: Ctrl+Shift+P) の使い勝手のためにキーイベントは本体に通される設計になっている。問題は、スクリプトが投げたキーイベントとユーザーが押したキーを区別する仕組みが甘かった こと。これにより、Notebook を開いた瞬間にコマンドパレットを開いて任意の VS Code コマンドを実行できた。

ここに「推奨拡張機能のインストール通知」を絡める。拡張インストール確認ダイアログがポップアップしたところに、偽装キー操作で「許可」を選ばせる。攻撃者の拡張機能が走り、GitHub API トークンを vscode.authentication 経由で取り出して外部に送る——という流れだ。

開発者全員に影響する「サプライチェーンの入口」 #

トークンが奪われれば、被害者のリポジトリに攻撃者がコミットを push できる。OSS メンテナのトークンなら依存ライブラリへの汚染コード混入が成立し、ダウンストリームに広く波及する。先日の polyfill.io 事案と同じく、1 人の開発環境の侵害が組織横断のサプライチェーン攻撃に直結する 構造だ。

GitHub の対応は素早く、6/3 に Notebook 信頼確認と拡張インストールコマンドの制限、6/4 に信頼できないイベント転送の制限を投入済み。デスクトップ版 VS Code にも同種の問題はあるが、ファイルを開く手間がある分、攻撃難易度は高い。

ハッカー視点の論点 #

この脆弱性は、「ブラウザ内 IDE」が Web セキュリティの前提 (Same-origin、CSP) と IDE の前提 (拡張機能の完全権限) を同居させる難しさ を露呈した。「Webview にキーを通す利便性」のような小さな緩和の積み重ねが、攻撃者から見れば 1 本の強力な経路になる。

防御は素朴だが、github.dev リンクを SNS や PR コメントから不用意に開かない、拡張インストールダイアログを必ず読む、PAT のスコープと有効期限を最小化する——あたりが落とし所だ。

𝕏 Post B! Hatena

COMMENTS 0

No comments yet — be the first to leave one.

Post a comment