[{"data":1,"prerenderedAt":277},["ShallowReactive",2],{"content-/extension-purge-after-github-breach":3,"all-pages-for-dir":275,"og-image-/extension-purge-after-github-breach":276},{"id":4,"title":5,"body":6,"category":258,"description":259,"extension":260,"meta":261,"navigation":230,"ogImage":262,"path":263,"project_name":258,"published":264,"publishedAt":265,"seo":266,"stem":267,"tags":268,"todo":262,"unpublished":264,"updatedAt":262,"__hash__":274},"pages/2026-05/2026-05-20/extension-purge-after-github-breach.md","GitHub侵入事件を受けてVS Codeの自動更新を止め、Chrome拡張を53→31に削った話",{"type":7,"value":8,"toc":245},"minimark",[9,14,18,21,24,30,46,50,53,58,61,64,67,71,74,77,80,93,96,101,108,111,116,119,123,126,129,132,135,139,142,145,152,155,158,161,166,169,173,176,181,184,192,195,199,202,210,213,216,219],[10,11,13],"h2",{"id":12},"発端github侵入事件の報道","発端：GitHub侵入事件の報道",[15,16,17],"p",{},"2026年5月18日にGitHub関連のサプライチェーン攻撃報道が出た。npm経由・拡張機能経由で悪意あるコードが入り込んでいた、という筋の話だ。",[15,19,20],{},"ニュースを流し読みしていて手が止まった。手元のVS Codeは拡張機能を自動更新する設定のままだ。もし自分が入れている拡張のどれかが乗っ取られて悪意あるバージョンを配信されたら、自分は何もせずに迎え入れることになる。",[15,22,23],{},"Claude Codeに最初に投げた一言はシンプルだった。",[25,26,27],"blockquote",{},[15,28,29],{},"「VS Codeの拡張機能の自動更新を一括でオフにしたい」",[15,31,32,33,37,38,41,42,45],{},"返ってきたのは settings.json をいじる方法だった。",[34,35,36],"code",{},"extensions.autoUpdate"," と ",[34,39,40],{},"extensions.autoCheckUpdates"," を ",[34,43,44],{},"false"," にすれば、自動更新も更新チェックも止まる。",[10,47,49],{"id":48},"直感自動更新オン今は危険なのでは","直感：「自動更新オン＝今は危険なのでは」",[15,51,52],{},"ここで一拍置いた。普段なら「自動更新オン＝最新のセキュリティパッチが入る＝安全」というのが定石のはずだ。なのに今は逆の感覚が来ている。",[25,54,55],{},[15,56,57],{},"「自動更新オン＝悪い拡張が自動で入ってくるリスクの方が今は怖い」",[15,59,60],{},"自分の直感はそう告げていた。これが正しいのか、ただの被害妄想なのか。Claude Codeに裏取りを頼んだ。",[15,62,63],{},"報道と最近のサプライチェーン攻撃事例を当たってもらった結果、直感の方が現実に近かった。乗っ取られた拡張のアップデートが配信された瞬間に全ユーザーが即時感染する、というのが今回の手口の核だ。脆弱性パッチを待つよりも、悪意ある更新を踏まないことの方が、現時点では優先度が高い。",[15,65,66],{},"自動更新は止める、という判断で運用に入った。月一くらいで手動アップデートに切り替える。",[10,68,70],{"id":69},"ローカルチェックsettingsjson-と拡張一覧","ローカルチェック：settings.json と拡張一覧",[15,72,73],{},"「設定を変えました」で終わらせると意味がない。今この瞬間の自分のローカルが汚染されていないかも確認したい。",[15,75,76],{},"Claude Codeに settings.json を覗いてもらった。秘密値が漏れていないか、知らない設定が混ざっていないか。結果はクリーンで、APIキーの直書きもなければ、見覚えのないリモート参照もなかった。",[15,78,79],{},"次にインストール済みのVS Code拡張を一覧化してスキャンしてもらった。「軽微な注意」レベルの拡張が3つ引っかかった。",[81,82,83,87,90],"ul",{},[84,85,86],"li",{},"個人開発者で更新が止まっている拡張",[84,88,89],{},"似た名前の本物と紛らわしい命名の拡張",[84,91,92],{},"必要な権限以上を要求している拡張",[15,94,95],{},"3つとも、たまにしか使っていない or 代替がある類のものだった。",[25,97,98],{},[15,99,100],{},"「3つとも消して」",[15,102,103,104,107],{},"VS Code CLI から ",[34,105,106],{},"code --uninstall-extension {ID}"," を3連発で打ってもらって即時削除。",[15,109,110],{},"ここで自分から追加質問を投げた。",[25,112,113],{},[15,114,115],{},"「拡張機能の表示タイトル何？」",[15,117,118],{},"ID（パブリッシャー.拡張名）だけ並べられても直感的に分からない。表示名・パブリッシャー・用途を表にして返してもらって、ようやく「ああ、あれか」と腑に落ちた。",[10,120,122],{"id":121},"chrome拡張も棚卸し53拡張からスタート","Chrome拡張も棚卸し：53拡張からスタート",[15,124,125],{},"VS Codeを片付けたら次はChromeだ。Chromeの方が拡張機能経由のリスクは大きい。常時起動していて、銀行も会計ソフトも開いている。",[15,127,128],{},"複数のChromeプロファイルを横断して、アクティブな拡張機能を全部スキャンしてもらった。総数53。",[15,130,131],{},"良い兆候もあった。サイドロード（Chrome Web Store外から手動で入れた拡張）はゼロ。全てWeb Store公式配信経由だった。少なくとも「素性の知れない拡張を野良で入れていた」という最悪の事態ではない。",[15,133,134],{},"ただ、53は多すぎる。Claude Codeに「使ってない or 第三者製で広い権限」のものを優先度付きでリストアップしてもらった。7つピックアップされた。",[10,136,138],{"id":137},"chrome-cliで削除できない罠","Chrome CLIで削除できない罠",[15,140,141],{},"「じゃあVS Codeと同じくCLIで7つ消して」と頼んだら、ここで詰まった。",[15,143,144],{},"Chromeは CLI からの拡張削除をサポートしていない。拡張フォルダを直接削除しても、Chrome同期で次回起動時に復活する。同期が無効でも、拡張設定DBに残骸が残って挙動が怪しくなる。",[15,146,147,148,151],{},"Claude Codeの提案は、",[34,149,150],{},"chrome://extensions/?id={拡張ID}"," という個別の削除ページURLをワンクリックで開く動線を出すことだった。コマンド一発でURLリストが出てきて、自分はそれをポチポチ開いて削除ボタンを押すだけ。半自動だが現実的に一番早い。",[10,153,154],{"id":154},"想定の5つどころか22個削減",[15,156,157],{},"ここで自分のスイッチが入った。提示された7つだけでなく、自分の判断で「これ最近開いてないな」「これ別の拡張で代替できるな」というのも巻き込んで消し始めた。",[15,159,160],{},"ポチポチを終えて、もう一度Claude Codeに再スキャンを頼んだ。",[25,162,163],{},[15,164,165],{},"結果：53 → 31拡張（22個削減）",[15,167,168],{},"想定の5つどころではない数字になった。ニュース1本きっかけで、ずっと放置していた拡張機能のレイヤーが一気に薄くなった。",[10,170,172],{"id":171},"vimiumは戻すpower-automateは要らない","Vimiumは戻す、Power Automateは要らない",[15,174,175],{},"整理が終わって数時間後、ブラウザを使っていて手が止まった。Vimiumを消したのを忘れていて、いつものキーバインドでスクロールしようとして反応しなかった。",[25,177,178],{},[15,179,180],{},"「Vimium戻したい。あとPower Automateは要らない」",[15,182,183],{},"この依頼をClaude Codeに並列で投げた。",[81,185,186,189],{},[84,187,188],{},"Vimiumの Chrome Web Store インストールページを開く",[84,190,191],{},"Power Automate の削除ページを開く",[15,193,194],{},"両方が同時にChromeに開いて、自分はクリックするだけ。一度引いた線を、必要なものだけ戻す、という運用に落ち着いた。",[10,196,198],{"id":197},"学び直感の言語化をaiに頼める時代","学び：直感の言語化をAIに頼める時代",[15,200,201],{},"今回の流れを振り返ると、自分の役割と Claude Code の役割がきれいに分かれていた。",[81,203,204,207],{},[84,205,206],{},"自分：「自動更新オン＝今は危険なのでは」という違和感を拾った",[84,208,209],{},"Claude Code：その直感を報道調査・設定変更・拡張棚卸し・削除動線提示で裏取り＆実行した",[15,211,212],{},"普段のセキュリティ運用だと、「なんとなく危ない気がする」で終わりがちな違和感を、AIに裏取りさせて事実に落とせるようになった。設定変更も拡張棚卸しも、本来なら腰が重い作業だ。それを「ニュースを見た日のうちに」終えられた。",[15,214,215],{},"税理士・会計士の業務に置き換えるとこうなる。クライアントの会計データを開く側のブラウザに、よくわからない拡張機能が入っていないか、半年に一度くらいは見直したい。サイドロード拡張ゼロを確認するだけでも、内部統制上の説明力が上がる。",[10,217,218],{"id":218},"残課題",[81,220,223,233,239],{"className":221},[222],"contains-task-list",[84,224,227,232],{"className":225},[226],"task-list-item",[228,229],"input",{"disabled":230,"type":231},true,"checkbox"," VS Code拡張は月1で手動アップデート（カレンダーに登録した）",[84,234,236,238],{"className":235},[226],[228,237],{"disabled":230,"type":231}," Chrome拡張のリストを月1で再スキャン（53に戻らないように）",[84,240,242,244],{"className":241},[226],[228,243],{"disabled":230,"type":231}," サイドロード拡張がゼロのままか、四半期で確認する",{"title":246,"searchDepth":247,"depth":247,"links":248},"",2,[249,250,251,252,253,254,255,256,257],{"id":12,"depth":247,"text":13},{"id":48,"depth":247,"text":49},{"id":69,"depth":247,"text":70},{"id":121,"depth":247,"text":122},{"id":137,"depth":247,"text":138},{"id":154,"depth":247,"text":154},{"id":171,"depth":247,"text":172},{"id":197,"depth":247,"text":198},{"id":218,"depth":247,"text":218},"personal","2026年5月18日のGitHub関連サプライチェーン攻撃報道を契機に、VS Codeの拡張自動更新をオフ、settings.jsonとインストール済み拡張を棚卸し、Chrome拡張を53→31に整理した記録。","md",{},null,"/extension-purge-after-github-breach",false,"2026-05-20T00:00:00.000Z",{"title":5,"description":259},"2026-05/2026-05-20/extension-purge-after-github-breach",[269,270,271,272,273],"セキュリティ","VS Code","Chrome","拡張機能","サプライチェーン攻撃","YRGeCxZZipOmZBGW5szKgrudlFMrHFHLhz7LpQTi4GA",[],"https://log.eurekapu.com/og/blog/extension-purge-after-github-breach.png?v=2026-05-20T00%3A00%3A00.000Z&title=GitHub%E4%BE%B5%E5%85%A5%E4%BA%8B%E4%BB%B6%E3%82%92%E5%8F%97%E3%81%91%E3%81%A6VS%20Code%E3%81%AE%E8%87%AA%E5%8B%95%E6%9B%B4%E6%96%B0%E3%82%92%E6%AD%A2%E3%82%81%E3%80%81Chrome%E6%8B%A1%E5%BC%B5%E3%82%9253%E2%86%9231%E3%81%AB%E5%89%8A%E3%81%A3%E3%81%9F%E8%A9%B1&author=Kei%20Komatsu&sig=eaf3b144f9e293b8",1782528840017]