0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PHPに「緊急」の脆弱性2件、修正版は今夜23時。プログラミング初学者が今日やっておく3つの確認

0
Posted at

PHPに「緊急」の脆弱性2件、修正版は今夜23時。プログラミング初学者が今日やっておく3つの確認

2026年10月21日20時50分(日本時間)時点の情報です。修正版が公開されたら追記します。

何が起きたか

2026年10月20日、PHPの開発チームが、深刻な脆弱性2件を直すアップデートを予告しました。公開予定は10月21日14時(協定世界時)で、日本時間では21日の23時です。

2件とも、深刻さを表すCVSS v4.0のスコアは9.2で、いちばん上の区分「緊急」に入ります。脆弱性の詳しい中身と影響を受けるバージョンは、修正版と同時に公開される予定です。

EUの機関向けのセキュリティ組織CERT-EUは、リモートコード実行につながるおそれがあるとみています。リモートコード実行は、ネット越しにサーバー上で好きなプログラムを動かされる攻撃です。CERT-EUは外部の情報をもとに、PHP 5以降のすべてのバージョンが影響を受けうるとしています。

「PHPは使っていない」と思った人も、自分の環境を一度確かめてください。WordPressで作ったブログやポートフォリオも、PHPで動いています。

PHPはどこで動いているのか

PHPは、Webサイトの裏側にあるサーバーで動くプログラミング言語です。W3Techsは、Webサイトで使われている技術を調べて公開しています。2026年10月21日時点の集計では、サーバー側の言語が分かっているサイトのうち69.3%がPHPでした。WordPressもPHPで書かれています。

初学者がPHPを使っていそうな場所を表にまとめました。

場所 例
レンタルサーバー WordPressで作ったブログやポートフォリオ
自分のPC HomebrewやXAMPP、MAMPで入れたPHP
Docker 学習で作ったLaravelなどのアプリ
VPSやクラウド 自分で公開したWebアプリ

自分のPCで表示されるPHPのバージョンと、サーバーで動いているPHPのバージョンは、同じとは限りません。使っている場所ごとに確かめてください。

記事に出てくる用語

用語 意味
脆弱性 プログラムにあるセキュリティ上の欠陥。悪用されると、情報を盗まれたりサーバーを乗っ取られたりする
CVE 脆弱性ごとに付く世界共通の番号。今回はCVE-2026-109618とCVE-2026-109619
CVSS 脆弱性の深刻さを0から10の数字で表す共通の指標
リモートコード実行 ネット越しに、サーバー上で好きなプログラムを動かされること
修正版 欠陥を直した新しいバージョン。パッチとも呼ぶ
サポート期限 開発チームが修正版を出す期限。期限が過ぎた状態をEOLと呼ぶ

CVSSの区分は次のとおりです。区分の境目はCVSS v4.0の仕様書、日本語の呼び名はIPAの解説に合わせました。

区分 スコア
緊急(Critical) 9.0〜10.0
重要(High) 7.0〜8.9
警告(Medium) 4.0〜6.9
注意(Low) 0.1〜3.9

今回の9.2は、いちばん上の「緊急」に入ります。

わかっていることと、まだわからないこと

わかっていることとまだわからないことを左右に並べた図

わかっていること まだわからないこと
脆弱性は2件で、どちらもCVSS v4.0で9.2 脆弱性の仕組み
修正版は日本時間21日23時に公開予定 影響を受けるバージョン
番号はCVE-2026-109618とCVE-2026-109619 修正済みのバージョン番号
詳細は修正版と同時に公開される 実際に悪用されているかどうか

PHPの開発チームは、詳細が外部に漏れた場合や悪用が確認された場合には、予定より早く公開することがあるとしています。この記事の時点では、悪用を確認したという公式の発表はありません。

詳細が出るまでの間は、推測にもとづく情報も出回ります。PHPの設定を推測で変えると、作ったアプリが動かなくなることもあります。初学者のうちは、php.netと公的機関の発表を確かめてから手を動かしてください。

今日やっておく3つの確認

