WordPress のバックアップと引っ越しに使うプラグイン All-in-One WP Migration に、ログインしていない第三者が仕込んだ SQL を、管理者がバックアップを復元したときに実行させられる脆弱性があります。Wordfence が 9/1(米国時間)に手口の詳細を公開しました。有効インストールは 500 万です。
修正版の 7.110 は 8/20 に出ています。それ以降に更新していれば、公開された手口は効きません。wp.org の統計では 9/2 時点で 7.110 に上がっているのは 34% で、残りの 66% は修正前の版のまま、攻撃者が手順を読める状態になりました。
Wordfence の advisory とベンダーの changelog をもとに、やることだけ整理しました。
取るべき対応
- プラグイン一覧で All-in-One WP Migration のバージョンを見る。7.110 なら対応済みです。9/2 時点の現行版で、版番号は 7.11 とは別です
- 7.109 以下なら 7.110 に上げる。仕込まれた SQL が動くのは復元のときなので、復元の前に上げる。Wordfence 無料版に防御ルールが届くのは 9/15 です
- すぐ上げられないなら、上げるまでバックアップの復元をしない
対象者
対象は 7.109 以下を入れていて、このプラグインでバックアップを復元する WordPress です。仕込みは公開中の投稿へのトラックバックで入るので、投稿がピンバック・トラックバックを受け付けていることも条件です。Wordfence は、復元はこのプラグインの本来の用途で日常の操作だとしています。
起こったこと
ログインしていない第三者が、公開中の投稿にトラックバックを 2 件送るだけで、SQL をコメントとしてサイトに保存できます。この時点では何も起きません。管理者がこのプラグインでバックアップを取り、それを復元した瞬間に、保存されていた SQL がデータベースで実行されます。その SQL は、プラグインが復元の入口を守る秘密鍵をコメントに書き出して公開するもので、第三者はコメントの API から読めます。
秘密鍵が分かると、第三者はログインなしでこのプラグインの復元機能を動かせます。自分で用意した細工済みのバックアップを復元させ、常に読み込まれる mu-plugins にファイルを置いて、サーバー上で任意のコードを実行できます(CVE-2026-19949、CVSS 8.8)。そこから先はサイトの乗っ取りです。
原因
復元のとき、このプラグインはバックアップの中の SQL に含まれる URL とテーブル名の接頭辞を、移し先に合わせて書き換えます。その書き換えで文字列の区切りを見つける正規表現が、閉じ引用符の直前のバックスラッシュを 1 文字しか見ていませんでした。バックスラッシュが 2 つ並んだ本当の区切りを文字列の途中と読み違え、その先の書き換えでコメントの中身が SQL として実行される形になる、というのが Wordfence の説明です。


