速報

ギフティでeギフト不正発行|約5億5千万円の損失見込みと利用者への影響

CATEGORY

mcp-server-gitの境界回避を修正|2026.10.28更新と複数ツールの点検

※本ページのリンクにはプロモーションが含まれています。

許可されたGitリポジトリ内の参照が境界外の別リポジトリへ向く様子を示す概念イラスト

この記事のポイント

深刻度

MEDIUM5.3

対象
mcp-server-git 2026.10.28未満
悪用状況
不明
推奨対応
mcp-server-gitを2026.10.28以上へ更新してクライアントを再起動し、ファイルシステムMCPとの共有書き込み領域、OS権限、マウント範囲を確認します。更新後は境界外への拒否と正規のlinked worktreeの両方を検証し、影響版の利用履歴を調査します。
公表日

目次

(MCP)の公式リファレンスサーバー「mcp-server-git」で、`--repository`により指定したの境界を回避できる問題が公表されました。影響を受けるのは2026.10.28未満で、修正版は2026.10.28です。やコーディング支援へGit操作を許可している運用者は、実行中のパッケージ版を確認して更新し、同じ作業領域へ書き込める別のMCPツールがないかも点検してください。

本稿は2026年10月29日に、modelcontextprotocol/serversの公式セキュリティアドバイザリ、PyPIのmcp-server-git 2026.10.28配布ページ、公式READMEを確認したニュースです。公開日は10月28日、報告日は10月27日です。は割り当てられていないため、存在しない番号を補いません。

スポンサーリンク

対象は2026.10.28未満、修正版は2026.10.28

公式は影響版を2026.10.28未満、修正版を2026.10.28としています。確認された影響版は2026.10.19です。PyPIでは2026.10.28のソース配布物とwheelが10月28日に公開され、からの来歴も表示されています。Gitリポジトリにあるコードだけでなく、実際にクライアント設定から起動されるパッケージの版を確認する必要があります。

`uvx`を使う設定では、ローカルへ通常の形でインストールしていなくても、起動時に取得した版が動きます。`pip`や仮想環境、から起動する構成もあります。設定ファイルのコマンド名だけで更新済みと判断せず、起動ログ、、コンテナの記録、実行環境でのパッケージ情報のいずれかから2026.10.28以上であることを確かめます。

python -m pip show mcp-server-git
python -m pip install --upgrade "mcp-server-git>=2026.10.28"

上記はpip環境の確認例です。`uvx`、`pipx`、コンテナ、デスクトップ製品の組み込み設定では、その配布・固定方法に合わせて更新します。更新後はMCPクライアントを再起動し、古いプロセスが残っていないか確認してください。パッケージをダウンロードしただけでは、実行中のサーバーは置き換わりません。

文字列上は内側でもGitが外側を選ぶ

`--repository `は、mcp-server-gitの操作対象を指定したリポジトリへ制限する設定です。問題の根は、サーバーが利用者から渡されたパスを正規化し、そのパスが許可リポジトリの内側にあることを確認した後で、GitPythonが別の情報を解釈する点にあります。検査した対象と、実際に開いたGitリポジトリの実体が一致しない場合がありました。

Gitでは、作業ツリーの`.git`がディレクトリとは限りません。リンクされたワークツリーや分離したGitディレクトリでは、`.git`ファイルに`gitdir:`として実際のGitディレクトリへの参照を記録できます。今回の問題では、許可リポジトリ内の入れ子ディレクトリ自体は境界検査を通りますが、その中の`.git`ファイルをGitPythonが後からたどり、許可範囲外のリポジトリを開けました。ファイルシステムのシンボリックリンクだけを解決する検査では、このGit固有の参照を捉えられませんでした。

公式の確認では、範囲外のパスを直接`git_show`へ渡した場合は拒否された一方、入れ子の`.git`参照を経由すると、外部リポジトリのコミット済みファイルを読めました。また`git_create_branch`で外部リポジトリにを作成できました。確認された影響は、コミット済み情報の開示と参照の変更です。アドバイザリは任意のホストファイル書き込みやコード実行を主張していません。

スポンサーリンク

単独の認証不要リモート攻撃ではない

3.1は5.3で、ベクトルはAV:L/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:Nです。この数値だけを見て、ネットワークから誰でも直ちに侵入できる問題と説明するのは不正確です。攻撃には、制限付きmcp-server-gitのツールを呼べること、許可リポジトリ内へ入れ子のディレクトリと`.git`ファイルを置けること、サーバープロセスが読める外部リポジトリのパスを特定または推測できることが必要です。

