SkillLeak、MCPスキルを介したブラウザ認証情報の窃盗

SkillLeak:MCPスキルを通じて提供されるブラウザ認証情報復号ツール

TL; DR

@szc-ft/mcp-szcd-client は、AI コーディングアシスタントを自動構成する npm に公開されたモデル コンテキスト プロトコル (MCP) クライアントです。これは、開発者が IDE エージェントがコンポーネント ライブラリ サービスと通信できるようにインストールする一種の接着剤パッケージです。 は、長く、ごく普通に見えるリリース履歴を持っています (71のバージョン)そして、無害なインストール手順です。インストール後の手順では、認証情報は一切変更されません。

認証情報読み取り動作は、さらに深い階層にあるバンドルされた MCP スキルに存在し、 local-browser-testそのスキルが connect() ルーチンが実行されると、呼び出されます _decryptCredentials() — 復号化 ローカルの Chrome/Edge プロファイルに保存されているすべてのパスワード (ブラウザテストの対象となる単一のアプリケーションではなく、すべてのサイト)Windowsデータ保護API(DPAPI)とAES-256-GCMを使用して復号化されます。復号化されたセットは平文で書き込まれます。 ~/.szcd-mcp/deps/decrypted-creds.json そして、スキルの MCP ツール結果内に返され、パッケージのデフォルトのリモート MCP サーバーに流れます。 mcp.szcd-mcp.top.

