今週(10/19〜10/25)は、セキュリティの話題が立て続けに出た、慌ただしい週でした。10月21日にPHPそのものの重大な脆弱性が修正され、その前後で、WordPressの定番プラグイン2つの「配布元」が攻撃を受けたことが分かりました。Googleの検索アップデートはありません。
読む章の目安です。PHPで動くサイトを1つでも持っているなら1章を最優先で。Rank Math PROかUpdraftPlusを使っているなら2章、テーマやプラグインを作っているなら3章、CSSを書くなら4章です。
PHP本体の脆弱性「PHP2Shell」(10/21修正)— レンタルサーバーは事業者、VPSは自分で
10月21日(日本時間の23時ごろ)、PHPの開発チームが緊急の修正版を出しました。PHP2Shellと呼ばれる2件の脆弱性(CVE-2026-109618、CVE-2026-109619)で、ログインしていない攻撃者が、1回のリクエストでサーバー上のコードを実行できるというものです。
出典: Help Net Security — PHP2Shell: Critical PHP vulnerabilities patched / エックスサーバー — 予防的な安全対策に伴う公式サイト・管理画面等の一時停止のお知らせ

修正版は8.5.12・8.4.27・8.3.36・8.2.35です。PHP-FPMやApacheのmod_phpなど、Webのリクエストを処理するPHPはほぼすべてが対象です。攻撃はWordPressやプラグインのコードが動く前の段階で成立するため、WordPress側の更新やログイン制限では防げません。
制作者として押さえたいのは、誰が直すのかがサーバーの種類で分かれることです。
- 共有のレンタルサーバー: 事業者がサーバー側で直します。エックスサーバーは10月22日14時までに、PHP 5.6〜8.5のすべてで修正を終えたと告知しています。PHP 8.1以前はバージョン表記を変えずに対策したとのことで、表示の番号だけでは判断できません。ほかの事業者を使っている場合も、それぞれの告知を確認してください
- VPS・クラウド: 事業者は直しません。エックスサーバーもVPSは対象外と明記しています。OSのパッケージか公式の修正版に、自分で上げる必要があります。10月23日にはphp.netで追加の注意喚起も出ていて、次の定期リリースまでは
session.upload_progress.enabled=0にしておくよう勧められています
PHP本体は8.1以前の通常の修正版を出しておらず、7.4〜8.1向けにはソースに当てる最小限のパッチだけを出しています。そのため古いPHPで動いている案件では、使っているサーバーがどこまで対応しているかの確認が、そのまま作業の分かれ目になります。
クライアントのサイトを複数預かっているなら、まず「どれが共有サーバーで、どれがVPSか」の一覧を作るのが先だと思います。 共有サーバーなら告知を確かめれば済みますが、VPSは誰かが手を動かさない限り、穴が開いたままです。
💡 今すぐ試せる: 管理しているサイトを「共有サーバー」「VPS・クラウド」に分けて書き出す。VPSのものは、サーバーで php -v を打って修正版になっているかを確かめる。共有サーバーのものは、事業者の告知ページで対応完了の記載を確認する
Rank Math PRO と UpdraftPlus — 「配布元」が攻撃された2件
今週は、プラグインのコードの穴ではなく、プラグインを配っている側が攻撃された事件が2件続きました。
出典: Rank Math — PRO 3.0.123 Security Incident / TeamUpdraft — Security incident: What customers need to know / エックスサーバー — UpdraftCentralの接続キー流出に関する注意喚起
Rank Math PRO は、配布されていた3.0.123にマルウェアが入っていました。 対象は、日本時間で10月16日の5時2分から16時12分までにダウンロード・更新した人です。有効化していたら、サイトは乗っ取られたものとして扱うよう公式が求めています。無料版は対象外で、修正版は3.0.124です。
- 有効化した: 10月16日5時より前のバックアップから、サイトとデータベースを戻す。そのうえで、すべてのパスワードとAPIキーを替える
- 入れたが有効化していない: プラグインを削除し、3.0.124を入れ直して、スキャンをかける
- ダウンロードしただけ: この件だけでは被害の兆候はない
ページが表示されるたびに裏口を作り直す仕組みがあるため、手で掃除する場合は公式の手順の順番どおりに進めてください。
UpdraftPlus は、運営元のサイトに不正アクセスがありました。 10月17〜18日に顧客データベースが見られ、複数のサイトをまとめて管理する機能「UpdraftCentral」の接続キーが流出しました。攻撃者はこのキーで利用者のサイトにつなぎ、管理者アカウントを作ったり、不正なプラグインを入れたりしています。
10月19日に出た1.26.13(無料版)と2.26.13(Premium版)で古いキーは自動で無効になり、WordPress.orgからも配信されています。ただ、更新前に入られていた場合、作られたアカウントやプラグインは残ります。 運営元は、予期しない「編集者」権限のユーザーが増えている例を挙げていて、UpdraftCentralを使ったことがないPremium版の利用者にも確認を勧めています。
2件に共通するのは、信頼して自動で受け取っていたものが入口になったことです。 このコーナーではマイナー更新の自動化を勧めてきましたが、それで受け取った中身が汚れていることもある、という前提を持っておく必要があります。自動更新はやめずに続けたうえで、事件の前の日付で戻せるバックアップを持っておくのが現実的な線だと思います。サーバーとは別の場所に、日付ごとに残っているかを確かめておきたいところです。
💡 今すぐ試せる: 管理しているサイトでRank Math PROのバージョンと更新日、UpdraftPlusのバージョン(1.26.13・2.26.13以降か)を確認する。あわせて「ユーザー」で、見覚えのない管理者と編集者がいないかを見る
WordPress 7.2 Beta 1(10/20)— Secrets API が入った
予定どおり10月20日に、WordPress 7.2 Beta 1が公開されました。正式版は12月8日の予定です。
出典: WordPress News — WordPress 7.2 Beta 1 is Ready for Download and Testing
前号ではロードマップの段階の話を紹介しました。Beta 1で入ったもののうち、制作者に関わりそうなのは次のとおりです。
- Secrets API: APIキーや認証トークンを、暗号化して保存したり、入れ替えたりするための仕組み。10月14日の開発者ブログの時点では「入るかは未定」とされていました
- 管理画面のスクリプト読み込みの変更: これまでの「1つのファイルにまとめて配る」方式をやめ、個別に読み込んでキャッシュを効かせます。次に開きそうな画面の分は先に読み込んでおきます
- ブラウザ側での画像処理: メディアライブラリでも、アップロード前にブラウザで縮小・圧縮・形式変換ができるようになります
Secrets API は、2章の話を読んだあとだと見え方が変わります。 プラグインの設定画面に打ち込んだAPIキーは、いまは多くがデータベースにそのまま入っていて、乗っ取られたら一緒に持っていかれます。それを標準の仕組みで守れるようになるのは、地味ですが大きい変化です。
💡 今すぐ試せる: テスト環境で wp core update --version=7.2-beta1 を実行し(またはWordPress Playgroundで開き)、自作のプラグインやよく使うプラグインの管理画面が崩れないかを確かめる
Chrome 156(10/20)— CSSの random() で、JavaScriptなしの「ばらつき」
10月20日にChrome 156が公開されました。
出典: Chrome Platform Status — Chrome 156 Release Notes / GIGAZINE — Google Chrome 156 stable version released
いちばん目を引くのが、CSSの random() 関数です。random(最小, 最大) と書くと、その範囲の値が要素ごとに決まります。紙吹雪を散らしたり、カードの傾きを1枚ずつ変えたりといった、これまで Math.random() で値を作って style に入れていた処理が、CSSだけで書けます。
See the Pen CSS random() — JavaScriptなしで「ばらつき」を出す by BaseKENT (@basekent) on CodePen.
.dot {
position: absolute;
top: random(0%, 100%);
left: random(0%, 100%);
width: random(6px, 18px);
rotate: random(0deg, 360deg);
background: hsl(random(0, 360) 75% 60%);
}
最初に入れたのはSafari(26.2)で、Chromeが2番目です。Firefoxは158で実験的に入りましたが、既定では無効です。デモでは @supports で判定し、未対応のブラウザでは Math.random() で同じ見た目を作っています。
値はページを開くたびに変わるので、使いどころは装飾に限るのが安全です。 見るたびに並び順や読みやすさが変わってしまう箇所には向きません。
💡 今すぐ試せる: 自分のコードを Math.random() で検索し、見た目のばらつきのためだけに使っている箇所を探す。そこが random() に置き換えられる候補になる
今週のひとこと
今週やることは3つです。VPSのサイトは php -v で修正版か確かめる。Rank Math PROとUpdraftPlusの版を見て、見覚えのない管理者と編集者を探す。事件の前の日付で戻せるバックアップが、サーバーの外にあるかを確かめる。来週27日(火)はFirefox 159の予定です。



