nginx-ui 脆弱性 CVE-2026-33032(通称「MCPwn」、CVSS 9.8)が、Nginx管理パネル nginx-ui に搭載されたMCP(Model Context Protocol)インターフェースを起点に発見・公表されました。ここで終わらず、nginx-uiは2026年7月17日に11件、2026年8月12日に14件と、半年の間に計25件超のセキュリティアドバイザリを立て続けに公開しています。多くがMCP機能に関連する認証バイパス・検証漏れです。本記事では、この一連の脆弱性連鎖を公式GitHub Security Advisoryと海外報道を一次ソースに時系列で整理し、読者が自分の環境で今すぐ実行できる確認コマンドを提示します。攻撃の再現手順やPoCそのものは扱いません。

nginx-uiのダッシュボード画面。Nginxの設定・証明書・ログを1画面で管理できるWeb UI
nginx-uiの管理ダッシュボード。今回の一連の脆弱性は、この管理画面が持つMCPインターフェース(AIエージェント連携機能)が起点になっている(出典: 0xJacky/nginx-ui 公式README)。

30秒でわかる|この記事のポイント

正体:Nginx用のセルフホスト型Web管理パネルnginx-ui(Go+Vue)。MCP(AIエージェント連携)機能を搭載
核心:MCPwn(CVE-2026-33032、CVSS9.8)は/mcp_messageのIPホワイトリスト既定値が空=実質全許可という設計不備
その後:2026-07-17に11件、2026-08-12に14件のアドバイザリが追加公開。多くがMCP設定検証の抜け・2FA迂回
特異点:node secret問題(GHSA-w8p3-r29g-jg3p)は最新版へ更新するだけでは直らない。過去にv2.3.6以前を経由した環境は手動ローテーションが必須
実体:★11,412・フォーク860・AGPL-3.0。海外報道では2,600以上のインスタンスが影響を受けたと言及されている

同種の「AI連携機能の実装漏れが認証・認可の突破口になった」構図を体系的に押さえたい場合は、サプライチェーンセキュリティ2026|攻撃手法・防御ツール・実践チェックリストを合わせて読んでください。本記事はそのうち「1つのOSSでMCP機能が半年にわたり繰り返し攻撃の起点になった」という縦の時系列に絞った解説です。

nginx-uiとは:MCPインターフェースを持つNginx管理パネル

nginx-ui(開発元 0xJacky・GitHubリポジトリ 0xJacky/nginx-ui)は、Go製バックエンドとVue製フロントエンドで構成される、Nginxの設定・証明書・アクセスログ・ドメインをWeb UIから一括管理できるセルフホスト型の管理パネルです。単一バイナリで配布され、Dockerでの運用例も広く見られます。GitHub API実測(2026-08-15時点)で★11,412・フォーク860、ライセンスはAGPL-3.0(GitHub APIの license.spdx_id とREADMEバッジの表記が一致)です。直近のpushは記事執筆前日にあたり、リリースも活発で最新版はv2.5.9(2026-08-14公開)と、現役で開発が続くプロジェクトです。

開発体制はREADMEの「developed by」欄によれば 0xJackyHintayAkino の3名体制と推測されます(企業スポンサーの明記は確認できていません)。バス係数(コミット比率)までは本記事では深追いしていません。主眼はOSSとしての実体評価ではなく、次章から扱う脆弱性連鎖そのものだからです。

「nginx UI セキュリティ」を調べる読者の多くは、Nginx本体(コアのWebサーバー)のCVEとの混同に注意が必要です。nginx-uiはNginx本体を管理するための別プロダクトであり、本記事で扱う一連のアドバイザリはすべてnginx-ui側の実装(MCPインターフェース・バックアップ機能等)に起因します。Nginx本体そのもののRCE・設定注入系のCVEとは無関係です。

nginx-uiが今回の一連の事案で焦点になっているのは、AIエージェント向けに実装されたMCP(Model Context Protocol)インターフェースです。公式READMEは「MCP (Model Context Protocol) provides special interfaces for AI agents to interact with Nginx UI」と明記しており、AIエージェント・LLMクライアントがnginx-uiの設定操作を直接呼び出せる機能として位置づけられています。Nginxの設定ファイルという、サーバー全体の挙動を左右するリソースをAIエージェントが操作できる経路が用意されている、という点が、この後の脆弱性連鎖を理解する上での前提になります。

nginx-uiの脆弱性連鎖の核心は「バグが1つあった」ではなく、「AI連携のために新設したMCPエンドポイント群が、既存の認証・検証レイヤーの外側に置かれていた」という構造が、半年の間に何度も形を変えて表面化したことです。