これは名付けるべきサプライチェーンのパターンだ。 機密機能はインストールフックには含まれていません (ほとんどのスキャナーやレビュー担当者が見る場所)ですが、オペレーターがツールを自分の実行中のブラウザに向けたときにのみ実行される MCP スキルです。 スキルリークMEWは分類する @szc-ft/mcp-szcd-client (バージョン 0.38.0 (NAIST) と 0.39.0悪意のあるものとして。

用語解説 — MCPスキルMCPサーバーがAIエージェントに対して呼び出し可能な機能として公開する、命令とヘルパースクリプトからなる自己完結型のパッケージ。エージェントはこれをツールのように呼び出し、スクリプトは開発者のマシン上で実行される。

攻撃の解剖学

このパッケージは、全く異なる二つの顔を持っている。

批評家が最初に目にする顔 インストールパスです。マニフェストは宣言します postinstall: node scripts/postinstall.jsそしてそのスクリプトはREADMEに書いてあるとおりの動作をする。 MCP IDEへの統合と関連パッケージのインストール、 @szc-ft/sketch-mcp-server認証コードに到達しません。インストールで停止するスキャナー hooks ―歴史的に見て最も高いシグナルが得られるとされる箇所―では、クリーンで特筆すべき点のない開発者ツールが見つかった。実際、このパッケージは以前のレビュー段階で安全と評価されていた。

重要なのは顔だ バンドルされたスキルを通してのみ到達可能です。その連鎖は次のとおりです。

  • 開発者が ローカルブラウザテスト リモートデバッグポートを使用して起動したChrome/Edgeインスタンスに対してスキルを実行します。これが、このスキルを使用するための公式な方法です。
  • そのスキルは 接続() (lib/browser-engine.js)呼び出し _decryptCredentials() 246行目。
  • _decryptCredentials() 呼び出し decryptAllPasswords({ filter: '%' })を選択します。 '%' フィルターは、テストの利便性を収穫へと変える重要な要素です。テスト対象の単一のサイトではなく、保存されているすべてのオリジンに一致するように調整します。
  • lib/decrypt-passwords.js ブラウザの os_crypt 暗号化されたキー、実行 powershell … ProtectedData::Unprotect (DPAPI)を使用してAESキーを復元し、次に保存された各認証情報をAES-256-GCMで復号します。
  • 復号化された完全なセットは以下に書き込まれます ~/.szcd-mcp/deps/decrypted-creds.json 平文で保存され、スキルの MCPツール 結果。
  • その結果はMCPチャネルを介してパッケージのデフォルトサーバーに送り返され、 mcp.szcd-mcp.top — README および に記載されているホストと同じ scripts/lib/common.js.

ステップ4がそもそも機能する理由について簡単に説明します。Windowsでは、ChromeとEdgeは保存されたパスワードを平文で保存しません。各認証情報はAES-256-GCMキーで暗号化され、そのキー自体がDPAPIで封印され、現在のユーザーアカウントに紐付けられます。したがって、パスワードを復元するには2つの手順が必要です。 ProtectedData::Unprotect AESキーを復元するため(これは、コードがログインしているユーザーとして実行されるため成功します。これは開発者のターミナルが提供するコンテキストとまったく同じです)、次にブラウザから読み取られた各保存済みブロブのGCM復号化が行われます。 os_crypt保護されたストア。これはよく知られており、オフラインで静かに動作します。マスターパスワードの入力を求められず、ブラウザとのやり取りも不要で、結果が転送されるまでネットワークの往復通信もありません。これは多くの一般的な情報窃盗犯が使用するのと同じ基本的な手法であり、ここで目新しいのは、それを運ぶラッパーだけです。

復号器は偶然の産物ではない3回バンドルされています。 standard-スキル/, opencode拡張機能/, qwen拡張機能/ — サポートされているAIアシスタントのサーフェスごとに1つのコピーが用意されているため、開発者が接続したアシスタントにその機能が付属します。

正当なブラウザテストの自動との比較login これが全てです。本物のテストヘルパーが認証情報を復号化します。 XNUMXつ アプリケーションはエクササイズですcis処理内で使用し、永続化したり転送したりすることはありません。ここでは、ルーチンがすべてを復号化し、平文でディスクに書き込み、ネットワーク境界を越えてリモートサーバーに返します。

タイムラインとトリガー 

暴露を理解する上で、2つの行動が重要となる。

トリガーはオプトイン方式であり、自動ではありません。 パッケージのインストールでは認証情報は読み込まれません。復号化は開発者がアクティブに呼び出した場合にのみ実行されます。 ローカルブラウザテスト リモートデバッグモードで起動したブラウザに対するスキル。これにより、影響を受ける対象が大幅に絞り込まれる。 インストール後 あらゆる時に発射されるペイロード npmインストール.

パッケージは高級感があり、使い捨てではない。 出版社は71バージョンを出荷しており、より幅広い @szc-ft コンポーネントライブラリ MCP スイート。認証情報復号ツールは、フラグ付きバージョン (0.38.0 と 0.39.0) の両方に存在し、同じフィンガープリントを持ち、同じ場所から呼び出されます。 browser-engine.js:246 エントリーポイント。このパッケージは、執筆時点ではnpm上で引き続き利用可能です。

実績のあるパブリッシャー、無害なインストール手順、そして特定のオプトインワークフローでのみ実行される機能という組み合わせこそが、自動分類器が「安全」と予測し、以前のレビューでも同様の判断が下された理由です。この動作は、スキルのヘルパースクリプトを手動で読み取った場合にのみ解決されます。

侵害の兆候

タイプインジケータ
パッケージ@szc-ft/mcp-szcd-client (npm) — バージョン 0.38.0, 0.39.0
ネットワークデフォルトのリモート MCP サーバー mcp.szcd-mcp.top (README.md, scripts/lib/common.js:18)
ファイル(削除済み)~/.szcd-mcp/deps/decrypted-creds.json — 平文で復号化された認証情報
ファイル(ペイロード).../local-browser-test/lib/decrypt-passwords.js — DPAPI ProtectedData::Unprotect + AES-256-GCM (バンドルされています) standard-skill/, opencode-extension/, qwen-extension/)
行動のbrowser-engine.js:246 _decryptCredentials()decryptAllPasswords({ filter: '%' }) (全サイト対象)
行動のChrome/Edgeを読み取ります os_crypt キー。ブラウザを起動する必要があります。 --remote-debugging-port
フックを取り付けるpostinstall: node scripts/postinstall.js - 良性 (IDE MCP 設定 + 兄弟パッケージのインストール)復号ツールに到達しません

擁護者の監査 MCPツール 扱うべき 技能 マニフェストやインストールスクリプトだけでなく、ディレクトリ全体も対象に含めます。

帰属と観察された行動

私たちは行動を記述するのであって、動機を記述するのではない。

このパッケージは、一貫性のあるマルチパッケージを備えた確立されたnpmアカウントで公開されています。 @szc-ft MCPスイートと長いバージョン履歴があります。専用の秘密のコマンドおよび制御チャネルはありません。復号化された認証情報は、パッケージ独自の文書化されたMCPサーバーを介して返されます。 mcp.szcd-mcp.top匿名のドロップポイントではなく、直接ファイルに送信されます。インストール手順は全く問題ありません。

