セキュリティー

PHPの脆弱性公開にまつわる混乱についての雑感

2026年10月26日

PHPは10月21日付で、攻撃者によるリモートコード実行につながる可能性のある深刻な脆弱性の存在と、その脆弱性を修正した新しいバージョンを公開しました。

20261025-PHP.png

影響を受けるのは、PHP 5.4 以降のすべての PHP の様です。PHP は、セキュリティーフィックスを行った次のバージョンを公開しています。

・PHP 8.5.12
・PHP 8.4.27
・PHP 8.3.36
・PHP 8.2.35

また、同様の脆弱性はPHP 5.4-8.1でも確認されていますが、これらのバージョンはサポート対象外なので、PHPによる修正バージョンの公開はされていません。

従って、PHP で web ページを構築している場合、PHPのバージョンを上に挙げた4つのうちのどれか一つに上げる必要があります。PHP スクリプトが、古いPHPでは実行できるが PHP 8.2 以上では実行できない場合は、PHP 8.2 以降で実行できるようにスクリプトを修正するか、web サイトで用いているPHPについて、今回の脆弱性を修正するための独自のパッチをあてたものに変更する必要があります。これを行わないと、近い将来、リモートコード実行の攻撃を受けてしまう可能性が非常に高いです。

どうすればよいのか?

あなたが、PHPスクリプトもwebサーバーも、すべて自前で準備している場合、当然PHPバージョン8.2以上の最新版(8.5.12/8.4.27/8.3.36/8.2.35 以上)を適用し、PHPスクリプトもそういったバージョンに対応しているかどうかを確認するべきです。

あなたが、webページをPHPで構築しているが、webサーバーはそういったサービスを提供している会社の物を利用している場合(私もこれです)、あなた自身は何もする必要はありません。サービスを提供している会社がその対応を終えるのを待ってください。そういったサービスは、バージョン 8.2 以降のPHPを提供しているはずです。そうであれば、あなたのスクリプトはPHP 8.2以降に対応しているはずなので、問題なく動きます。

あなたが使用しているPHPのバージョンが 8.1 もしくはそれ以前の物の場合、サービスを提供している会社が上で挙げた修正バージョン(8.5.12/8.4.27/8.3.36/8.2.35)もしくはそれ以上に移行していることを確認し、使用するPHPを8.2以上に上げてください(場合によっては、スクリプトの修正も必要です)。もしそのサービスがPHP 8.2以上を提供していない場合、そのサービス会社はセキュリティーに無頓着な企業ですから、すぐに利用を止めることをお勧めします。

あなたが、上で書いた3つの場合のどれにも相当しない場合、何もする必要はありません。利用・閲覧しているwebサービスが一時的に停止しているかもしれませんが、再開するのを待ってください。もし、利用していたサービスが長い間再開されない場合、そのサービスは今後利用しないことをお勧めします。また、そのサービスで使っていたパスワードを別のサービスでも使っていた場合、それらすべてのパスワードを変更してください。

あたふたしている人達

通常の場合、上で説明したように、サーバーを自前で準備している場合はPHPが提供する最新版にバージョンアップするか、企業のwebサービスを利用している場合はその企業で対応が済むのを待つか、どちらかです。対応はスムーズなはずです。ただし、以下のような人たちは今回の脆弱性の公表に伴って、あたふたしているかもしれません。

・webページの構築を外注していたが、保守契約を結んでいなかった
・PHP 8.1もしくはそれ以前のバージョンを使い続けていた

今の時代、webページは一度構築すればそれで終了、という物ではありません。常にセキュリティーの問題が付いて回るので、webページの運営には、セキュリティー対策が必須です。自分でセキュリティー対策ができる場合は良いですが、そうでなければ、専門の業者にそれをゆだねることになります。ですので、webページの構築を外注する場合は保守契約も必須の時代になっている、という認識が必要でしょう。

もし、webページの構築を古いPHPのバージョンで行っている場合、次の2つの対策のどちらかを行うべきです。

1.PHP 8.2 以上のバージョン(PHP 8.5 が望ましい)で動くように、PHP スクリプトを修正する
2.古いバージョンのPHPに対し、今回公開された脆弱性を修正するパッチを導入する

2の方法の場合、比較的速やかに対応できるはずですが、1の方法の場合、スクリプトによってはかなりの手間がかかる場合があります。いずれにせよ、8.1やそれ以前のPHPを使い続けているのは、セキュリティーに無頓着な状態ですので、これを機に最新版のPHPでしっかり動くようにスクリプトを改めるべきです。もし、保守契約を結んでいたにもかかわらず、上の1の状態であたふたするようなら、その保守契約を結んだ会社はセキュリティー対策が全く出来ていない会社ですので、契約先を変えた方が良いでしょう。2の対策を続けている場合は微妙ですが、いずれ最新版のPHP(もしくは別の言語)に対応するように、大々的に書き換えることになるはずで、古いPHPに独自のパッチをあてるといった対策は一時しのぎです。

Jeans CMSでの対応

Jeans CMSは、PHP 8.3 で動くように整備してありました。従って、このブログの運営でも、webサービスプロバイダー(Hostinger)での対応を待っただけです。ただし、今後のPHPの古いバージョンのメンテナンス終了に備えて、より高いバージョンに対応できるように調整しました。

色々試した結果、PHP 8.4 に移行する事にしました。PHP 8.5 に移行する事も可能だったのですが、PHP 8.3 でも PHP 8.5 でもどちらでも動くようにスクリプトを調整するためには、コードが少し汚くなってしまいます。このブログでの使用のみを考えれば、すべて書き換えてPHP 8.5 用にすることもできたのですが、PHP 8.3 でも使えるように、コードの変更は最小限に抑えて、PHP 8.3 と PHP 8.4 の両方で動くものにしました。

PHP 8.5 で警告表示なしに動くようにするには、SQLiteへの接続に、「new PDO()」ではなく「PDO::connect()」を利用し、「$pdo->sqliteCreateFunction()」ではなく「$pdo->createFunction()」を使わないといけません。ただ、この方法は PHP 8.4 と PHP 8.5 では使えますが、PHP 8.3 では使えないので、このアップデートは少し先に行う事にしました。PHP 8.4 のセキュリティサポートは2028年12月31日までですので、それより前に、Jeans CMS は、PHP 8.5 もしくはそれ以降のバージョンに対応させることとします。

コメント

コメントはありません

コメント送信