Skip to main content

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 の更新が漏れたサーバーもすぐに見つかります。