0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「MCP サーバー」って危ない?— セキュリティ初心者にもわかる 10 の落とし穴

0
Posted at

この記事を読んでわかること

  • MCP サーバー」とは、Claude Code(AI)が外の世界の道具を使うための窓口のこと
  • 便利なんだけど、窓口の作りが甘いと「家の合鍵をネット上に置きっぱなし」 みたいな状態になる
  • 2026 年の今、その「甘い作り」を悪用された事故が 60 日で 30 件以上起きている
  • 本記事では 「特に避けたほうがいい 10 個の MCP サーバー」 を、専門用語をできるだけ使わずに 紹介する
  • 各 MCP に対して 「何がマズいか / 例えると / 防ぐにはどうする」 の 3 点セット
  • 末尾に 「自分で MCP を評価する 7 つのチェック」5 分で試せるクイックスタート

想定読者: Claude Code / Cursor / Gemini CLI などの AI コーディングツールを社内で使いはじめた人。「MCP?聞いたことはあるけど…」のレベルから読めるように書いてます。


0. まず「MCP サーバー」って何?

例え話

あなたが料理ロボットを買ったとします。ロボット単体だと「冷蔵庫の中身を見て料理する」までしかできない。

でも、ロボットに 「コンビニで食材を買ってくる権利」「Amazon で注文する権利」「銀行口座から支払う権利」 を渡したら、すごく便利になりますよね。

MCP サーバーとは、AI(Claude Code 等)にそういう「外の世界の権利」を 1 つずつ追加するための仕組みです。

  • GitHub MCP を入れると → AI が GitHub のコードを読み書きできるようになる
  • Slack MCP を入れると → AI が Slack にメッセージを送ることができるようになる
  • DB MCP を入れると → AI が データベースに SQL を投げることができるようになる

何がうれしい

  • AI が自分で必要な情報を取りに行くので、人間が手作業で「これ見て」と渡さなくていい
  • AI が自分で結果を書き戻すので、人間がコピペしなくていい

何がコワい

  • AI に 「外の世界に手を伸ばす権利」 を渡している = AI が暴走したらその権利の範囲で実害が出る
  • もっとコワいのは、MCP サーバー自体に脆弱性があったら、AI 経由でその脆弱性が突かれる

要するに: MCP サーバー 1 個追加する = AI に 合鍵を 1 本渡す。合鍵の作りが甘いと、家に泥棒が入ります。


1. なぜ「MCP が危ない」と業界で言われはじめたのか

2026 年 4 月、OX Security という調査会社が「MCP by Design(設計レベルで危ない)」というレポートを公開しました。中身を超ざっくり言うと:

数字 意味
約 20 万台 全世界でインターネットに穴開きで公開されている MCP サーバーの推定数
30 件以上 60 日で公開された MCP 関連の Critical / High 重大度の脆弱性
4 種類 Anthropic 公式 SDK(Python / TypeScript / Java / Rust)すべてが同じ問題を抱えている

なぜこんなことに?

普通のソフト MCP サーバー
「外部から命令を受け取る → 検査してから実行」が常識 受け取った命令をそのままシェル(OS のコマンド窓口)に流す設計がデフォルト
「認証なしで動かす」と猛烈に怒られる デフォルトで認証なしの OSS が多い
「ローカル限定(127.0.0.1)」がデフォルト **0.0.0.0(外から接続可)**がデフォルトな OSS が多い

つまり、MCP サーバーは「セキュリティの常識を踏まえる前のおもちゃ」段階で世に出てる、と思って扱う必要があります。


2. 特に避けたほうがいい MCP サーバー 10 選

各エントリは (a) 何がマズいか / (b) 例えると / (c) 防ぐには の 3 点セットで紹介します。
専門的な CVE 番号やバージョン番号は 「📌 技術メモ」 として最後にまとめました。読み飛ばしても OK です。


#1. Windsurf(AI コードエディタ)

(a) 何がマズいか:
プロジェクトを開くだけで 攻撃が成立する「ゼロクリック」の事故が報告されました。誰かが悪意あるドキュメント(README や Slack に貼られたリンクなど)を仕込んでおいて、あなたがそのプロジェクトを Windsurf で開くと、あなたの PC で勝手にコマンドが実行されます。

(b) 例えると:
封筒の表書きを読んだだけで、勝手に中の書類があなたのサインを偽造してくれちゃう封筒。普通は封筒を開けて中身を読んで、署名を判断するはず。Windsurf の場合は 「開いた瞬間に終わってる」

(c) 防ぐには:

  • Windsurf を最新版にアップデート
  • 心配なら Cursor か Claude Code に切り替え(同じ事故は彼らだと 1 ステップは人間の操作が必要だった)

