【CVE-2026-27944】Nginx UI の認証バイパス脆弱性を解説と対応方法

⚠️ 概要

CVSSスコア 9.8(Critical)・緊急対応が必要です

Nginx UI 2.3.3 未満に、未認証でバックアップをダウンロードでき、かつその復号鍵まで取得できてしまう深刻な脆弱性が発見されました。
悪用されると、サーバーの SSL 秘密鍵・管理者認証情報・Nginx 設定ファイルなどを第三者に完全に奪われます。
現時点で実証 PoC が公開されており、放置は厳禁です。


この脆弱性について

項目 内容
CVE-ID CVE-2026-27944
CVSSスコア 9.8(Critical)
攻撃ベクトル ネットワーク(認証不要・ユーザー操作不要)
対象ソフトウェア Nginx UI 2.3.3 未満
公開日 2026年4月
対応バージョン Nginx UI v2.3.3
ステータス パッチあり・PoC 公開済み

Nginx UI は、Nginx の設定・証明書管理・ログ確認をブラウザ上で行える OSS の Web UI です。
企業の内部サーバーや個人の VPS 環境に広く使われています。


原因

問題は /api/backup エンドポイントに認証チェックが実装されていなかったことです。さらに、バックアップファイルの AES-256 復号鍵(Key と IV)が HTTP レスポンスヘッダー X-Backup-Security にそのまま平文で含まれていました。

つまり、次の 1 リクエストだけで攻撃が完結します。

# バックアップのダウンロードと復号鍵の取得(認証不要)
curl -v https://<nginx-ui-host>/api/backup -o backup.zip
# → レスポンスヘッダーに X-Backup-Security: <key>:<iv> が含まれる

攻撃者は取得した鍵で即座にバックアップを復号できるため、「暗号化されているから安全」という前提が完全に崩れています。

脆弱性の分類は CWE-306(重要な機能に対する認証の欠如) です。


影響範囲

Nginx UI 2.3.3 未満を外部または内部ネットワークに公開している環境が対象です。

悪用が成立すると、攻撃者は以下の情報を取得できます。

  • SSL 秘密鍵:サービスのHTTPS通信を復号・なりすましに悪用可能
  • 管理者アカウントのパスワードハッシュ:ブルートフォースによるログイン試行
  • セッショントークン:有効なセッションがあれば即座に管理画面に不正ログイン
  • Nginx 設定ファイル全体:内部構成・リバースプロキシ先・サービス構成の把握

これらの情報が揃えば、管理画面の乗っ取り・Nginx 設定の改ざん・バックエンドサービスへの横展開が現実的になります。

インターネット上に公開されているインスタンスについては、PoC スクリプトが GitHub に公開されていることから、スキャンと自動化された悪用が既に発生している可能性があります。


対応策・回避策

1. Nginx UI を v2.3.3 以降にアップグレード(最優先)

v2.3.3 では /api/backup に認証が必須化され、X-Backup-Security ヘッダーも削除されました。

# Docker を使っている場合
docker pull uozi/nginx-ui:latest
docker stop nginx-ui && docker rm nginx-ui
docker run -d --name nginx-ui \
  -p 9000:9000 \
  -v /etc/nginx:/etc/nginx \
  uozi/nginx-ui:latest

# バイナリで直接インストールしている場合
# GitHub Releases から最新版をダウンロードして入れ替え
curl -fsSL https://github.com/0xJacky/nginx-ui/releases/latest/download/nginx-ui-linux-amd64.tar.gz -o nginx-ui.tar.gz
tar -xzf nginx-ui.tar.gz
sudo systemctl stop nginx-ui
sudo cp nginx-ui /usr/local/bin/nginx-ui
sudo systemctl start nginx-ui

2. 暫定回避策:/api/backup へのアクセスを遮断

アップグレードがすぐにできない場合は、Nginx や WAF のレイヤーで該当エンドポイントへのアクセスを遮断します。

# Nginx UI の上位に置いているリバースプロキシで設定する例
location /api/backup {
    deny all;
    return 403;
}

または、Nginx UI 自体を一時的にインターネットから切り離し、VPN や特定 IP からのみアクセスを許可する設定にします。

3. 侵害確認:ログのチェック

# Nginx UI のアクセスログで /api/backup へのアクセスを確認
grep "/api/backup" /var/log/nginx/access.log

# アクセスがある場合は IP と時刻を記録し、侵害調査を実施

確認方法

まず現在の Nginx UI のバージョンを確認します。

# バイナリのバージョン確認
nginx-ui --version

# Docker の場合
docker exec nginx-ui nginx-ui --version

v2.3.3 以上であれば対応済みです。
それ以下であれば直ちにアップグレードしてください。

また、エンドポイントの応答確認も有効です。

# 認証なしで /api/backup にアクセスできるか確認(修正済みなら 401 が返るはず)
curl -s -o /dev/null -w "%{http_code}" https://<nginx-ui-host>/api/backup
# v2.3.3以降: 401
# 脆弱なバージョン: 200(バックアップダウンロードが始まる)

まとめ

CVE-2026-27944 は「認証なしでバックアップが丸ごと取れる上に、その復号鍵もレスポンスに含まれる」というシンプルかつ深刻な欠陥です。
CVSSスコア 9.8 はネットワーク越しに認証なしで成立するという評価を反映しており、PoC も公開されているため、攻撃コストは極めて低い状態です。
v2.3.3 へのアップグレードを最優先で実施し、もし今すぐ対応が難しい場合は deny all による一時遮断を即座に行ってください。


参考リンク

コメント