nginx-ui 脆弱性 の時系列:半年で4段階の連鎖

日付はGitHub Security Advisories・Releasesの公表日(一次ソース)に基づきます。2026年3月から8月にかけて、大きく4段階の連鎖が確認できます。

nginx-ui MCP脆弱性の時系列図。2026年3月にCVE-2026-27944とMCPwn(CVE-2026-33032)、2026年7月17日に11件のアドバイザリ、2026年8月12日に14件のアドバイザリが公開される4段階の流れ
nginx-uiで2026年3月〜8月に公開された関連アドバイザリの時系列。MCP機能に関連するものが繰り返し現れている。
時期(公表日) 出来事
2026年3月 CVE-2026-27944 公開。バックアップ機能に関連する鍵の漏洩
2026年3月〜4月 CVE-2026-33032「MCPwn」発見・2026-03-15にv2.3.4でパッチ・2026-04-15に詳細公表(CVSS9.8)
2026-07-17 アドバイザリ11件を一括公開。MCP設定検証バイパス系が中心
2026-08-12 アドバイザリ14件を一括公開。バックアップ復元RCE・node secretの恒久的な問題を含む

この4段階を一本の記事に詰め込みすぎないよう、本記事では「MCP機能が直接の原因になったもの」を主役に据え、それ以外(バックアップ鍵漏洩やバックアップ復元RCEなど)は「同じ半年間に何が起きていたか」という文脈として簡潔に触れるにとどめます。

nginx-ui MCP脆弱性連鎖を数字で示す図。MCPwnのCVSSスコア9.8、2026年7〜8月の追加アドバイザリ25件超、報道で言及された影響インスタンス数2,600以上
nginx-ui MCP脆弱性連鎖の主要な数字。CVSSスコアは公式GHSA、件数は公式Security Advisories、インスタンス数は海外報道の言及値(出典は本文・参照ソース参照)。

MCPwn(CVE-2026-33032)の核心:IPホワイトリスト既定値が空だった

MCPwnの本体は、nginx-uiが実装するMCPメッセージング用エンドポイント /mcp_messageIPホワイトリストの既定値が空配列だったという設計不備です。IPホワイトリストは本来「許可したIPアドレスからのみアクセスを受け付ける」ための制御ですが、既定値が空であることは、実装上「制限なし=全許可」として扱われてしまうことを意味します。結果として、認証情報を持たない攻撃者が、ネットワーク的に到達できる位置にいるだけで /mcp_message エンドポイントを呼び出せる状態になっていました。