📌 技術メモ: CVE-2026-30615(ソース: PolicyLayer)。Windsurf 1.9544.26 以前。


#2. MCPJam Inspector(MCP の開発支援ツール)

(a) 何がマズいか:
このツールは **デフォルトで「世界中から接続できる状態」**で立ち上がります。しかも 接続時にパスワードを聞かない。攻撃者が HTTP リクエスト 1 発あなたのマシンで好きなコマンドを実行できます。

(b) 例えると:
玄関のドアが開きっぱなし、しかも鍵すら付いてない部屋。ご丁寧に「ここに入ったら自由に冷蔵庫の物を取っていいですよ」と貼り紙までしてある。

(c) 防ぐには:

  • バージョンを 1.4.3 以降に上げる
  • そもそも インターネットから到達可能な場所に置かない(自分の PC の中だけで使う)

📌 技術メモ: CVE-2026-23744(CVSS 9.8 = 「最悪」レベル)。1.4.2 以前。GitHub Advisory


#3. LiteLLM の古いバージョン(AI 中継サーバ)

(a) 何がマズいか:
LiteLLM は「いろんな AI API を 1 つの入口にまとめてくれる」便利なツール。ただし古いバージョン(1.83.6 以前)には、Web 画面から認証なしで OS コマンドを叩ける穴があった。

(b) 例えると:
コンビニのレジ画面から、店長権限のメニューが誰でもタッチで開けてしまう状態。普通レジは店員しか触れないし、店長メニューはさらにパスワードがいる。LiteLLM 旧版はその両方が抜けてた。

(c) 防ぐには:

  • 必ず 1.83.7-stable 以降にアップデート
  • 公開 IP に絶対に置かない(社内ネットワーク内 + 認証ゲート)

📌 技術メモ: CVE-2026-30623(OX advisory)。同時期に別の SQL injection(CVE-2026-42208)もあり、AI ゲートウェイ層は **「Web サーバより先に殴られる時代」**になっていると考えてよい。


#4. PraisonAI の古いバージョン(AI エージェント開発フレームワーク)

(a) 何がマズいか:
このフレームワークは 設計上の問題が 4 つ重なっている「四重苦」状態。

  1. デフォルトで認証がオフ(誰でもアクセス可)
  2. 受け取ったコマンドを検査せず実行(任意のコマンド実行)
  3. AI に渡す環境変数に API キーやパスワードが丸ごと含まれる(漏洩)
  4. ファイル操作で 指定外の場所に移動できる/etc/passwd などにアクセス可)

公開されてから 3 時間 44 分 39 秒で攻撃者が突いてきた、という観測もあります。

(b) 例えると:
「自由に使ってください」と書かれた家の鍵が、家の前のポストに貼り付けてある。さらに家の中の金庫の鍵もポストの中に置いてある。さらに金庫の中のパスポートのコピーも… みたいな「全部置きっぱなし」状態。

(c) 防ぐには:

  • 4.6.34 以降に即アップデート
  • 業務利用なら、そもそも別のフレームワーク(LangChain や CrewAI など)に切り替えることも検討

📌 技術メモ: CVE-2026-44338(Auth bypass)/-34935(Cmd injection)/-40159(Env var leak)/-44336(Path traversal)。Sysdig 観測。


#5. MS-Agent(ModelScope)(中国系 AI エージェント)

(a) 何がマズいか:
AI に **「このドキュメント要約して」**と頼むと、ドキュメントの中身に攻撃者が仕込んだ命令を AI が 「自分への指示」だと勘違いして実行してしまう。さらに MS-Agent 側のフィルタが甘いので、シェル特殊文字($() ; && 等)が素通りしてしまう。

(b) 例えると:
お手伝いさんに「このメモ読んでおいて」と渡したら、メモの中に「あなたの財布から 10 万円取って window から外に投げて」と書いてあって、お手伝いさんがその通り実行してしまうような状態。本来「お手伝いさんは依頼者の指示しか聞かないはず」なのに、メモの中身を指示扱いしてしまう。

(c) 防ぐには:

  • MS-Agent を最新版(v1.6.0 以降)に
  • 業務利用は当面見送り、研究用途とみなす

📌 技術メモ: CVE-2026-2256(CWE-77)。CERT/CC が VU#431821 で勧告を出している。


#6. Apache Doris MCP の古いバージョン(データベース連携)

(a) 何がマズいか:
データベースに AI が SQL(質問文)を投げるための窓口です。古いバージョンでは、AI が DB に投げる質問の中身を検査していないので、**「全データを抜き出す」「データを消す」**といった危険な SQL もそのまま通ってしまう。