現実的な条件として公式資料が挙げるのは、同じ許可ディレクトリへ書き込めるファイルシステムMCPサーバーも利用できる構成です。Gitツール単体に`.git`ファイルを作る機能がなくても、別ツールが配置し、Gitツールが参照をたどれば、二つの権限が連鎖します。による悪用が確認されたという発表ではありませんが、信頼できないリポジトリ内容や外部文書がエージェントのツール選択へ影響する構成では、複数ツールの合成を脅威モデルへ含める必要があります。

更新だけでなくマウントとOS権限を確認する

更新を最優先としたうえで、mcp-server-gitのプロセスから見えるファイルシステムを確認します。`--repository`はアプリケーション上の境界ですが、プロセスのOS権限やコンテナのマウント範囲まで自動的に縮めるものではありません。プロセスが他の機密リポジトリを読めなければ、境界回避後に到達できる対象も減ります。

  • Gitサーバーへ対象リポジトリだけを読み書き可能な形で公開し、ホームディレクトリや他案件の親ディレクトリを丸ごとマウントしない。
  • 鍵、資格情報、パッケージ公開用トークンを、Git操作だけを行うプロセスへ不要に渡さない。
  • ファイルシステムMCPの許可ディレクトリとGit MCPの作業領域が重なる場合、`.git`ファイルを新規作成できる主体と必要性を確認する。
  • 複数の顧客・案件を同じOSユーザーと同じ長寿命プロセスで扱わず、作業単位で資格情報とマウントを分ける。

正規のGitワークツリーやサブモジュールでも`.git`ファイルを使うため、すべてを一律削除する対策は既存の開発構成を壊す可能性があります。公式アドバイザリも、単純にGitディレクトリの物理パスが許可ツリー内かを見るだけでは、正当なlinked worktreeを壊し得ると説明しています。運用側はを利用し、その上で自組織が許可するワークツリー関係を明示します。

スポンサーリンク

更新後は拒否と正規操作を両方試す

検証環境では、第三者のリポジトリを対象にせず、すべて自組織が管理するダミーリポジトリを使います。許可用と範囲外用の二つを用意し、通常の許可リポジトリで`git_status`や読み取り操作が成功すること、範囲外のパスが拒否されることを確認します。さらに、許可領域内へ作った入れ子の`.git`参照から範囲外へ到達できないことを確認します。

拒否試験だけでは不十分です。正規のlinked worktreeや、組織が利用を認めるサブモジュール構成がある場合は、それらが更新後も期待どおり動くかを別に試します。境界を強くした結果、必要なビルドやレビューが失敗し、利用者が`--repository`を外して復旧する状況を避けるためです。失敗時は境界設定を無効化せず、修正版の仕様と自社のリポジトリ構成を突き合わせます。

既存環境の調査ではGit参照と操作履歴を分けて見る

影響版を、信頼度の低いクライアントや複数ツールから到達できる状態で運用していた場合は、更新とは別に利用済み環境を調べます。許可領域内の通常ファイルだけでなく、`.git`という名前の通常ファイル、そこに記載された`gitdir:`の参照先、linked worktreeやサブモジュールとして正規に作られたものかを確認します。見つけたことだけで侵害と断定せず、作成時刻、作成主体、タスク記録と対応付けます。

外部リポジトリ側では、見覚えのないブランチ・タグ・参照、コミットやインデックスの変更、MCPプロセスの実行時間帯に行われた読み取りやコマンドを確認します。Git自体の履歴にすべての読み取りが残るとは限らないため、MCPクライアントのツール呼び出し記録、プロセス監査、ファイルアクセス監視があれば併用します。ログがない期間を「操作なし」とは断定しません。

がコミット履歴に含まれ、影響版のプロセスから到達可能だった場合は、実際の取得が確認できなくても、露出可能性と業務影響に応じて失効・差し替えを判断します。リポジトリから削除するだけでは、取得済みの資格情報を無効化できません。範囲外への書き込みが見つかった場合は、変更内容を保全してから、信頼できる基準点と照合します。

設定説明と実際の実行境界を一致させる

今回の問題は、`--repository`という設定名が示す境界と、Gitが最終的に開いた実体を同一視できないことを示しました。MCPツールの説明文・・権限差分を継続的に確認する方法は、MCPツール更新後の差分レビュー記事で整理しています。今回追加すべき確認は、入力文字列だけでなく、ライブラリが解決した後の対象をすることです。

運用では、モデルが選んだ`repo_path`をそのまま信頼せず、実行サーバーが許可済みリポジトリIDへ変換し、OS権限とマウントでも対象を絞ります。ファイル書き込み、Git操作、シェル実行を同時に許可する場合は、各ツールを単独で評価するだけでなく、前のツールが作った状態を次のツールがどう解釈するかを検証します。更新、境界の縮小、拒否試験、利用済み環境の調査を分けて完了させることが、今回の対応です。

出典・一次情報

本記事は以下の公開情報をもとに作成しています。最新の状況は各リンク先で確認してください。

