Skip to content
Naoya Tech
Go back

Source Code Exposure in an AI Agent VS Code Extension: Reported, Then Ignored

13:49 Security

Overview

This video describes scanning VS Code extensions for exposed source code, and a report that went unanswered (the issue has since been fixed). It was inspired by an article about GitHub rewarding a report that its Copilot extension shipped its source code. Extensions are distributed as compressed .vsix files, and if TypeScript’s inlineSources option is true, the original source ends up in the build output.

Key Points

Chapters

概要

この動画では、VS Code拡張にソースコードが露出していないかをスキャンし、見つけた問題を報告したものの返信がなかった経緯を紹介します(問題はすでに修正されています)。きっかけは、GitHubのCopilot拡張にソースコードが含まれていたことを報告し、GitHubから報奨金を受け取ったという記事でした。拡張は圧縮された.vsixファイルで配布されており、TypeScriptのinlineSourcesをtrueにしていると、元のソースコードがビルド成果物に含まれてしまいます。

ポイント

  • Claude CodeなどのAIコーディングツールで作ったスキャナーは、HackerOneのAPIから企業名を取得し、VS Code MarketplaceのAPIでそれを検索し、見つかった拡張をダウンロード、展開して、含まれているソースマップを取り出します。
  • 約3000件をスキャンして160件が該当しましたが、Python Debuggerのようにオープンソースのものが多かったため、GitHubやGitLabのリポジトリへのリンクがある拡張は対象外にしました。精度の低い企業名での検索は、のちにインストール数の多い拡張をスキャンする方式に切り替えました。
  • 見つかった10件ほどのうち、重要なのは3件ほどで、企業の非公開の拡張コードが丸ごと含まれていたのは1件ほどでした。
  • セキュリティの窓口が見当たらなかったため、筆者は問い合わせフォームからセキュリティチームへの取り次ぎを頼み、数日後に教えてもらったメールアドレスに報告しましたが、2か月ほど返信はありませんでした。のちに再スキャンすると、露出はなくなっていました。
  • 発展編として、既知の形式からトークンやシークレットキーを探し、キーが有効かどうかも確かめられるtrufflehogを使いました。今回は何も見つからず、テスト用の認証情報のような誤検知もあるため、人間による確認が欠かせません。Googleが独自に運営する報奨金プログラムの対象のChrome拡張もスキャンしましたが、何も見つかりませんでした。

チャプター

Watch on YouTube

Share this post on:

Previous Video
How to Check Whether a Library Has the Tech Book You Want
Next Video
Vulnerabilities in Vercel and Cloudflare: Accepted, but No Bounty