(b) 例えると:
「お客様の質問なら何でも答えます」と書いてある図書館のカウンター。普通は「個人情報の閲覧申請は本人確認が必要です」と止めるはずなのに、**「全員の借りた本の履歴を教えて」**と聞かれても素直に全部出してしまう状態。

(c) 防ぐには:

  • Doris MCP を 0.6.1 以降にアップデート
  • DB に接続する MCP ユーザーは **必ず「読み取り専用」+「特定のテーブルのみ」**にする(最小権限)

📌 技術メモ: CVE-2025-66335。GitHub Advisory


#7. Flowise(古い「ホワイトリスト版」)(ノーコード AI ツール)

(a) 何がマズいか:
「危ないコマンドは禁止、安全なコマンドだけ許可」という ホワイトリスト方式で守ろうとした。ただし **「コマンド名だけ」**を見ていて **「コマンドの引数」**を見ていなかったので、npx -c "悪意あるコード" のように -c というオプションを付けて好きなコードを実行できてしまった。

(b) 例えると:
入場ゲートで「持ち物検査します」と言いつつ、バッグの外側だけ見て中身を開けない警備員。中に何が入っていてもスルー。

(c) 防ぐには:

  • Flowise を最新版(fix 後)に
  • 自社で同様のホワイトリスト実装するときは 「コマンド全体(引数まで含めて)」をチェックする

📌 技術メモ: OX advisory 内に複数 CVE。-c -e --exec 等のフラグが要注意。


#8. Bisheng MCP(中国系 LLM フレームワーク)

(a) 何がマズいか:
**LiteLLM や LangFlow と同じ「Web 画面から認証なしでコマンド実行」**問題を抱えていて、しかも 10 件以上の重大脆弱性が一気に発見された。

(b) 例えると:
「セルフサービス」と書かれた店舗で、レジも金庫も食材庫も全部開きっぱなし。お客さんが入った後の状態が全く管理されていない。

(c) 防ぐには:

  • Bisheng を社内採用する前に 法務 / 情シスに必ず相談(データ越境の問題もある)
  • 採用するなら VPC 内 + 認証強制 + 通信ログ保管を最低条件に

📌 技術メモ: OX advisory 内に 10+ Critical CVE。


#9. LangFlow の古いバージョン(ノーコード AI ツール)

(a) 何がマズいか:
Web 画面に「コードを試す」エンドポイントがあって、ログインしていなくてもそこに Python コードを投げると実行される穴があった。

(b) 例えると:
**「ご自由にお使いください」と置いてある自販機の隣に「中身を入れ替えるボタン」**があって、誰でも中身を勝手に差し替えられる状態。

(c) 防ぐには:

  • LangFlow を最新版に
  • 絶対に公開 IP で立ち上げない。開発時も 自分の PC(localhost)の中だけで使う

📌 技術メモ: CVE-2025-3248(CVSS 9.8)等、複数 CVE。/validate/code エンドポイントが主な穴。


#10. Upsonic(AI エージェントフレームワーク)

