AlmaLinux の PHP 脆弱性 PHP2Shell 対策:AlmaLinux / Rocky Linux / RHEL 8・9・10 の確認と PHP アップデート
この記事は英語版の日本語訳です。
AlmaLinux の PHP 脆弱性 PHP2Shell(CVE-2026-109618、CVE-2026-109619)は、AlmaLinux 8 / 9 / 10 で提供されているすべての PHP ストリームで修正済みです。認証不要のリクエスト 1 つで PHP サーバーを乗っ取られるおそれがあるため、すぐに AlmaLinux の PHP アップデートを適用してください。対策は dnf upgrade 'php*' を実行して PHP-FPM を再起動するだけです。サポート中のストリームの修正は公開当日の 2026年10月21日に、Red Hat がすでにサポートを終えた 4 つのストリーム(AlmaLinux 8 の PHP 7.2 / 7.3 / 8.0、AlmaLinux 9 の PHP 8.1)の修正は 2 日後の 10月23日に AlmaLinux 独自に提供されました。この 4 つは RHEL と Rocky Linux では修正されていません。
お使いのビルドが修正済みか分からない場合は、パッケージ一覧を PHP2Shell チェッカー(英語)に貼り付けてください。ディストリビューションのバックポートも判定し、各プラットフォームの対策を表示します。
CVE-2026-109618 RCE via out-of-memory corruption (GHSA-w8hw-w9fx-j79w) CVSS v4.0 9.2
CVE-2026-109619 RCE via stale global state (GHSA-6wmf-4rv5-p3rp) CVSS v4.0 9.2
Affected: PHP 5.4 and later, all web SAPIs (PHP-FPM, mod_php, php-cgi)
Fixed upstream: 8.5.12, 8.4.27, 8.3.36, 8.2.35
AlmaLinux 8/9/10: fixed in every shipped PHP stream (ALSA-2026:87070 to 87151, A011 to A014)
PHP2Shell 対策:AlmaLinux / Rocky Linux / RHEL の PHP アップデート手順
ディストリビューションのリポジトリから PHP を更新し、PHP を動かしているサービスを再起動します。
dnf upgrade 'php*'
systemctl restart php-fpm
PHP-FPM ではなく Apache の mod_php をお使いの場合は httpd を再起動してください。有効にしているモジュールストリームは変わりません。dnf は同じストリームの修正版に更新するだけなので、PHP 7.4 は 7.4 のまま、PHP 8.2 は 8.2 のままです。
AlmaLinux 10 の PHP 8.4 は php8.4-* という別名のパッケージですが、'php*' のパターンでまとめて更新されます。
サーバーが脆弱かどうかの確認方法
まず、どの PHP ストリームが有効かを確認します。[e] の付いたものが有効なストリームです。
dnf module list php
AlmaLinux 9 と 8 で [e] がない場合は、AppStream 標準の PHP(AlmaLinux 9 は 8.0、AlmaLinux 8 は 7.2)を使っています。AlmaLinux 10 には PHP のモジュールがなく、標準の PHP は 8.3、8.4 は別パッケージの php8.4 です。
次に、PHP2Shell の修正が未適用のまま残っていないかを dnf で確認します。
dnf updateinfo list --cve CVE-2026-109618
ALSA-2026:87151 Important/Sec. php-cli-8.0.30-8.el9_8.1 のような行が表示されたら、未適用の修正があります。上の手順でアップデートしてください。何も表示されなければ、インストール済みのパッケージに未適用の修正はありません。
最後に、インストールされているリリースを下の表と比べます。
rpm -q php-cli php-fpm
changelog に CVE 番号が出てこない場合
修正がバックポートの場合は、パッケージの changelog に CVE 番号が記載されています。
rpm -q --changelog php-cli | grep -E 'CVE-2026-10961[89]'
この方法が使えるのは、AlmaLinux 9 の AppStream 標準 8.0 と、7.2 / 7.3 / 7.4 / 8.0 / 8.1 の各ストリームです。8.2 と 8.3 のストリーム、AlmaLinux 10 の PHP 8.4 は修正済みの上流リリースへの更新(リベース)で対応しているため、changelog には rebase to 8.3.36 としか書かれていません。この場合は grep の結果が空でも脆弱とは限らないので、バージョンで判断してください。8.2.35、8.3.36、8.4.27 以降なら修正済みです。
AlmaLinux のストリーム別 PHP2Shell 修正版
表のバージョンは、AlmaLinux のセキュリティアドバイザリ(ALSA)で確認し、実際に AlmaLinux 8.10 / 9.8 / 10.2 のリポジトリからインストールした php-cli のリリースです。
| AlmaLinux | PHP ストリーム | 修正版リリース | アドバイザリ | RHEL / Rocky Linux |
|---|---|---|---|---|
| 8 | php:7.2(標準) | 7.2.24-1.module_el8.10.0+4315+7b734bf3.alma.1 |
ALSA-2026:A011、10月23日 | 修正なし(サポート終了ストリーム) |
| 8 | php:7.3 | 7.3.20-1.module_el8.10.0+4316+90ea5fe5.alma.1 |
ALSA-2026:A012、10月23日 | 修正なし(サポート終了ストリーム) |
| 8 | php:7.4 | 7.4.33-8.module_el8.10.0+4321+cf5fd4bb |
ALSA-2026:87080、10月21日 | RHSA-2026:87080 |
| 8 | php:8.0 | 8.0.30-1.module_el8.10.0+4319+26f10322.alma.1 |
ALSA-2026:A013、10月23日 | 修正なし(サポート終了ストリーム) |
| 8 | php:8.2 | 8.2.35-1.module_el8.10.0+4323+fc907035 |
ALSA-2026:87073、10月21日 | RHSA-2026:87073 |
| 9 | AppStream 8.0(標準) | 8.0.30-8.el9_8.1 |
ALSA-2026:87151、10月21日 | RHSA-2026:87151 |
| 9 | php:8.1 | 8.1.32-1.module_el9.8.0+326+528679fc.alma.1 |
ALSA-2026:A014、10月23日 | 修正なし(サポート終了ストリーム) |
| 9 | php:8.2 | 8.2.35-1.module_el9.8.0+329+e5668d75 |
ALSA-2026:87072、10月21日 | RHSA-2026:87072 |
| 9 | php:8.3 | 8.3.36-1.module_el9.8.0+330+fdc30075 |
ALSA-2026:87079、10月21日 | RHSA-2026:87079 |
| 10 | AppStream 8.3 | 8.3.36-1.el10_2 |
ALSA-2026:87070、10月21日 | RHSA-2026:87070 |
| 10 | php8.4 パッケージ | 8.4.27-1.el10_2 |
ALSA-2026:87071、10月21日 | RHSA-2026:87071 |
RHEL の列は Red Hat の CVE-2026-109618 の情報(英語)に基づいています。Red Hat が修正を出しているのは、RHEL 8 の 7.4 と 8.2 のストリーム、RHEL 9 の標準 PHP と 8.2 / 8.3 のストリーム、RHEL 10 の 2 つの PHP です。.alma.1 の付いたリリースは、Red Hat が保守をやめたストリームに対する AlmaLinux 独自の修正です。
Rocky Linux と RHEL の場合
Rocky Linux は Red Hat のアドバイザリを同じ番号(RLSA-2026:87070、87072、87073、87079、87080、87151)で再ビルドしているので、上のアップデート手順はそのまま使えます。RHEL では表の RHSA と同じ修正が提供されています。
違いはサポート終了ストリームです。Rocky Linux や RHEL で EL8 の PHP 7.2 / 7.3 / 8.0、または EL9 の PHP 8.1 を使い続けている場合、ディストリビューションから修正版は出ません。保守されているストリームに切り替えてください。
dnf module switch-to php:8.2
systemctl restart php-fpm
切り替える前に、新しいバージョンでアプリケーションの動作を確認してください。7.x から 8.2 への移行では、セキュリティ修正だけでなく言語の挙動も変わります。
Remi の PHP を使っている AlmaLinux
AlmaLinux では、AppStream ではなく Remi リポジトリの PHP を使っているサーバーも多くあります。Remi も修正版を公開しています。remi-release パッケージは remi-modular と remi-safe を標準で有効にするため、追加のリポジトリ指定なしで通常のアップデートが修正版を取り込みます。
dnf upgrade 'php*'
systemctl restart php-fpm
有効なストリームは dnf module list --enabled php で確認できます(remi-7.4、remi-8.1 などと表示されます)。Remi の EOL ブランチは changelog に CVE 番号を記載しているので、上の grep による確認が使えます。AlmaLinux 9 で実際にインストールして確認した php-cli-7.4.33-31.module_php.7.4.el9.remi と php-cli-8.1.34-6.module_php.8.1.el9.remi は、どちらも CVE-2026-109618 と CVE-2026-109619 を記載していました。
Remi のソフトウェアコレクション(php74-php-*、php81-php-* など)は、独自のパッケージ名とサービス名で並行インストールされています。
dnf upgrade 'php74-php*'
systemctl restart php74-php-fpm
php74 はお使いのコレクションに置き換えてください。AlmaLinux 9 で確認した修正版には php74-php-cli-7.4.33-31.el9.remi、php81-php-cli-8.1.34-6.el9.remi、php83-php-cli-8.3.36-1.el9.remi があります。
再起動までの暫定対策
根本的な対策はアップデートです。すぐに更新できないサーバーのために、PHP のアドバイザリには部分的な緩和策として memory_limit=-1、小さな post_max_size、session.upload_progress.enabled=0 が挙げられています。ただし、どれも 2 つの CVE を両方とも塞ぐものではありません。
Sansec の PHP2Shell 調査(英語)は、脆弱性の引き金になるマルチパートのリクエストを NGINX で拒否するルールも紹介しています。PHP にリクエストを渡すすべての server ブロックに追加します。
if ($http_content_type ~* "multipart/form-data") {
return 403;
}
このルールはファイルのアップロードをすべて止めます。カートや注文フォームをマルチパートで送信する EC サイトもあるため、追加後にテスト注文をしてください。PHP を更新したらルールは削除します。NGINX で PHP の前段で防げること、防げないことは PHP2Shell mitigation in NGINX(英語)にまとめています。
まだ CentOS 7 を使っていて、AlmaLinux への移行はこれからの場合
「AlmaLinux に移行するときに対応する」という計画はよくありますが、PHP2Shell は移行を待ってくれません。CentOS 7 には Red Hat からも Remi からも PHP2Shell の修正は提供されておらず、CentOS 7 向けに修正版 PHP を提供しているのは GetPageSpeed だけです。
CentOS 7 の PHP2Shell パッチでは、標準の 5.4 から 8.4 までのすべての PHP について、Remi の 2 つのパッケージ形式のどちらとも入れ替えられる修正版を提供しています。今すぐその場で修正し、移行は自分たちのスケジュールで進められます。移行が終わるまでの EL7 のその他の保守は Everpatch for CentOS 7 で扱っています。CentOS 6 をお使いの場合は CentOS 6 の PHP2Shell パッチをご覧ください。
よくある質問
AlmaLinux は PHP2Shell の影響を受けますか?
アップデートするまでは受けます。2026年10月21日より前に AlmaLinux が提供していた PHP ビルドはすべて脆弱です。修正版は上の表のとおりで、dnf upgrade 'php*' でインストールされます。
AlmaLinux 8 の PHP 7.2 は修正されていますか?
はい。標準の php:7.2 ストリームは 7.2.24-1.module_el8.10.0+4315+7b734bf3.alma.1(ALSA-2026:A011)で修正されています。RHEL 8 と Rocky Linux 8 では、このストリームの修正はありません。
AlmaLinux 9 の PHP 8.1 は修正されていますか?
はい。8.1.32-1.module_el9.8.0+326+528679fc.alma.1(ALSA-2026:A014)で修正されています。RHEL 9 と Rocky Linux 9 では 8.1 ストリームの修正はないため、php:8.2 か php:8.3 に切り替えてください。
rpm -q --changelog に CVE が出てきません。脆弱なままですか?
そうとは限りません。8.2 と 8.3 のストリーム、PHP 8.4 は修正済みの上流リリースにリベースされており、changelog には rebase to としか書かれていません。rpm -q php-cli でバージョンを確認し、8.2.35、8.3.36、8.4.27 以降なら修正済みです。
アップデート後に再起動は必要ですか?
必要です。動作中の PHP-FPM のワーカーは、再起動するまで古いコードをメモリに持ったままです。php-fpm(Remi のコレクションなら phpNN-php-fpm)、mod_php なら httpd を再起動してください。
session.upload_progress.enabled=0 だけで十分ですか?
いいえ。CVE-2026-109619 の確認済みの経路を 1 つ塞ぐだけで、CVE-2026-109618 には効果がありません。両方を修正できるのはパッケージのアップデートだけです。
まとめ
AlmaLinux の PHP2Shell は、アップデートさえ適用すれば解決します。AlmaLinux は 8 / 9 / 10 のすべての PHP ストリームを修正し、Red Hat がサポートを終えた 4 つのストリームにも修正を出しました。dnf upgrade 'php*' を実行し、PHP-FPM を再起動して、dnf updateinfo list --cve CVE-2026-109618 で確認してください。Rocky Linux や RHEL でサポート終了ストリームを使っている場合はストリームを切り替え、CentOS 7 の場合は移行が終わるまで GetPageSpeed の CentOS 7 向けビルドをお使いください。
多数のサーバーを管理していますか? GetPageSpeed Amplify は NGINX ホストを監視し、NGINX の CVE、gixy による設定の問題、PHP の CVE の影響でホストを順位付けします。PHP の更新が漏れたサーバーもすぐに見つかります。