緊急PHPに致命的な脆弱性(CVSS 9.2)。サポート切れの PHP 7.4・8.0・8.1 向け修正(ソースのみ)が php-src に公開最新情報 ›
無料で相談する

VPS・自社サーバーのPHPを修正版に更新する手順|Ubuntu・Debianの対応パッケージとphp2shell

公開:10/22 00:19更新 (日本時間)Webセキュリティ診断センター 編集部約10分で読めます
VPS・自社サーバーのPHPを修正版に更新する手順|Ubuntu・Debianの対応パッケージとphp2shell
#php2shell#PHP#Linux#VPS
この記事の要点(2026年10月22日 0時台に確認)
  • VPSや専用サーバーでLinuxの標準パッケージのPHPを使っているなら、修正版はディストリビューションの更新として届きます。PHP公式は、ディストリビューションに事前にパッチを渡したとしています[php.net]。
  • Ubuntuは10月21日に修正済みパッケージを公開しました(USN-8948-1)。番号は公式の修正版(8.5.12 / 8.4.27 / 8.3.36 / 8.2.35)とは違いますが、修正は入っています。
  • Debian 13(trixie)は修正済みです。Debian 12(bookworm)は、確認した時点では修正済みの版が載っていませんでした。
  • パッケージを更新したら、PHP-FPMとWebサーバーを再起動し、サイトを動かしているPHPのバージョンを確かめます。

この記事の対象

この記事は、VPS・専用サーバー・クラウドのサーバーを自社か委託先で管理していて、PHP本体を自分たちで更新する立場の方に向けたものです。共用のレンタルサーバーでは、PHP本体の更新はサーバー会社が行うのが一般的です。その場合は、サーバー会社の告知を確認してください。

2026年10月21日、PHP公式は、認証なしで外部からプログラムを実行される(RCE)おそれのある脆弱性2件(CVE-2026-109618 / CVE-2026-109619)を直した修正版を公開しました。修正版はPHP 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35です。PHP公式は、完全な緩和策はなく、更新だけが安全な選択だとしています[php.net]。脆弱性の中身はphp2shellの解説記事にまとめています。

まず、PHPをどこから入れたかを確かめる

修正版の届き方は、PHPをどこから入れたかで変わります。

ディストリ標準のパッケージ、remiなどの外部リポジトリ、ソースからのビルドの3つで、修正版の届き方が違うことを示す図
図1 PHPの入手元と、修正版の届き方
入手元修正版の届き方
ディストリビューション(Ubuntu・Debianなど)の標準パッケージディストリビューションが修正済みのパッケージを出す。PHP公式は、Linuxディストリビューションと長期サポートの事業者に事前にパッチを渡したとしている[php.net]
外部のリポジトリ(remiなど)リポジトリの配布元しだい。PHP公式は、ボランティアが運営する rpms.remirepo.net は10月21日には更新されないとして、ディストリビューションのパッケージかソースからのビルドに切り替えるよう求めている[php.net]
ソースから自分でビルド8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 のソースでビルドし直す

サーバーを作った担当者や委託先が分からない場合は、どのリポジトリが設定されているかを委託先に確認してください。入手元を取り違えると、ディストリビューションを更新してもPHPが古いまま残ることがあります。

ディストリビューション別の修正状況

各ディストリビューションの公式ページで確認できた内容です(2026年10月22日 0時台)。状況は変わるので、作業の前に必ず最新の告知を開いてください。

PHP公式の修正版の番号と、Ubuntu・Debianの修正済みパッケージの番号を並べた表
図2 公式の修正版と、ディストリビューションの修正済みパッケージの番号

Ubuntu

Ubuntuは10月21日に、セキュリティ通知 USN-8948-1 で2件のCVEを直したパッケージを公開しました[Ubuntu]。

リリースソースパッケージ修正済みのバージョン
26.10php8.58.5.9-0ubuntu2.1
26.04 LTSphp8.58.5.4-0ubuntu1.5
24.04 LTSphp8.38.3.6-0ubuntu0.24.04.13
22.04 LTSphp8.18.1.2-1ubuntu2.28