1. 自分のPHPのバージョンを確かめる

ターミナルで次のコマンドを実行してください。

php -v

Ubuntu 24.04の環境では、次のように表示されました。

PHP 8.3.6 (cli) (built: Oct  7 2026 18:06:38) (NTS)

「PHP」のすぐ後ろにある8.3.6がバージョンです。先頭の8.3の部分をブランチと呼び、サポート期限はブランチごとに決まっています。

Dockerで動かしているアプリは、コンテナの中で同じコマンドを実行します。appの部分は、compose.yamlに書いたサービス名に置き換えてください。

docker compose exec app php -v

WordPressのサイトは、管理画面で「ツール」の「サイトヘルス」を開き、「情報」タブの「サーバー」を見てください。PHPのバージョンが表示されます。レンタルサーバーのPHPは、各社のコントロールパネルで確認できることが多いです。画面の場所はサービスごとに違うため、各社のマニュアルで確かめてください。

2. サポート期限を確かめる

PHPの開発チームは、各ブランチを最初のリリースから2年間サポートします。その後の2年間は、重大なセキュリティ問題だけを修正します。合わせて4年が過ぎたブランチには、通常、修正版を出しません。

2026年10月21日時点でサポート中のブランチは、次の4つです。

ブランチ セキュリティ修正の期限
8.2 2026年12月31日
8.3 2027年12月31日
8.4 2028年12月31日
8.5 2029年12月31日

8.1以前のバージョンは、すでにサポートが終わっています。 php.netは、サポートが終わったバージョンを使い続けると、修正されていない脆弱性にさらされるおそれがあると説明しています。

W3Techsの集計では、PHPを使うサイトのうち27.0%がバージョン7、7.7%がバージョン5で動いていました。サポートが終わったバージョンのサイトが、合わせて3分の1を超えています。

手元のPHPがサポート中かどうかを判定する、短いスクリプトも用意しました。次の内容をcheck-php.phpという名前で保存してください。

check-php.php
<?php
// check-php.php
// PHPのバージョンと、公式のサポート期限を確かめるスクリプト
// サポート期限は2026年10月21日時点の公式情報です
// https://www.php.net/supported-versions.php

$supported = [
    '8.2' => '2026-12-31',
    '8.3' => '2027-12-31',
    '8.4' => '2028-12-31',
    '8.5' => '2029-12-31',
];

// 引数を付けると、そのバージョンで判定します(例: php check-php.php 7.4.33)
$version = $argv[1] ?? PHP_VERSION;

// "8.3.6" から "8.3" を取り出す
$parts  = explode('.', $version);
$branch = $parts[0] . '.' . ($parts[1] ?? '0');

$today = date('Y-m-d');

echo "調べたバージョン: {$version}" . PHP_EOL;

if (isset($supported[$branch]) && $today <= $supported[$branch]) {
    echo "サポート中です(セキュリティ修正は{$supported[$branch]}まで)" . PHP_EOL;
    echo "修正版が出たら、{$branch}系の最新版に更新してください" . PHP_EOL;
} else {
    echo "サポートが終わったバージョンです(通常、公式の修正版は出ません)" . PHP_EOL;
    echo "サポート中のバージョン(" . implode('、', array_keys($supported)) . ")への移行を検討してください" . PHP_EOL;
}

保存したフォルダで次のコマンドを実行してください。

php check-php.php
調べたバージョン: 8.3.6
サポート中です(セキュリティ修正は2027-12-31まで)
修正版が出たら、8.3系の最新版に更新してください

引数にバージョンを付けると、そのバージョンで判定できます。サポートが終わった7.4.33を試すと、次のように表示されます。

php check-php.php 7.4.33
調べたバージョン: 7.4.33
サポートが終わったバージョンです(通常、公式の修正版は出ません)
サポート中のバージョン(8.2、8.3、8.4、8.5)への移行を検討してください

スクリプトに書いたサポート期限は、2026年10月21日時点の値です。実際に使うときは、php.netの「Supported Versions」のページで最新の期限を確かめてください。

Linuxのパッケージで入れたPHPの場合