これを「攻撃的な利便性機能」から悪意のある分類へと変えるのは、観測可能な範囲と宛先の組み合わせです。ルーチンは復号化します。  テストを実行する単一のアプリケーションではなく、保存されたブラウザ認証情報cise、それらを平文でディスクに保存し、MCPチャネルを介してホストから送信します。ブラウザテスト自動login このような動作をする機能は、事実上、認証情報の窃盗と区別がつかなくなるだろう。そして、防御側が考慮しなければならないのは、まさにその影響である。

正直に申し上げますが、このトリガーはオプトイン方式であり、発行元は既に確立されています。これらの事実は上記の記録にも記載されています。しかし、これらの事実は、スキルを実行する開発者にとって目に見える結果を変えるものではありません。つまり、ブラウザプロファイルに保存されているすべてのサイトのパスワードがマシンから送信されるということです。

影響、傾向、および防衛者向けガイダンス

SkillLeakは単一のパッケージによるインシデントだが、重要なのはそれが利用する配信プラットフォームである。

業界のサプライチェーンの対応は、設置時の実行に特化している。 プレインストール/インストール後 hooks依存関係の混乱ビーコン、ペイロード付きのタイポスクワット index.js. MCPは形状を変更しますMCP パッケージは、マニフェストとインストール手順を完全にクリーンな状態で出荷し、その結果として生じる動作を内部に保持することができます。 技能 これは、AIエージェントが開発者の指示に基づいて、開発者自身のリソースに対して後で呼び出すパッケージです。この機能はアシスタント統合に含まれており、通常のワークフロー(「ブラウザテストを実行する」など)によってアクティブ化されるまで休眠状態にあります。

MCPツールを導入するチーム向け:

  • 監査スキル、単なるマニフェストの監査スキルではない。 パッケージレビューを拡張して スキル/, *-拡大/、および同等のディレクトリ。最も機密性の高いコードは、インストールフックには決して含まれない可能性があります。
  • スコープの拡大に注意しましょう。 狭い目的(1 つのアプリをテストする)を主張するが、広く動作する機能(フィルター: '%' (保存されているすべてのオリジンにわたって)は、意図に関係なく危険信号です。
  • MCPツールの結果を出力チャネルとして扱います。 スキルから返されたデータは、ホストからクライアントが設定されているMCPサーバーに送信されます。これらの送信先は、他の送信接続と同様にインベントリしてください。
  • 「信頼できる」MCPパッケージのバージョンアップを再検討する。 実績のある出版社や長いリリース履歴は、各バージョンに同梱されているコードを読むことの代わりにはならない。今回の事例は、以前の安全評価を覆すものであり、まさにそれを証明している。

具体的には、開発者がスキルを実行する前に、3 つの低コストのチェックでこのパッケージが発見されたはずです。まず、ローカルの認証情報ストアへのアクセスに関するスキルディレクトリのコンテンツスキャンです。 os_crypt, 保護されたデータ/DPAPI、またはブラウザの Login Rescale データ ファイル — どのインストール フックが存在するかに関わらず、機能にフラグを立てます。 2 番目に、ワイルドカード セレクタを受け入れる復号/読み取りルーチンのスコープ チェック (フィルター: '%' 境界識別子ではなく、同等の識別子を使用することで、テストから収穫へのインフレを捕捉できます。 3 番目に、パッケージが到達できるホストのセット (ここでは、 mcp.szcd-mcp.topドキュメントで必要とされるとされている宛先に対して ) を実行すると、MCP 結果チャネルが監査可能な出力ポイントになります。これらのいずれもコードを実行する必要はありません。

DPAPI を介した認証情報の復号化と os_crypt これは古い手法ですが、オプトイン方式のワークフローでのみ実行されるAIエージェントスキルを介して提供するのが新しい手法です。MCPツールの普及に伴い、このような機能をスキルに組み込むパターンが増えることが予想されるため、レビューの範囲をそれに応じて調整してください。 

sca-tools-ソフトウェア構成分析ツール
ソフトウェアのリスクを優先順位付けし、修復し、保護する
無料アカウントを作成しましょう。
いいえ、クレジットカードは必要ありません。

ソフトウェア開発と納品を安全に

Xygeni製品スイートと共に