· 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 セキュリティリリースが直したのは言語機能ではなく、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。