更新の対象として、libapache2-mod-php(Apacheのmod_php)、php-cgi、php-cli、php-fpm の各パッケージ(例:php8.3-fpm)が挙がっています。通知には「一般には、通常のシステム更新で必要な変更がすべて行われる」とあります[Ubuntu USN-8948-1]。

番号を見ると、24.04 LTS の修正済み版は「8.3.6-…」で、公式の修正版 8.3.36 とは数字が違います。Ubuntuは、リリースに収録したバージョンに修正だけを取り込んでいるためです。公式の番号と比べて判断せず、通知に載った番号と比べてください。

CVE-2026-109618 のページでは、14.04〜20.04 LTS の php5・php7.0・php7.2・php7.4 は「Needs evaluation(評価待ち)」となっていました[Ubuntu CVEページ]。これらの古いリリースを使っている場合は、修正済みのパッケージがまだ出ていません。

Debian

Debianのセキュリティトラッカーでは、CVE-2026-109618 について次のように表示されていました[Debian Security Tracker]。

リリースソースパッケージ状態
13(trixie)php8.4修正済み:8.4.27-1~deb13u1(DSA-6574-1)
12(bookworm)php8.2vulnerable(修正済みの版の掲載なし)
forky・sidphp8.4vulnerable(8.4.26-1)

Debian 12 のセキュリティサポートは、2026年7月12日に長期サポート(LTS)チームへ引き継がれています[debian.org]。Debian 12 を使っている場合は、トラッカーとLTSのセキュリティ情報(DLA)で修正版が出たかを確認してください。なお、CVE-2026-109619 のトラッカーのページは、確認した時点では開けませんでした(404)。

Debianも、セキュリティの修正は新しいバージョンに上げずに、安定版に収録したバージョンへ取り込む方針です。修正済みかどうかは、インストールしたパッケージの番号を、セキュリティ勧告(DSA)に載った番号と比べて確かめるよう案内しています[Debian セキュリティFAQ]。

Red Hat Enterprise Linux・AlmaLinux・Rocky Linux

この記事を書いた時点では、今回の2件のCVEに対応するアドバイザリを確認できませんでした。各ディストリビューションのセキュリティ情報で、対象のCVE番号を検索して確かめてください。

番号の取り違えに注意
9月24日に公開された 8.5.11 / 8.4.26 / 8.3.35 / 8.2.34 は定例の更新で、今回の脆弱性は直っていません。一方、ディストリビューションのパッケージは公式と違う番号のまま修正済みのことがあります。どちらの場合も、判断の基準は「その配布元の告知に載った修正済みの番号」です。

パッケージを更新する手順

入手元の確認、告知で修正版を確認、パッケージの更新、PHP-FPMとWebサーバーの再起動、Web側での確認の5段階
図3 自社サーバーでPHPを更新する流れ

UbuntuとDebianを例に、作業の流れを説明します。

  1. バックアップを取る:サイトのファイルとデータベースを保存し、更新で不具合が出ても戻せるようにします。
  2. パッケージの一覧を新しくする:apt-get updateで、設定したリポジトリから最新のパッケージ情報を取り込みます。Debianのセキュリティ FAQ は、勧告の修正を入れる前にこのコマンドを実行するよう案内しています[Debian セキュリティFAQ]。
  3. パッケージを更新する:apt-get upgradeで、入っているパッケージをまとめて更新します。特定のパッケージだけを更新するならapt-get install パッケージ名を使います[Debian セキュリティFAQ]。
  4. 入ったバージョンを確かめる:dpkg-query -W 'php*'で、パッケージ名とインストールされたバージョンが一覧で表示されます[dpkg-queryのマニュアル]。PHP-FPMやmod_phpのパッケージが、告知に載った修正済みの番号になっているかを見ます。
sudo apt-get update
sudo apt-get upgrade
dpkg-query -W 'php*'

ほかのパッケージもまとめて更新されるので、影響が心配な場合は検証用のサーバーで先に試してください。

再起動と、Web側のバージョンの確認

