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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-42945 — NGINX Rift 漏洞分析与复现 | Kitploit
ツール/GitHubGitHub/rheodev/cve-2026-42945
Vulnerability AnalysisExploitationWeb SecurityPenetration TestingLearning & EducationBinary ExploitationLabs & Practice
GitHubrheodev/cve-2026-42945

CVE-2026-42945

NGINX Rift 漏洞分析与复现

リポジトリを見る
2153ヶ月前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有

CVE-2026-42945 - NGINX Rift 脆弱性の分析と再現

概要

CVE-2026-42945(コードネーム「NGINX Rift」)は、NGINX の ngx_http_rewrite_module に存在するヒープバッファオーバーフロー脆弱性であり、CVSS v4 スコアは 9.2(Critical) です。

この脆弱性は depthfirst セキュリティ研究チームにより2026年4月に発見され、2008年に NGINX 0.6.27 で導入されて以来、18年間潜伏していました。

影響範囲

  • NGINX Open Source 0.6.27 ~ 1.30.0
  • NGINX Plus R32 ~ R36
  • NGINX Instance Manager 2.16.0 ~ 2.21.1
  • F5 WAF for NGINX 5.9.0 ~ 5.12.1
  • NGINX App Protect WAF 4.9.0 ~ 4.16.0 および 5.1.0 ~ 5.8.0
  • NGINX Gateway Fabric 1.3.0 ~ 1.6.2 および 2.0.0 ~ 2.5.1
  • NGINX Ingress Controller 3.5.0 ~ 3.7.2、4.0.0 ~ 4.0.1、5.0.0 ~ 5.4.1

修正バージョン

  • NGINX 1.31.0(2026年5月13日リリース)

トリガー条件

この脆弱性をトリガーするには、以下の NGINX 設定パターンが必要です:

root@kitploit:~
location ~ ^/api/(.*)$ {
    rewrite ^/api/(.*)$ /internal?migrated=true;
    set $original_endpoint $1;
}

重要な条件:

  1. rewrite ディレクティブの置換文字列に ?(クエスチョンマーク)が含まれる
  2. 後続の set ディレクティブが正規表現のキャプチャグループ(例:$1)を参照する
  3. リクエスト URI にエスケープ可能な文字(例:+, &, % など)が含まれる

根本原因の分析

スクリプトエンジンの2段階処理

NGINX のスクリプトエンジンは rewrite/set ディレクティブを実行するために2段階処理を使用します:

  1. 第1段階(長さ計算):最終文字列に必要なメモリサイズを計算する
  2. 第2段階(データコピー):割り当てられたバッファに実際のデータを書き込む

状態の不整合によるオーバーフロー

この脆弱性の核心は、2つの段階間のエンジン状態の不整合にあります:

段階 1:rewrite が is_args フラグを設定する

rewrite ディレクティブの置換文字列に ? が含まれる場合、ngx_http_script_start_args_code 関数が以下を設定します:

root@kitploit:~
void ngx_http_script_start_args_code(ngx_http_script_engine_t *e)
{
    e->is_args = 1;  // 永久设置,从不重置!
    e->args = e->pos;
    e->ip += sizeof(uintptr_t);
}

段階 2:set ディレクティブの長さ計算は新しい子エンジンを使用する

後続の set ディレクティブがキャプチャグループを参照する場合、ngx_http_script_complex_value_code は全ゼロの子エンジンを作成します:

root@kitploit:~
void ngx_http_script_complex_value_code(ngx_http_script_engine_t *e)
{
    ngx_http_script_engine_t le;
    // ...
    ngx_memzero(&le, sizeof(ngx_http_script_engine_t)); // le.is_args = 0
    le.ip = code->lengths->elts;

段階 3:長さ計算と実際のコピーの乖離

長さ計算(子エンジン le を使用、is_args=0):

root@kitploit:~
// ngx_http_script_copy_capture_len_code
if ((e->is_args || e->quote) && (e->request->quoted_uri || e->request->plus_in_uri))
{
    // is_args=0,条件为 false,走 else 分支
    return cap[n + 1] - cap[n];  // 返回原始长度(未转义)
}

実際のコピー(メインエンジン e を使用、is_args=1):

root@kitploit:~
// ngx_http_script_copy_capture_code
if ((e->is_args || e->quote) && (e->request->quoted_uri || e->request->plus_in_uri))
{
    // is_args=1,条件为 true,走 if 分支
    e->pos = (u_char *) ngx_escape_uri(pos, &p[cap[n]],
                                        cap[n + 1] - cap[n],
                                        NGX_ESCAPE_ARGS);
    // 每个可转义字符从 1 字节扩展为 3 字节!
}

オーバーフローのサイズ

  • 割り当てられるバッファサイズ:raw_size(元のキャプチャ長)
  • 実際に書き込まれるサイズ:raw_size + 2 * N(N = エスケープ可能な文字数)
  • オーバーフロー量 = 2 * N バイト

例えば、URI に + が100個含まれる場合、オーバーフロー量は200バイトになります。

悪用方法

1. DoS(サービス拒否)

最も簡単な悪用方法 - エスケープ可能な文字を大量に含むリクエストを送信するだけで、worker プロセスをクラッシュさせることができます:

root@kitploit:~
GET /api/+++++++++++++++++++++++++++++++++++ HTTP/1.1
Host: target.com

2. RCE(リモートコード実行)

完全な RCE 悪用チェーン(ASLR が無効化されているか、回避されている必要があります):

  1. ヒープレイアウトの制御:接続の順序を制御して ngx_pool_t のヒープレイアウトを操作する
  2. オーバーフローによる cleanup ポインタの上書き:隣接するメモリプール構造体へオーバーフローさせる
  3. 偽造 cleanup 構造体のスプレー:POST リクエストボディを介して system() のアドレスを含む偽造構造体を注入する
  4. 実行のトリガー:被害を受けた接続を閉じて、ngx_destroy_pool が cleanup リンクリストを走査するようにする

NGINX のマルチプロセスアーキテクチャにより悪用がより確実になります - worker がクラッシュすると、master がメモリレイアウトがまったく同じ新しい worker をフォークします。

ファイル構成

  • README.md - 本ファイル(脆弱性分析ドキュメント)
  • Dockerfile - 脆弱性のある NGINX 環境を構築
  • nginx.conf - 脆弱性をトリガーする NGINX 設定
  • poc_crash.py - DoS PoC(worker のクラッシュをトリガー)
  • docker-compose.yml - ワンクリックでテスト環境を起動

クイック再現

root@kitploit:~
# 1. 构建并启动易受攻击的 NGINX
docker-compose up -d

# 2. 运行 DoS PoC
python3 poc_crash.py

# 3. 查看 NGINX 错误日志确认崩溃
docker-compose logs nginx

参考資料

  • NGINX 公式 CHANGES - 修正のお知らせ
  • depthfirst 研究レポート - 最初に脆弱性を発見した研究者による技術分析
  • F5 セキュリティアドバイザリ K000160932 - 公式セキュリティアドバイザリ

免責事項

本資料はセキュリティ研究および教育目的のみに使用してください。この情報を許可のない攻撃行為に使用しないでください。

ツールをダウンロード