flowchart TD A["攻撃者がネットワーク的に到達"] --> B["/mcp_message へリクエスト"] B --> C{"IPホワイトリスト
設定は空か?"} C -- 空 既定値のまま --> D["実質フィルタなし
= 全許可として通過"] C -- 明示的に設定済み --> E["許可リスト外は拒否"] D --> F["MCP経由でnginx設定を操作"] F --> G["最終的にサーバー全体を掌握
CVE-2026-33032 CVSS9.8"] style G fill:#ffe3e3,stroke:#c92a2a,stroke-width:2px style E fill:#d9f5ec,stroke:#0b7a63,stroke-width:2px

海外報道(The Hacker News・eSentire)は、このnginx-ui 認証バイパスが実際に悪用され、Nginxサーバー全体の乗っ取りに至る経路として報告されたことを伝えています。同報道では「2,600以上のインスタンスが影響を受けた」という言及がありますが、これはGitHub Security Advisory本体に記載された確定値ではなく報道側の言及であるため、本記事でも出典を明示した参考情報として扱います。

パッチは2026-03-15公開のv2.3.4で取り込まれ、詳細な技術情報は約1か月後の2026-04-15に公表されています。CVE番号や詳細が公になる前に、既に修正版が存在していたという時間差は、日常的に最新版へ追従する運用がどれだけ有効かを示す一例です。

2026-07-17・08-12の追加アドバイザリで何が起きたか

MCPwnの公表から約3か月後の2026-07-17、nginx-uiは11件のアドバイザリを一括公開しました。中心となるのはMCP設定検証のバイパス系です。代表例として、nginx_config_add というMCPツールだけが、他のMCP関連ツールが呼んでいる検証関数を呼び出していなかった実装漏れ(GHSA-76pm-mq2q-9gcr、CVSS8.8)があります。同じ検証ロジックを共有しているはずのツール群のうち、1つだけが呼び出しを欠いていたという、実装レベルの取りこぼしです。

さらに、2要素認証(OTP)のセキュアセッションによるステップアップ認証を、MCP経由でのリクエストであれば迂回できてしまう不備(GHSA-vc32-4gwf-77xp、CVSS8.1)も同時期に報告されています。通常のWeb UI経由では2FAのステップアップが要求される操作が、MCPエンドポイント経由では同じチェックを通らずに実行できてしまう、という経路の違いが原因です。

続く2026-08-12には、さらに14件のアドバイザリが一括公開されました。バックアップ復元機能に関連するRCEに加え、本記事で最も注意が必要なnode secret問題(GHSA-w8p3-r29g-jg3p)がここに含まれます。node secretはnginx-uiのノード間通信やセッションに関わる秘密鍵で、過去のバージョン(v2.3.6以前)でこの値が意図せず露出しうる経路があったとされています。ここで重要なのは、この問題はv2.5.9まで更新しても自動的には解消されないという点です。一度その経路を経由した環境では、シークレットの値そのものを手動でローテーションしない限り、古い値が生き続けてしまいます。「最新版に上げれば安全」という単純化は、このnode secret問題に限っては当てはまりません。

読者の3つの問いへの答え
何が起きた:MCP機能の実装漏れ(IPホワイトリスト既定値・検証関数の呼び出し漏れ・2FA迂回経路)が、半年の間に複数回・別の形で表面化した。② 何が原因:AI連携用に新設したMCPエンドポイント群が、既存の認証・検証レイヤーの外側に置かれがちだったこと。③ 何をすればよいか:バージョン更新に加え、node secretのローテーションとMCPエンドポイントの外部公開有無を個別に確認する。

自分のnginx-ui環境を確認する:バージョン・node secret・MCPエンドポイント

nginx-ui自環境確認の3ステップ図。バージョン確認、node secret確認、MCPエンドポイント公開確認の順に実施する
自環境の確認は3段階で行う。特にnode secretの確認は、アップグレード履歴に関わらず一度は実施する価値がある。

以下は公開情報から再現可能な確認コマンドです。手元に稼働中のnginx-uiがあれば、それに対して実行することを想定しています。

手順1:稼働中のバージョンを確認する

# Docker運用の場合、使用中のイメージタグを確認
docker inspect <container> --format ''

# バージョンAPIが存在する場合(エンドポイントの有無は公式ドキュメントで個別に確認)
curl -s http://<host>:<port>/api/version

v2.3.4未満であればMCPwn(CVE-2026-33032)の影響範囲です。v2.5.9(本記事執筆時点の最新版)まで更新することを推奨します。

手順2:node secretローテーション未実施の兆候を確認する(最重要)

# app.ini(Docker運用では通常コンテナ内、バイナリ直接運用ではインストールディレクトリ配下)の
# [node] セクションを確認する。デプロイ方式でパスが異なる点に注意
grep -A2 "^\[node\]" app.ini

# 過去のアクセスログに不審な POST /api/users が無いか確認する
grep "POST /api/users" access.log

このシークレットは、過去に一度でもv2.3.6以前のバージョンを経由した環境では、v2.5.9へ更新した後も値そのものが自動的には変わりません。過去バックアップや旧コンテナのapp.iniと突き合わせ、値が変わっていないようであれば手動でのローテーションが必要と判断してください。

手順3:MCPエンドポイントの外部公開有無を確認する

# 自分の環境に対してのみ実行する(第三者ホストへは絶対に実行しない)
curl -sI http://<host>:<port>/mcp_message

認証なしで200番台のレスポンスが返る場合は要対応、401/403等で拒否される場合は現在の設定では到達経路が塞がれていると判断できます。ただし、これはあくまで自環境の疎通確認であり、リバースプロキシやファイアウォールの設定と合わせて総合的に判断してください。

判定項目 状態 判定
バージョン v2.3.4未満 MCPwnの影響範囲・要更新
バージョン v2.3.4以上 MCPwn自体は対応済み
node secret v2.3.6以前を経由・未ローテーション 要対応(更新だけでは直らない)
node secret 一度もv2.3.6以前を経由していない 対象外
MCPエンドポイント 認証なしで200番台が返る 要対応
MCPエンドポイント 401/403等で拒否される 現状の設定では到達経路なし

nginx-ui 脆弱性 の対策:アップグレードだけでは終わらないnode secretローテーション

最優先はv2.5.9(本記事執筆時点の最新版)への更新です。MCPwnを含む2026年3月〜8月の一連の修正はすべて取り込まれています。

# Docker運用の場合、使用中のイメージを最新タグへ更新する
docker compose pull
docker compose up -d

# 更新後は必ずバージョンを実測で確認する
docker inspect <container> --format ''

更新に加えて、以下の対応を個別に検討してください。

node secretのローテーション:過去にv2.3.6以前を経由した環境では、更新後も手動でのシークレット再生成が必須。設定ファイルの該当箇所を書き換え、サービスを再起動する
MCPエンドポイントの露出を絞る:外部公開が不要であれば、リバースプロキシやファイアウォールでMCP関連エンドポイントへの到達を内部ネットワークに限定する
IPホワイトリストを明示的に設定する:既定値の空配列に依存せず、許可するIPアドレスを明示的に登録する運用に切り替える
過去のアクセスログを遡って確認する:MCPエンドポイントを外部公開した状態で稼働していた期間があるなら、不審なリクエストが記録されていないか確認しておく

自分でMCPサーバーを実装・運用している場合、nginx-uiの事案は棚卸しの材料になります。確認しておきたい観点は、①新しく追加したMCPツールが、既存の検証・認証ロジックを本当に呼び出しているか(今回のGHSA-76pm-mq2q-9gcr のように、1つのツールだけ呼び出しを欠くケースがある)、②ネットワーク制御の既定値が「拒否」ではなく「許可」側に倒れていないか(MCPwnの根本原因)、③秘密鍵・シークレットの再生成手段が、更新プロセスとは別に用意されているか(node secret問題のように、更新だけでは解決しない場合がある)の3点です。

注意:本記事のCVSSスコア・バージョン範囲は2026-08-15時点で確認できた公式GitHub Security Advisoryの内容に基づきます。nginx-uiは現在も活発にアドバイザリを公開しているため、対応前に最新のアドバイザリ一覧を確認してください。

まとめ:AI連携機能が広げた半年間の攻撃面

nginx-uiのMCP機能を巡る一連の事案は、単発のCVEではなく、AIエージェント連携のために新設した機能群が、半年にわたり形を変えて攻撃面になり続けたという点で特徴的です。IPホワイトリストの既定値、検証関数の呼び出し漏れ、2FA迂回経路、そしてアップグレードだけでは解決しないnode secret問題——いずれも「新しいエンドポイントが既存の防御レイヤーの外側に置かれた」という共通の構造から生まれています。

MCP機能が認証・認可の突破口になった事例は、nginx-ui固有の現象ではありません。同種の構図としては、SiYuan 脆弱性 CVE-2026-66012|CVSS10.0のMCP認可漏れで31ツールが未認証到達Flowise 脆弱性CVE-2026-40933|CustomMCPで再燃したRCE、CVSS9.9の内実AWS Kiro 脆弱性CVE-2026-10591とは|MCP設定書き換えRCEを2系統の報告から検証でも扱っています。自作・導入しているMCPサーバーがあるなら、「新しいツールが既存の検証ロジックを本当に呼び出しているか」を棚卸しする価値があります。

以下は、同時期に報告されたMCP絡みのRCE・認証バイパス事例の横並びです(SiYuanは同クラスタの既存記事として参考掲載)。

事例 OSS CVE/GHSA CVSS 特徴
MCPwn nginx-ui CVE-2026-33032 9.8 /mcp_messageのIPホワイトリスト既定値が空=全許可
MCP設定検証バイパス nginx-ui GHSA-76pm-mq2q-9gcr 8.8 nginx_config_addだけ検証関数を呼んでいなかった実装漏れ
MCP経由2FA迂回 nginx-ui GHSA-vc32-4gwf-77xp 8.1 OTPセキュアセッションのステップアップをMCP経由で回避可能
(参考)MCP認可漏れ SiYuan CVE-2026-66012 10.0 既存記事あり(上記リンク参照)
node secret問題の誤解と実際に必要な対応を対比した図。最新版に上げれば安全という誤解に対し、手動ローテーション・ログ確認・MCPエンドポイント公開確認が実際に必要
node secret問題は「最新版に上げれば安全」という単純化が当てはまらない特異なケース。更新とは別に手動対応が必要。

参照ソース

0xJacky/nginx-ui Security Advisories(公式・一次ソース) — CVE-2026-33032含む全アドバイザリの一次情報
Actively Exploited nginx-ui Flaw (CVE-2026-33032) Enables Full Nginx Server Takeover - The Hacker News — MCPwnの発見・公表時系列とCVSSスコア
Nginx-ui Authentication Bypass Vulnerability CVE-2026-33032 Exploited - eSentire — 悪用状況の補足
JPCERT/CC Weekly Report 2026-03-18 — 日本語での唯一の既存言及(短信レベル。詳細記事が無いことの裏付け)