パッケージを更新しても、動いているプロセスは古いプログラムのままのことがあります。Debianのセキュリティ FAQ も、更新のあとにサービスや動いているプロセスの再起動が必要な場合があるとしています[Debian セキュリティFAQ]。

再起動したら、サイトを動かしているPHPのバージョンを確かめます。コマンドのphp -vが表示するのはコマンドライン用のPHPで、Webサイトを処理しているPHP-FPMやmod_phpとは別のことがあります。確かめ方は「PHPのバージョンを確認する方法」で説明しています。ディストリビューションのパッケージの場合、画面に出る番号は公式の修正版と一致しないことがあります。その場合は、上の手順で確かめたパッケージの番号を基準にします。

外部リポジトリ・ソースビルド・8.1以前の場合

remiなどの外部リポジトリ

PHP公式は、rpms.remirepo.net を使っている人に対し、すぐに更新できるよう、ディストリビューションのパッケージかソースからのビルドに切り替えるよう求めています[php.net]。切り替えるとPHPのバージョンや拡張機能の構成が変わることがあります。切り替えか配布元の更新を待つかは、サイトの重要度と、次に挙げる暫定策を取れるかで判断します。

ソースから自分でビルドしている

使っている系列の修正版(8.5.12 / 8.4.27 / 8.3.36 / 8.2.35)のソースでビルドし直し、PHP-FPMやWebサーバーを再起動します。ソースと署名は php.net のダウンロードページで公開されています[php.net]。

PHP 8.1以前

PHP公式は、8.1以前はPHPプロジェクトから更新を受けられないとし、ディストリビューションや長期サポートの事業者に問い合わせるか、サポート中のバージョンに上げるよう求めています。深刻度を考え、7.4・8.0・8.1向けに最小限の修正をソースで公開しましたが、ソースからビルドする人や長期サポートを受けられない人向けです[php.net]。

Ubuntu 22.04 LTS の php8.1 のように、ディストリビューションが修正を出している場合もあります。ただし、PHP 8.1 そのものの公式サポートは2025年12月31日で終わっています[php.net]。今回の修正を当てたうえで、サポート中のバージョンへの切り替えを計画してください。

すぐに更新できない場合、PHP公式は攻撃の経路を減らす設定(session.upload_progress.enabled=0など)を挙げています。ただし、どれもサーバーを安全にするものではないとしています[php.net]。

更新が終わったら

  1. サイトの動作を確かめる:トップページ、問い合わせフォームの送信、ログイン、管理画面、決済などを一通り試します。
  2. エラーログを見る:再起動のあとに、PHPやWebサーバーのエラーログに新しいエラーが出ていないかを確認します。
  3. 乗っ取られていないかを確かめる:情報が漏れた10月20日から更新までの間に攻撃を受けていないか、見覚えのないファイルや管理者アカウント、cronの登録などを確認します。手順は「Webサイトが乗っ取られていないか確かめる方法」にまとめています。

よくある質問

更新したのに、バージョンが8.3.6のままです

Ubuntu 24.04 LTS の php8.3 なら、修正済みのパッケージの番号は 8.3.6-0ubuntu0.24.04.13 です[Ubuntu USN-8948-1]。表示上の「8.3.6」は変わりません。パッケージの番号の後半まで確かめてください。

Dockerの公式PHPイメージを使っています

この記事では、Dockerの公式イメージの更新状況は確認していません。イメージの配布元の更新を確かめ、新しいイメージでコンテナを作り直してください。

再起動するとサイトが止まりますか?

再起動の間は、短い時間ですがリクエストを処理できないことがあります。アクセスの少ない時間を選ぶか、メンテナンス表示を出してから作業してください。

自社サーバーのPHP更新は、Webセキュリティ診断センターへ
入手元の確認、パッケージの更新と再起動、Web側のバージョン確認、更新後の侵害チェックまでお受けします。8.1以前からの切り替えや、新しいサーバーへの引っ越しもご相談ください。無料相談はこちら

参考にした情報

貴社のサイトに合った対応をご案内します!
まずは、お気軽にご相談ください。

お問い合わせ・お見積りはこちら
無料で相談する最新情報を見る