· adswds-team · セキュリティ  · 4 min read

PHP-FPM の IPv6 許可リストは 12 バイトしか比べない:CVE-2026-91768

2026-09-24 の PHP セキュリティリリース。listen.allowed_clients は IPv6 の先頭 12 バイトだけを比較し、単一アドレスを /96 に広げる。修正は 8.2.34、8.3.35、8.4.26、8.5.11。Unix ソケットと IPv4 のみは対象外。

2026-09-24 の PHP セキュリティリリース。listen.allowed_clients は IPv6 の先頭 12 バイトだけを比較し、単一アドレスを /96 に広げる。修正は 8.2.34、8.3.35、8.4.26、8.5.11。Unix ソケットと IPv4 のみは対象外。

2026-09-24 の PHP セキュリティリリースが直したのは言語機能ではなく、FPM のアクセス検査である。GHSA-62xp-839h-2637(CVE-2026-91768)は、FastCGI クライアント検査の IPv6 分岐が 16 バイトアドレスのうち 12 バイトしか比べないため、listen.allowed_clients が単一ホストではなく /96 プレフィックスに一致すると書く。許可アドレスと先頭 96 ビットを共有するアドレスを発信でき、待ち受けポートへ届く者は ACL を通過し、FastCGI エンドポイントに到達する。

一言で:許可リストは 1 台、比較結果は /96。

CVE レコード のスコアは CVSS 3.1 で 6.5(Medium、AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N)。攻撃元区分は隣接ネットワークであり、インターネット上の任意ホストではない。Advisory の影響文は同時に、FastCGI へ届くことは多くの構成で FPM worker 内の PHP 実行を意味すると書く。スコアは完全性を立てていない。6.5 だけを読まない。


影響を受ける構成

項目内容
影響8.2.34、8.3.35、8.4.26、8.5.11 より前
修正8.2.34、8.3.35、8.4.26、8.5.11 と、同じブランチのそれ以降
前提FastCGI が IPv6 TCP で、境界が listen.allowed_clients
対象外Unix ソケット、IPv4 のみ、または実際の境界が外部ファイアウォール
修正内容in6_addr 全体(16 バイト)を比較する
変更履歴9 月 24 日のセキュリティリリース。例:PHP 8.5.11

IPv4 分岐は 4 バイトすべてを比べる。IPv4 射影アドレスで埋め込み IPv4 へ進む 12 バイトのオフセットは正しい。それを素の IPv6 比較の長さに使うのが誤りである。許可リスト自体は inet_pton(AF_INET6, ...) で完全なアドレスとして解析されるため、切り捨ては設定上は単一アドレスのまま静かに広がる。

Advisory は実機の php-fpm で対照している。listen.allowed_clients = ::2 のとき ::1 からのリクエストは受理される(先頭 96 ビットが共通)。2001:db8::2 にすると ::1 は拒否される。これは ACL の挙動であり、汎用のリモートコード実行の前提ではない。


ランディングノード

127.0.0.1:9000 と Unix ソケットは、この告知の影響構成に入らない。確認するのは次である。

  • listen が IPv6([::1] やそれ以外)か;
  • listen.allowed_clients がファイアウォールの代わりか;
  • 同じリンク上の別アドレスが、同じ先頭 96 ビットを発信できるか。

8.3.35 / 8.4.26 / 8.5.11 / 8.2.34、またはそのブランチのより新しいセキュリティ版へ上げる。Web サーバが同一マシンなら Unix ソケットにする。TCP が必要ならファイアウォールで /128 を強制する。php-fpm の再起動は処理中のリクエストを切る。

10 月 21 日の重大 RCE(CVE-2026-109618、CVE-2026-109619)は別件である。9 月より前の版から 10 月の修正版へ上げれば、この ACL 修正も入る。9 月の包だけでは 10 月の 2 件は入らない。


まとめ

CVE-2026-91768 は IPv6 の listen.allowed_clients を 1 台から /96 に広げる。Unix ソケットと IPv4 のみはそのままでよい。許可リストが FastCGI の唯一の境界なら、更新し、ソケットかファイアウォールへ境界を移す。

出典:GHSA-62xp-839h-2637、CVE-2026-91768、PHP 8 Changelog 8.5.11。

関連記事

すべて見る »

同じタグの記事