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 のスコープと有効期限を最小化する——あたりが落とし所だ。
COMMENTS 0
まだコメントはありません。最初のコメントを投稿しよう。