【ITニュース解説】From MCP to shell: MCP auth flaws enable RCE in Claude Code, Gemini CLI and more
2025年09月24日に「Hacker News」が公開したITニュース「From MCP to shell: MCP auth flaws enable RCE in Claude Code, Gemini CLI and more」について初心者にもわかりやすく解説しています。
ITニュース概要
MCPの認証システムに欠陥が見つかり、Claude CodeやGemini CLIなどのサービスでリモートから任意のコードが実行される危険性がある。この深刻な脆弱性により、不正な操作が可能となるため、早急な対策が求められる。
ITニュース解説
このニュース記事は、企業環境で使われるプロキシ技術「MCP」に存在するセキュリティ上の深刻な欠陥と、それが引き起こす「RCE(リモートコード実行)」という非常に危険な結果について解説している。システムエンジニアを目指す初心者にとって、設計段階でのセキュリティ考慮がいかに重要かを示す良い事例だ。
まず「MCP」とは「Managed Client-side Proxy」の略称で、これは企業が従業員のインターネット利用を管理・監視するために導入するプロキシサーバーの一種だ。プロキシとは、ユーザーのコンピュータとインターネットの間に立ち、通信を中継する役割を果たすサーバーのこと。企業はプロキシを利用して、特定のウェブサイトへのアクセスを制限したり、マルウェア(悪意のあるソフトウェア)が潜んでいないか通信内容をチェックしたりすることで、社内ネットワークのセキュリティを保とうとする。MCPはGoogle Chromeブラウザの拡張機能として提供され、企業はこれを使ってプロキシの設定や認証情報を一元的に管理し、従業員に安全なインターネットアクセスを提供している。
今回の問題は、このMCPの認証の仕組みに潜んでいた。通常、プロキシサーバーを利用する際には、ユーザー名とパスワードを使った認証が必要になる場合がある。これは、認証されたユーザーのみがプロキシサービスを利用できるようにするための基本的なセキュリティ対策だ。しかし、このMCPプロキシの認証処理において、重要な情報であるパスワードが、なんと暗号化されていない「平文(ひらぶん)」の状態で、ブラウザ拡張機能の内部にある「サービスワーカー(Service Worker)」というJavaScriptのコードの中に埋め込まれてしまうという設計上の大きな欠陥があったのだ。
サービスワーカーとは、ウェブページとは独立してバックグラウンドで動作するJavaScriptのプログラムで、ウェブサイトの機能拡張やオフラインでの動作などに使われる。本来、サービスワーカーはセキュリティのために厳しく分離されており、他のサイトのデータにアクセスできないように設計されている。しかし、この脆弱性では、MCPプロキシの設定を適用しているユーザーのブラウザ拡張機能そのものが持つ権限が悪用される。
具体的な攻撃シナリオを考えてみよう。攻撃者は、何らかの方法で標的となるユーザーのブラウザ拡張機能の内部にアクセスする。これは、例えばマルウェア感染や、ユーザーが悪意のあるウェブサイトを閲覧した際に発生する可能性がある。攻撃者は、ブラウザ拡張機能の内部に侵入すると、そこに含まれるサービスワーカーのJavaScriptコードを読み取ることができる。そのコードの中には、MCPプロキシへの認証に必要なユーザー名とパスワードが平文で書かれているため、攻撃者はこれらをいとも簡単に盗み出すことができてしまう。
パスワードが手に入れば、攻撃者はその認証情報を使って、ユーザーが利用しているMCPプロキシサーバーに、ユーザー本人になりすましてアクセスできるようになる。このプロキシサーバーは、企業の様々な内部サービスや、クラウド上の外部サービスへのアクセスを中継している。記事で例に挙げられている「Claude Code」や「Gemini CLI」は、Googleが提供するAI開発者向けのツールであり、通常は厳重な認証と認可によって保護されている。しかし、MCPプロキシを経由してこれらのサービスにアクセスしている場合、攻撃者は盗んだ認証情報を使って、これらのAI開発ツールに対してユーザー本人としてアクセスできてしまうのだ。
そして、最も深刻な結果が「RCE」、つまり「Remote Code Execution(リモートコード実行)」だ。これは、攻撃者が遠隔地から標的のコンピュータ上で任意のプログラムを勝手に実行できてしまうという、サイバー攻撃において非常に危険な脆弱性の一つだ。AI開発ツールのようなサービスは、ユーザーの指示に基づいてコードを実行する機能を持っていることが多い。攻撃者は、盗んだ認証情報を使ってこれらのツールにアクセスし、悪意のあるコードを実行させることで、企業のサーバーやシステムに対して不正な操作を行ったり、機密情報を盗み出したり、システムを破壊したりと、想像しうるあらゆる種類の攻撃が可能になる。これは単なる情報漏洩にとどまらず、企業のビジネス全体に甚大な被害をもたらす可能性がある。
この脆弱性の根本原因は、機密情報である認証情報が、クライアント側のコードに平文で埋め込まれるという、セキュリティ設計の基本的な誤りにある。機密情報は、常に暗号化され、安全な方法で管理されるべきであり、特にクライアント側のJavaScriptのような、攻撃者からアクセスされやすい場所に平文で置くことは厳禁だ。
このような脆弱性が発見された場合、企業や開発者は迅速な対応が求められる。Googleはすでにこの脆弱性に対応したバージョンをリリースしており、ユーザーは最新のChromeブラウザを使用することで保護される。しかし、これはMCPに限らず、あらゆるシステム開発において重要な教訓となる。開発者は、認証情報の取り扱い方、特にクライアントサイドでどのように安全に処理するかについて、常に最新のセキュリティベストプラクティス(最善の方法)を遵守する必要がある。また、多要素認証(パスワードだけでなく、スマートフォンアプリなどで生成されるコードなども併用する認証方法)の導入など、万が一パスワードが漏洩しても被害を最小限に抑えるための対策も重要となる。
システムエンジニアを目指す初心者にとって、このニュースは、単なる技術的な話題だけでなく、セキュリティの重要性を肌で感じる良い機会だ。どんなに優れた機能を持つシステムでも、セキュリティに欠陥があれば、それは一瞬にして危険なものとなり得る。セキュリティは、システム開発のあらゆる段階で考慮すべき不可欠な要素であり、設計段階から最後まで、常に意識し続ける必要があることを示している。