PHPに重大な脆弱性が見つかった、というニュースが流れてきた。名前は「php2shell」。
WordPressでブログをやっている身としては、穏やかではない。しかも、パスワードを知っていても知らなくても関係なく、外から乗っ取られる可能性があるという。
焦った。そして、とりあえず手を動かした。
会社にも問い合わせが殺到していた
焦っていたのは私だけではない。
私は会社でIT関係の仕事をしているのだが、ニュースが出てからというもの、お客様から「御社のツールはPHPを使っていますか」という問い合わせがバシバシ届いている。みんな不安なのだ。
PHPは、本当にいろいろなところで使われている。ブログだけでなく、ネットショップも、会社のシステムも、あちこちでPHPが動いている。
正直、これで人類が滅亡するのではないかとすら思った。もちろんPHPの脆弱性が直接人類を滅ぼすわけではない。ただ、この混乱がどこかで連鎖して、人類滅亡のトリガーを引いてしまうのではないか。PHP問題は序章にすぎず、他で色々と脆弱性が見つかり、混乱に陥った人類は滅亡する!
今回のセキュリティの脆弱性も AI が見つけたものなので、AI によって人類が滅ぼされるというシナリオの一つなのではないだろうか。
・・・そんな考えが、なんとなく頭をよぎった。
まず、プラグインを全部更新した
脆弱性と聞いて、反射的にやったのがこれだ。WordPressの管理画面を開き、溜まっていたプラグインの更新を片っ端から当てた。
やるべきことをやった気がして、少し落ち着いた。
調べたら、プラグインは関係なかった
落ち着いたところで、ちゃんと記事を読んでみた。
php2shellは、WordPressやプラグインの問題ではなかった。WordPressを動かしているPHPそのものの問題だった。
ざっくり言うと、PHPがアクセスを処理するときの「後片付け」に失敗があった。わざと異常を起こすようなアクセスを送ると、メモリの上に中途半端なデータが残る。続けて別のアクセスを送ると、PHPがその残骸を使ってしまい、結果として外から好きな命令を実行できてしまう。そんな仕組みらしい。
しかも原因となったコードは十数年前までさかのぼるという。普通に使っている分には表に出ない欠陥だったわけだ。
つまり、私が慌てて更新したプラグインは、今回の件とはまったく関係がなかった。
PHPのバージョンを確認したら、修正前だった
本当に確認すべきだったのは、PHPのバージョンだ。
WordPressの管理画面の「ツール」→「サイトヘルス」→「情報」→「サーバー」で、使っているPHPのバージョンが見られる。
表示されたのは「8.4.26」。修正版は「8.4.27」。
修正前である。また焦った。
サーバー会社のお知らせを読んだら、解決した
このブログはConoHa WINGというレンタルサーバーで動いている。そこで、ConoHaのお知らせを見に行った。
すると、ちゃんと告知が出ていた。要約するとこうだ。
- PHPの脆弱性に対応するため、サーバーにセキュリティパッチを順次適用している
- PHPのバージョンはそのままで、パッチを当てる
- 利用者がPHPのバージョンを変更する必要はない
番号が8.4.26のままだったのは、バージョンを上げずに中身だけ直す方式だったからだ。私が見た「修正前の番号」は、問題ではなかった。
その後、対応完了のお知らせも出た。

レンタルサーバーなら、まずサーバー会社のお知らせを読め
振り返ってみると、私の行動はこうだった。
- ニュースを見て焦る
- 関係のないプラグインを更新する
- PHPのバージョンを見て、また焦る
- サーバー会社のお知らせを読んで、解決する
最初に4をやっていれば、1〜3は要らなかった。
レンタルサーバーでWordPressを使っている場合、PHPの面倒を見ているのはサーバー会社だ。こういうニュースが出たら、まずは契約しているサーバー会社のお知らせを確認する。それが一番早くて、一番確実だった。
それでも、こまめなチェックは必要だ
とはいえ、プラグインの更新が無駄だったわけではない。
WordPressは今年の夏にも、ログインなしで乗っ取られる危険のある脆弱性が続けて見つかっている。プラグインや本体を最新にしておくのは、php2shellとは関係なく大事なことだ。
そして、プラグインの更新をサボるのも危ないが、ログインそのものをサボるともっと危ない。これは実体験である。
私は三日坊主どころか「2ヶ月坊主」で、このブログを始めて2ヶ月で一度放置してしまった。久しぶりに戻ってきたら、WordPressの管理画面にアクセスできなくなっていた。セキュリティ用のプラグインが、管理画面のURLを変えていたのだ。
結局AIに相談しながら、なんとかログインし直すことができた。しかし、あのまま入れなければ、更新どころの話ではなかった。脆弱性のニュースが出ても、手も足も出なかったわけだ。
あわせて、管理画面の「ユーザー」に知らない管理者がいないか、「プラグイン」に入れた覚えのないものがないかも確認した。幸い、何も見つからなかった。【実際に確認したかどうか、合わせて直してください】
世界中のPHPエンジニアの皆様へ
結局のところ、今回私がやったことのほとんどは、焦りから来た遠回りだった。それでも、遠回りした分だけ、自分のブログが何の上で動いているのかが少しわかった。
私がプラグインの更新ボタンを押して安心していた間にも、日本全国、そして世界中で、PHPエンジニアの皆さんが対応に追われていたはずだ。
人類が滅亡しないで済んでいるのは、たぶん皆さんのおかげである。本当に頭が下がります。お疲れ様です。

コメント