php7403-u20-fpm-userini サーバーの実際のサービング経路(Webサーバー → SAPI/FPM pool → PHPビルド)と実効設定を読み取って2つの脆弱性の成立条件を判定し、管理者が適用すべき対処をファイル・行単位で提示します。点検は非破壊で実施しました。
01 Executive Summary
サービング経路 1個 · 判定 2件
| 到達可能 | このサーバーのSAPI・実効設定で、ドキュメントが確認した攻撃経路の前提条件が成立します。 |
| 緩和済み(一時的) | ドキュメントの一時緩和設定がリクエスト解析前の段階に適用されています。アップグレードまでの措置です。 |
| 判定保留 | 根拠不足または設定の読み取り失敗のため断定しません。到達不可という意味ではありません。 |
| パッチ済み | 修正バージョン以上であるか、パッケージの changelog にバックポート記録があります。 |
02 Scope
Webサーバー → SAPI/FPM pool → PHPビルドの単位で判定します
| ID | 対象 | バージョン判定 | 実行 | Webサーバー |
|---|---|---|---|---|
| U01 | PHP 7.4 FPM pool [www] 7.4.3-4ubuntu2.29 | PHP 7.4 は公式の修正リリースがなく、ソースバックポートのみがあります(PHP_취약점_동향_2026-10.ja.md:69)。 changelog(/usr/share/doc/php7.4-fpm/changelog.Debian.gz)にCVEのバックポート記録なし。 | 実行中 2026-10-23 21:50:31 | nginx lab-php7.4.localhost |
03 Findings
CVSS v4.0 9.2 · 2つのCVE × サービング経路
| CVE | 対象 | 判定 | 信頼度 | 修正バージョン | 根拠 |
|---|---|---|---|---|---|
| CVE-2026-109618 | U01 | 判定保留 | medium | なし(EOL) | FPMは startup 失敗時にワーカーを終了するためこの経路は遮断されますが、startup 以降に脆弱となり得るという分析があり、到達不可とは断定できません(DOC:44)。 |
| CVE-2026-109619 | U01 | 到達可能 | high | なし(EOL) | session.upload_progress が有効(PHP既定値)なため、session_start() なしでもセッションのライフサイクル経路が成立します。mod_php・FPMの両方が該当します(DOC:54)。 |
SAPI=fpm, memory_limit=128M (/etc/php/7.4/fpm/php.ini:409)
SAPI=fpm, session.upload_progress.enabled=1 (PHP既定値)
04 Remediation
優先順位順 · ファイル・行単位
パッケージ提供元のセキュリティアップデートを確認し、なければサポート対象ブランチに移行します。
zcat /usr/share/doc/php7.4-fpm/changelog.Debian.gz | grep -E 'CVE-2026-109618|CVE-2026-109619'
/etc/php/7.4/fpm/pool.d/www.conf の [www] セクションに追加: php_admin_value[session.upload_progress.enabled] = 0 ※ ini_set()・.user.ini では効果なし
sudo systemctl restart php7.4-fpm sudo python3 php2shell_host.py # 再点検で判定の変化を確認
/etc/php/7.4/fpm/pool.d/www.conf の [www] セクションに追加: php_admin_value[memory_limit] = -1 memory_limit=-1 はリクエストごとの上限をなくすため、サービス単位のメモリ上限を併せて設定します: sudo systemctl edit php7.4-fpm [Service] MemoryMax=<サーバーのメモリに合った値> (RLIMIT_AS/RLIMIT_DATA は使用しません)
sudo systemctl restart php7.4-fpm sudo python3 php2shell_host.py # 再点検で判定の変化を確認
該当行を削除し、pool/php.ini レベルの設定に移します。
sudo python3 php2shell_host.py # 再点検で判定の変化を確認
/etc/php/7.4/fpm/php.ini:379: expose_php = Off
sudo systemctl restart php7.4-fpm curl -sI https://<ホスト>/ | grep -i x-powered-by # 出力がないこと
05 Compromise & Appendix
判定ではない確認項目 · 点検方式の公開
デプロイによる正常な変更の可能性があります。デプロイ履歴と照合し、説明のつかないファイルを確認します。
1個 2026-10-23 01:52 /var/www/html/index.php
find /var/www/html -name '*.php' -newermt 2026-10-17 -ls
| 非破壊 | 実行したコマンド 0件 · ネットワークリクエスト 0件 · 書き込みはレポートディレクトリ(/tmp/php2shell_report)のみ |
| 読み取ったファイル | 40個(全一覧は report.json) |
| 読み取れなかったファイル | 0個 |
| 制限 | 設定ファイルに基づく実効値であり、再起動による反映はファイルの変更日時から推定します。Apache の php_* ディレクティブはグローバルとして扱います。RHEL系のパッケージバージョン、php-cgi・LiteSpeed・FrankenPHP、エクスプロイト成功条件(AC:H/AT:P)は判定しません。 |
06 Operating Guidance
今日 · 今週 · アップグレード経路 · 不可能な場合
アップグレードが答えであることは、たいてい既に分かっています。問題は、運用中のサーバーをそれまでどう扱うかです。