(a) 何がマズいか:
**Flowise(#7)と同じ「ホワイトリストの引数チェック漏れ」**問題。-c などのオプション経由でホワイトリストをすり抜けて好きなコマンドを実行できる。

(b) 例えると:
Flowise と同じ。警備員がバッグの外側だけ見て中を確認しないパターン。

(c) 防ぐには:

  • Upsonic を最新版(fix 後)に
  • そもそも Web 画面に認証をかける

📌 技術メモ: OX advisory 内。


3. 「10 選」に入りきらなかった注意リスト

実は 危ない MCP / AI フレームワークは他にも結構あります。代表的なものを表で:

ソフト 状況
Langchain-Chatchat OX advisory 時点で 未パッチとの報告
DocsGPT / GPT Researcher / Agent Zero / LettaAI OX advisory で言及、修正版を必ず使う
LMDeploy(中国系 LLM 推論サーバ) CVE 開示から 12 時間半で実際に攻撃された記録あり

4. 「自分で MCP サーバーを評価する」7 つのチェックポイント

新しい MCP を社内に追加するときの 判断材料。情シスに提出する資料にもなります。

# 質問 「OK」と言える答え
1 どうやって AI と通信する? 公式 README に「ローカル限定」と書いてある(外から接続できない設計)
2 デフォルトでどこからアクセスできる? 「自分の PC の中(127.0.0.1)から」が答え。「外から(0.0.0.0)」だと NG
3 デフォルトで認証が有効? 「最初から有効」。「設定しないと無効」だと PraisonAI と同じ轍
4 AI 子プロセスに渡す環境変数の制御は? 「明示的に許可した変数だけ」が OK。「全部継承」だと API キー漏洩リスク
5 コマンド許可リストの引数チェックは? 「コマンド全体(引数まで)」を見ている
6 DB 接続するなら、接続ユーザーの権限は? 「読み取り専用 + 指定テーブルのみ」
7 過去 90 日の脆弱性件数は? 0 件が理想、1-2 件で全部修正済なら許容、5 件以上だと見送り

4.1 自動チェッカー(aigis)

aigis v1.1.4 では、mcp.json というファイル(あなたの PC で AI が使う MCP の一覧)を 自動でチェックする機能を試験的にサポートしてます。

$ aigis scan-mcp ~/.config/claude/mcp.json
[OK]   github-mcp(Anthropic 公式、既知の重大な脆弱性なし)
[WARN] doris-mcp 0.5.4 — CVE-2025-66335 該当。0.6.1 以降にアップデートしてください
[FAIL] mcpjam-inspector 1.4.1 — CVE-2026-23744(CVSS 9.8)該当
[FAIL] flowise 1.x — OX advisory のホワイトリスト回避族に該当

ターミナルで 1 行実行するだけで、危ない MCP を使ってないか確認できます。


5. 「比較的安全」と現時点で言える MCP

⚠️ **「安全」=「現時点で重大な脆弱性が見つかっていない」**だけです。明日新しい脆弱性が見つかる可能性は常にあります。

MCP 提供元 安心ポイント
GitHub MCP Anthropic 公式 GitHub の認証を使う・スコープ制御できる
Filesystem MCP Anthropic 公式 ローカル限定、見せるディレクトリを明示できる
Slack MCP Anthropic 公式 Slack の OAuth を使う・bot トークン経由
PostgreSQL MCP(公式) Anthropic 公式 パラメータバインド対応・読み取り専用接続を推奨

それでもやるべき設定:

  • すべての MCP は 最小権限のユーザーで接続する(読み取り専用 / 限定スコープ)
  • mcp.jsonリポジトリ管理 + PR 必須にする
  • 可能なら aigis scan-mcp を CI に組み込む

6. まとめ — 上司や情シスに 30 秒で説明するなら

MCP サーバーは『AI に渡す合鍵』のようなもので、便利だけど作りが甘いものを入れると外から家を覗かれる事故になります。社内では mcp.json を PR レビュー必須にして、既知の重大脆弱性がある MCP は禁止リストにしてます。新規追加は 7 項目のチェックを通過したものだけを承認、ツール(aigis)で自動スキャンもかけてます」


7. 関連記事


5 分で試せる aigis のクイックスタート

pip install pyaigis
from pyaigis import AigisGuard

guard = AigisGuard(detectors="all", pii_redaction=True, decision_log=True)

# 危ない MCP に向かう Claude のツール呼び出しを scan
result = guard.scan_tool_call(
    prompt="このリポジトリの全 SQL を Doris MCP 経由で実行して結果まとめて",
    tool="mcp.doris.query",
    args={"sql": "SELECT * FROM users WHERE id = 1 OR 1=1 --"},
)
print(result.decision)   # 'block'(=このリクエストは止めました、の意味)
print(result.rule_id)    # 'mcp_db_sql_injection_proxy'(=DBへのSQL注入を検出した、の意味)
print(result.score)      # 88(=危険度 0-100 で 88)

mcp.json を渡すと、入っている MCP の既知脆弱性をスキャンしてくれます:

aigis scan-mcp ~/.config/claude/mcp.json

良かったら LGTM / Stock いただけると、次回「Claude Code を社内導入したら最初の 30 日でやるべきセキュリティ点検」も気合入れて書きます 🙏


📝 用語ミニ辞典(出てきた言葉、ちょっとだけ補足)

用語 やさしい説明
MCP(Model Context Protocol) AI に「外の道具を使う権利」を渡すための共通仕様
STDIO transport AI とツールが「OS のコマンドライン」経由で会話する仕組み(一番危ない設計)
RCE(Remote Code Execution) 外部の攻撃者があなたの PC で 好きなコマンドを実行できる状態
CVE-XXXX-XXXX 個別の脆弱性に振られる「世界共通の ID 番号」。Google で検索すると詳細が出てくる
CVSS 脆弱性の「危険度スコア」。10 段階で 9 以上は 「即パッチ」レベル
SQL Injection データベースへの質問文に 悪意ある命令を仕込む攻撃
Allowlist(ホワイトリスト) 「許可リストに載ってるものだけ通す」方式。引数まで見ないと #7 #10 のように破られる
Prompt Injection AI に渡すドキュメントの中に 隠れた命令を書いておく攻撃

📚 参考文献(CVE 検証ソース)

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?