FastCGI Library の脆弱性 CVE-2025-23016 が FIX:ヒープ・オーバーフローの恐れ

Critical FastCGI Library Flaw Exposes Embedded Devices to Code Execution

2025/04/28 gbhackers — ライトウェイトな Web サーバ通信のコア・コンポーネントである、FastCGI ライブラリに発見された深刻な脆弱性 CVE-2025-23016 により、多数の組み込みデバイスや IoT デバイスにリモート・コード実行の脅威が生じている。

NGINX や lighttpd などの Web サーバを、バックエンド・アプリケーションに接続するために、FastCGI は広く利用されている。それらのアプリケーションとして挙げられるのは、ネットワーク・カメラ/ルーター/各種スマートデバイスなどの、リソースが限られたデバイスに関連するものである。

脆弱性の概要

FastCGI のパラメータ解析コードにおける、ReadParams 関数に重大な欠陥があることを、セキュリティ研究者である Baptiste Mayaud が発見した

通常において、FastCGI プロトコルは、構造化されたヘッダーとパラメータを介して、サーバとアプリケーションの間でリクエスト情報を交換するそれらのパラメータには、鍵と値のペアが含まれており、その大きさに応じて 1 Byte〜4 Byte で処理される。

脆弱なコード:
nameValue = (char *)Malloc(nameLen + valueLen + 2);

上記の、”nameLen” と “valueLen” に対して、きわめて大きな値が設定されると、オーバーフローが発生する。

32-Bite プラットフォームにおいて、(nameLen + valueLen + 2) が処理されると整数ラップアラウンドが発生し、malloc に極端に小さな値が挿入され、後続の書き込みに対してバッファが小さすぎる状態になる。それにより、任意のコード実行のための、典型的なヒープバッファ・オーバーフロー・ベクターが生成される。

最新のサーバの多くは 64-bit モードで動作するため、このオーバーフローの影響を受けることはないが、組み込みデバイスや IoT エンドポイントの多くは、コストと電力の制約から、依然として 32-bit システムに依存している。

この現実により、脆弱性 CVE-2025-23016 は、実際の影響を劇的に増大させる。研究者は、例示的なエクスプロイトにおいて、以下の方法を実行できることを、研究者と実証している:

  1. 整数オーバーフローを悪用して、FastCGI のパラメータ解析でヒープ・オーバーフローを作成する。
  2. FastCGI の内部ストリーム構造体 (FCGX_Stream) 内の関数ポインタを、特に fillBuffProc ポインタを上書きする。
  3. このポインタを、制御された引数を持つ system() などのコマンド実行関数にリダイレクトすることで、任意のコード実行が可能になる。
エクスプロイト・コードの例

以下は、脆弱な FastCGI サーバを介してコード実行を実現するための、簡略化された攻撃シーケンスである。

io.send(makeHeader(1, 1, 8, 0) + makeBeginReqBody(1, 0) + header +
        (p8(0x13) + p8(0x13) + b"b" * 0x26) * 9 +
        p8(0) * (2 * 2) + p32(0xffffffff) + p32(0xffffffff) +
        b"a" * (4 * 4) + b" /bi;nc -lve /bin/sh" + p32(0) * 3 + p32(exe.plt["system"]))

このコードは、オーバーフローを悪用して関数ポインタを上書きし、リバースシェルを起動するものだ。

CVEAffected VersionsVulnerability TypeImpactFixed In
CVE-2025-23016< 2.4.5 (32-bit only)Integer/heap overflowRemote Code Execution2.4.5

ユーザーに対して強く推奨されるのは、以下の手順である:

  • 速やかな更新:FastCGI ライブラリ 2.4.5 以降には、このバグに対する修正が取り込まれている。すべてのユーザーは、特に組み込みシステムに FastCGI を導入しているユーザーは、速やかな更新が必要となる。
    .
  • ネットワークへの露出の制限:FastCGI 通信を、TCP ではなく UNIX ソケットを使用するように設定することで、ローカル・プロセスへのアクセスを制限し、リモート攻撃対象領域を縮小する。
    .
  • コンフィグの確認:FastCGI ポートを、ネットワークにダイレクトに露出させないようにする。特に、安全が確保されないコンフィグや、コピー&ペーストしたコンフィグの使用は避けてほしい。

Web 接続デバイスを支える OSS インフラにおいて、脆弱性 CVE-2025-23016 の微細なメモリ管理バグは、継続的なリスクを生み出すことになるだろう。

多種多様な組み込みデバイスや IoT デバイスには、タイムリーにパッチを適用するメカニズムは存在しない。したがって、デバイス・メーカーとインテグレーターは、ソフトウェア・スタックの更新を優先し、セキュリティのベスト・プラクティスが確実に遵守される方式でデプロイする必要がある。

この脆弱性 CVE-2025-23016 を NVD で調べてみたところ、 CVSS 値 9.3 (MITRE 評価)とされていました。すでに PoC エクスプロイトが公開されており、悪用の可能性も高まります。開発者の方々は、十分にご注意ください。よろしければ、Library で検索も、ご参照ください。