先ほどの環境のPHPは8.3.6と表示されました。一方、php.netが2026年9月24日に公開した8.3系の最新版は8.3.35です。番号だけを見ると、かなり古いバージョンに見えます。

Ubuntuのセキュリティ更新は、今のバージョンを基に、直すのに必要な最小限の変更だけを入れる方針です。そのため、php -vの番号が古いままでも、修正が入っている場合があります。Ubuntuのパッケージでは、次のコマンドで更新の番号を確かめられます。

dpkg-query -W -f='${Package} ${Version}\n' php8.3-cli
php8.3-cli 8.3.6-0ubuntu0.24.04.12

末尾の「ubuntu0.24.04.12」は、Ubuntuがこのバージョンに付けた更新の番号です。今回の修正がいつ入るかは、Ubuntuが公開するセキュリティ情報で確かめてください。

3. 修正版が出たらすぐ更新できるようにしておく

インターネットに公開しているサイトやサーバーから、先に更新してください。外から接続できる場所は、攻撃を受ける可能性が高いからです。手元のPCで動かしている学習用のPHPも、修正版が出たら同じように更新します。

修正版を急いで当てたい理由は、もう1つあります。PHPの件とは別の例ですが、2026年7月にはWordPress本体の脆弱性「wp2shell」が、生成AIを使った調査で見つかりました。見つけたのはセキュリティ企業Searchlight Cyberの研究者です。攻撃が成り立つことを確かめるまでに10時間あまり、費用は約25ドルだったと書いています。研究者は修正前にWordPressへ報告し、WordPressは7月17日に修正版を公開しました。それでも2日後の7月19日には、この脆弱性を狙う攻撃用のコードが24件を超えて確認され、実際の攻撃も観測されています。修正版が出たら、その日のうちに当てる前提で準備しておいてください。

環境ごとの更新方法は次のとおりです。今日のうちに自分の環境の手順を確かめておくと、23時以降すぐに動けます。

使っている環境 修正版の入れ方
レンタルサーバー サーバー会社のお知らせを確かめ、案内に従って対応する
Mac(Homebrew) brew update && brew upgrade phpを実行する。php@8.3のように入れた場合はその名前を指定する
Linux(Ubuntuなど) 配布元の修正版が出たらsudo apt update && sudo apt upgradeを実行する
Docker 修正版を含む公式イメージが出たら、イメージを取り直してコンテナを作り直す
XAMPPやMAMP 修正版を含む新しい版が配布されたら入れ替える

Dockerの場合、Dockerfileでビルドしているならdocker compose build --pullを実行します。compose.yamlで公式イメージを直接指定しているなら、docker compose pullです。そのあとdocker compose up -dでコンテナを作り直してください。

すぐに更新できない公開サイトもあると思います。CERT-EUは、すぐに修正できない場合、インターネットに公開しているアプリを外部から切り離すことも検討するよう勧めています。学習用に公開しているアプリなら、更新できるまで公開を止めておくのがいちばん手軽です。

WordPressを使っている場合

WordPressのサイトも、サーバー上のPHPで動いています。共用のレンタルサーバーでは、PHP本体の更新はサーバー会社が行うのが一般的です。利用者は、コントロールパネルで選んでいるPHPのバージョンを確かめ、サーバー会社のお知らせを確認してください。

サポートが終わった7.4や8.1などを選んだままだと、サーバー会社が独自に直さない限り、修正が入らないおそれがあります。テーマやプラグインが動くかを確かめたうえで、サポート中のバージョンに切り替えてください。8.2は2026年12月31日で期限が切れるので、切り替えるなら8.3以降を選ぶと長く使えます。

WordPress本体やプラグインを最新にしても、PHPの脆弱性は直りません。直すにはPHP自体の更新が必要です。VPSやクラウドに自分でWordPressを入れた場合は、PHPの更新も自分で行ってください。

広告やアフィリエイトで収益を得ているブログは、特に早めに確認してください。改ざんされると、検索結果に警告が出たり広告が止まったりすることがあり、収入に響きます。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?