この記事を書いた人

Ryohei

Webエンジニア / アプリ開発者 / 技術ブログ運営者

福岡のWeb制作会社に勤務するWebエンジニアです。10年以上にわたりWeb制作・開発に携わり、ヒアリングや進行管理から、コーディング、CMSの構築、システム開発、サーバーの構築・保守・運用まで、Webサイト制作の工程を幅広く担当しています。Webサイトは、これまでに100以上の構築・保守を手がけてきました。

個人でもWebサイトの制作・改修やWebアプリの開発・運用を行い、AIを活用した開発にも取り組んでいます。近年はWebセキュリティにも注力しています。

2015年から技術メディア「Into the Program」を運営し、実務や開発で得た知識をもとに、プログラミングの実装方法やWebサイトの運用・セキュリティ情報を発信しています。

主な分野
Webサイト構築・保守・運用 / HTML/CSS / JavaScript / PHP / WordPress / サーバー構築・保守・運用 / アプリ開発 / セキュリティ対策
資格・試験合格
情報セキュリティマネジメント試験
基本情報技術者試験
AWS認定ソリューションアーキテクト アソシエイト
PHP8技術者認定ウィザード
メディア運営
2015年〜

記事の作成・更新について

セキュリティ記事は、ベンダーの公式アドバイザリやCVE・JVNなどの一次情報を参照し、出典と情報確認日を記載します。実環境での検証を行った場合は、その環境と確認範囲を明示します。重要な追加情報や誤りを把握した場合は、内容を確認して追記・訂正します。

あわせて確認したい対策・解説

ほかの脆弱性

関連する記事

おすすめの書籍

キーワードから探す

スポンサーリンク

認可

認証で確認した利用者に、どの情報や機能へのアクセスを許すかを決める仕組み。

詳しく見る

スキーマ

データの構造や型、決まりごとを定義したもの。データベースのテーブルの設計や、JSONの形式の定義などに使う。

詳しく見る

シークレット

パスワードやAPIキー、秘密鍵など、他人に知られてはいけない値。コードに書かず専用の仕組みで管理する。

詳しく見る

パッチ

ソフトウェアの不具合や脆弱性を修正するための更新プログラム。適用することで既知の問題を解消する。

詳しく見る

クラウド

サーバーやソフトウェアを自分で持たずに、インターネット経由で必要な分だけ利用する形態。AWSやGoogle Cloudなど。

詳しく見る

SSH

ネットワーク越しにサーバーへ安全に接続し、操作するための仕組み。通信が暗号化され、鍵でログインできる。

詳しく見る

プロンプトインジェクション

生成AIへの入力に悪意のある指示を紛れ込ませ、本来のルールを無視させたり、意図しない動作をさせたりする攻撃。

詳しく見る

CVSS

脆弱性の深刻度を0.0〜10.0の数値で評価する共通の基準。数値が大きいほど深刻度が高い。

詳しく見る

ブランチ

Gitなどで、作業の流れを枝分かれさせたもの。ほかの作業に影響を与えずに、機能の追加や修正を並行して進められる。

詳しく見る

ビルド

ソースコードなどから、実際に動かしたり配布したりできる形の成果物を作る作業。

詳しく見る

ロックファイル

パッケージマネージャーが、実際に入れた依存パッケージのバージョンを記録するファイル。package-lock.jsonなど。

詳しく見る

コンテナイメージ

アプリケーションと、動かすのに必要なOSの部品やライブラリ、設定をひとまとめにしたもの。コンテナを起動する元になる。

詳しく見る

GitHub Actions

GitHubに組み込まれたCI/CDの仕組み。リポジトリへの変更などをきっかけに、テストやビルド、デプロイを自動で実行する。

詳しく見る

アドバイザリ

開発元や公的機関が公表する、脆弱性の内容・影響を受けるバージョン・対処方法などをまとめた情報。

詳しく見る

CVE

公開された脆弱性に付けられる世界共通の識別番号。「CVE-2026-12345」のように年と連番で表す。

詳しく見る

脆弱性

ソフトウェアや設定の不備のうち、攻撃者に悪用されると情報漏えいや不正操作などにつながる弱点。

詳しく見る

AIエージェント

目標を与えると、計画を立て、ツールを使いながら作業を自律的に進めるAIの仕組み。

詳しく見る

リポジトリ

ソースコードなどのファイルと、その変更の履歴をまとめて保管する場所。Gitで管理し、GitHubなどで共有する。

詳しく見る

Git

ファイルの変更の履歴を記録・管理するバージョン管理システム。GitHubなどと組み合わせてチームで開発する。

詳しく見る

MCP

AIアプリケーションと外部のツールやデータをつなぐための共通の仕組み(プロトコル)。Anthropicが公開した。

詳しく見る