バックアップは、何かあったときのための備えです。ところが今回の脆弱性は、そのバックアップを取って戻す動作そのものを発火点にします。しかも危ないのは、古い控えではなく、いま取るほうです。500万を超えるインストールを持つプラグインで、何が起きていたのかを見ていきます。
Wordfenceは2026年9月1日、WordPressのバックアップ・移行プラグイン「All-in-One WP Migration and Backup」に未認証のSQLインジェクションの脆弱性があると公表した。CVE-2026-19949、CVSSは8.8。7.109以下が対象で、ServMaskが8月20日に7.110で修正した。アクティブインストールは500万を超える。
攻撃者は認証なしでトラックバックを送り、コメントとして保存させる。この値は、そのあとに管理者がサイトをエクスポートしてインポートした際にSQLとして実行され、シークレットキーai1wm_secret_keyが公開コメントに書き出される。攻撃者はこれを読み取って未認証のインポートを実行し、リモートコード実行に至る。
【編集部解説】
8月のinnovaTopiaは、WordPressのSQLインジェクションからリモートコード実行へつながる連鎖を続けて追いました。コアのREST APIを叩くwp2shellと、それを受けてエックスサーバーが顧客のWordPressを更新した対応です。今回の脆弱性も、形だけ見れば同じ「SQLインジェクションからRCEへ」です。ただ、当たり方がまるで違います。
wp2shellは、リクエストを送ればその場で結果が出るものでした。今回は、攻撃者がリクエストを送る瞬間と、被害が起きる瞬間が、時間的に切り離されています。セカンドオーダーと呼ばれる型です。
攻撃者が仕込みの段階でやることは、ピンを受け付けている公開投稿にトラックバックを2件送ることです。認証は要りません。WordPressのコアはこれをコメントとして保存します。この時点では何も起きません。ただのコメントです。
火が着くのは、そのあとで管理者がサイトをエクスポートし、そのアーカイブをインポートしたときです。
危ないのは、いま取るバックアップのほう
ここが今回いちばん重たい部分です。そして、条件を正確に押さえておく必要があります。
Wordfenceは「Important Note」という節をわざわざ立てて、こう限定しています。攻撃者は終始未認証だが、悪意あるトラックバックが保存されたあとに管理者がエクスポートとインポートを行わない限り、仕込まれたSQLは実行されない。つまり、種が撒かれる前に取った古い控えを戻すだけなら、この経路は成立しません。
裏返すと、危ないのは古い控えではなく、いま取るバックアップです。種が入った状態で書き出せば、種はそのままアーカイブに収まる。それを戻したときに火が着く。そしてバックアップと移行は、このプラグインの本来の用途です。Wordfenceもこれを日常的な操作だと位置づけています。安全網を張る手つきが、そのまま導火線を敷く手つきになる。
もうひとつ、記事のコメント欄で読者が投げた質問が的を射ていました。「使うときだけ有効化して、普段は無効にしている場合はどうなるのか」。プラグインを止めても、コメントテーブルに入った値のほうは消えません。仕込みはWordPressコアの機能で行われるので、プラグインの状態とは関係がないからです。
壊れていたのは、入口ではなく書き換えの側
原因を一言でいうと、正規表現の取りこぼしです。
このプラグインは、インポート時にSQL文の中のURLやテーブル接頭辞を書き換えます。そのために、どこからどこまでが文字列かを正規表現で見分けている。ところが、閉じ引用符の直前を1バイトしか見ておらず、バックスラッシュが何個続いているかを数えていませんでした。
バックスラッシュが2個並んでいれば偶数なので、その引用符は本物の終端です。しかしこの正規表現は「エスケープされた引用符」と判断し、次の文字列まで飲み込んでしまう。飲み込んだ値をアンエスケープし、置換し、もう一度エスケープする。この往復でバックスラッシュの数が合わなくなり、MySQLから見た文字列の境界が反転します。データだったものが、SQLに昇格する。
攻撃者が仕込むトラックバックの末尾にバックスラッシュを置いていたのは、このためです。
注目したいのは、入力を受け取る場所には問題がなかったということです。WordPressのコアはトラックバックをそのまま保存し、エクスポート処理もバックスラッシュを正しく二重化しています。壊れていたのは、そのあとで文字列を書き換える工程でした。入口を固めるという発想だけでは、この種の欠陥には手が届きません。
更新は、届く経路があってはじめて届く
8月のエックスサーバーの件では、事業者が影響対象のWordPressコアを顧客に代わって更新しました。今回必要なのはプラグインの更新です。誰が押すのかは、ホスティング事業者の権限と運用方針によって変わります。
あのとき浮かび上がったのは、押す人が誰かという話だけではありませんでした。WordPress.orgは7月17日にコアの強制自動更新を有効にしています。それでも更新が届かなかったサイトが残りました。原因は公表されていません。ただ、更新経路が塞がれる背景の一つとして、制作側が自動更新を切り、更新を止めるプラグインまで入れて納品したサイトが実在します。WordPressの修復を請け負う瀬尾真氏は、プラグインの更新まで止められているケースがあると指摘していました。
経路が塞がれているサイトは、今回も同じように取り残される可能性があります。500万を超えるアクティブインストールという数字の重さは、脆弱性そのものよりも、そこへ更新を届ける道がどれだけ開いているかにあります。
開発元のServMaskの動きは速いものでした。8月17日に報告を受け止め、20日には7.110を出しています。Wordfenceも記事の中でその迅速さに触れています。
その7.110のチェンジログには「末尾がバックスラッシュの値に対する検索と置換」という記述と、発見者への謝辞があります。CVE番号は載っていません。同じプラグインの7.98では、格納型XSSの修正にCVE-2025-8490と明記されていました。チェンジログは、利用者が管理画面で目にする更新判断の材料の一つです。そこに深刻度を読み取れる情報を置くかどうかは、この開発元に限った話ではなく、プラグインの世界がこれから揃えていく作法だと思います。
ファイアウォールが守るのは、種まきの側
Wordfenceは8月16日、有料版の利用者にファイアウォールルールを配信しました。無償版への配信は30日後の9月15日です。
見ておきたいのは、そのルールがどこで止めるかです。Wordfenceが公開した図では、遮断地点はトラックバックが到達する瞬間、つまり種が撒かれる側に置かれています。復元時の発火を止めるものではありません。
あとからWAFを入れても、すでにコメントテーブルに入っている値は消えない。9月15日にルールが届いても、それより前に撒かれたものはそのまま残ります。
やることは3つです。プラグインを7.110に上げること。身に覚えのないトラックバックやピンバックがコメントに残っていないかを見ること。使う予定がないなら、トラックバックの受け付けを閉じること。ただし「設定」の「ディスカッション」で既定を切っても、原則としてこれから作る投稿にしか効きません。すでに公開している投稿は、個別または一括編集で閉じる必要があります。攻撃の入口はwp-trackback.phpです。アクセスログが残っているなら、足跡はそこにあります。
日本の読者にとって
日本でも、企業や自治体、メディアのサイトにWordPressが使われています。制作や保守を外部へ委託しているサイトでは、サーバー移行や復元を受託側が担当することがあります。
この構図を今回の脆弱性に重ねると、少し落ち着かない絵になります。トラックバックを撒いた者と、エクスポートとインポートを実行する者と、被害を受けるサイトの持ち主が、それぞれ別人です。実行した人に悪意はありません。仕事をしただけです。
だから、移行や復元を請け負う側にとって、着手前にプラグインのバージョンを確かめることは、顧客のためであると同時に、自分を守る手順でもあります。
なお、公開されているCVSSベクターは、低い権限が必要(PR:L)で、利用者の操作は不要(UI:N)とするものになっています。Wordfenceの本文が説明する経路は「攻撃者は終始未認証で、管理者のエクスポートとインポートが必要」ですから、両者は噛み合っていません。スコアと、そこに至る経路の説明は、別々に読んだほうがよさそうです。8.8という数字だけで順番を決めると、この脆弱性の形は見えません。
Wordfenceの記事に、実際の悪用を確認したという記述はありません。ただし、観測の報告がないことは、悪用されていないことを意味しません。確認を待つ理由にはならない、ということです。
正規表現の否定後読みが1バイトしか見ていなかった。その一行の見落としが、500万を超えるアクティブインストールを持つプラグインの、移行と復元の手順まで届いてしまう。ソフトウェアの欠陥がどれほど遠くへ運ばれるかを、これほど素直に見せてくれる事例もそう多くありません。バックアップを取る習慣は正しい。そのうえで、戻す道具そのものを点検する日を、どこかに入れておきたいと思わされる一件でした。
【関連記事】
エックスサーバー、wp2shell対応で顧客のWordPressを更新
事業者が顧客のWordPressコアを更新した一件。更新が届かないサイトが残る背景を扱っている。
WordPress、守る場所は管理画面からAPIへ|wp2shellが示したもの
攻撃面が管理画面からAPIへ移ったことを論じた記事。守る場所の変化を設計側の視点で読み解いている。
WordPressにXSS2Shell、全バージョン影響 公式が緊急更新を呼びかけ
管理者の操作を起点とする別系統の脆弱性を扱った記事。成立条件の違いを整理している。
WordPressコアに認証前RCE「wp2shell」、6.9/7.0系に影響 7.0.2などで修正
一連の出発点にあたる記事。脆弱性の成立条件と影響バージョンの範囲を整理している。
【編集部後記】
このプラグインのチェンジログを、7.76まで遡って読みました。パストラバーサル、PHPオブジェクトインジェクション、格納型XSS、マルチサイトの権限。修正の並びが、そのまま「サイトを丸ごと運ぶ」という機能の難しさを語っています。
丸ごと運ぶとは、他人が書いた値ごと運ぶということです。コメントも、投稿も、設定も。中身を選ばずに運ぶ道具は、中身を選ばずに運んでしまう。
あなたのサイトの最後のバックアップは、いつ取ったものですか。
【用語解説】
SQLインジェクション
入力値の扱いの不備を突き、データベースへ意図しない命令を送り込む攻撃手法。
セカンドオーダー
悪意ある値がいったん保存され、後の別の操作で処理されたときに初めて危険になる型。仕込みと発火が分かれる。
CVE-2026-19949
共通脆弱性識別子。今回の脆弱性に振られた番号で、7.109以下が影響を受ける。
CVSS
脆弱性の深刻度を0.0から10.0で表す指標。評価項目の組み合わせを示す文字列をベクターと呼ぶ。
リモートコード実行
外部から任意のプログラムを動かされる状態。サイトの乗っ取りに直結する。
トラックバック
他のサイトから記事へ言及があったことを通知するWordPressの機能。認証を必要としない。
ピンバック
トラックバックと同系統の通知機能。コメントとして記録される点も共通する。
wp-trackback.php
トラックバックを受け付けるWordPressの入口となるファイル。
コメントテーブル
コメントの投稿者名やURLを保存するデータベースの表。プラグインの有効・無効とは独立して残る。
ai1wm_secret_key
このプラグインが未認証のインポート処理を守るために持つ秘密の鍵。データベースに保存される。
アーカイブ
サイトのファイルとデータベースを1つにまとめた書き出し。このプラグインは.wpress形式を使う。
正規表現
文字列の並びを型で言い表す記法。ここではSQL文の中の文字列を見分ける用途に使われている。
否定後読み
正規表現で、ある位置の直前が特定の文字でないことを条件にする書き方。今回は直前の1バイトしか見ていなかった。
エスケープ
記号を、命令ではなくただの文字として扱わせる処理。今回は付け外しの往復で数が合わなくなった。
MySQL
WordPressが標準で使うデータベース管理システム。
WAF
不正なリクエストを、アプリケーションに届く前で遮る仕組み。
REST API
外部のプログラムがWordPressを操作するための入口。標準で有効になっている。
強制自動更新
WordPress.orgが深刻な脆弱性に際して更新を配信する仕組み。サイト側の設定によっては実行されない。
アクティブインストール
そのプラグインが実際に有効化されているサイトの推定数。WordPress.orgでは丸めた値で示される。
格納型XSS
保存された値が、後から閲覧者の画面でスクリプトとして動いてしまう脆弱性。
wp2shell
WordPressコアの不具合を連鎖させ、認証なしで任意のコードを実行しうる攻撃手法の通称。
【参考リンク】
Wordfence(外部)
WordPressサイト向けのセキュリティ企業。今回の脆弱性の技術レポートを公開し、バグバウンティ経由の報告を受け付けている。
ServMask(外部)
All-in-One WP Migration and Backupの開発元。移行とバックアップ向けの有償拡張も提供している。
All-in-One WP Migration and Backup(外部)
プラグインの配布ページ。最新版とチェンジログを掲載しており、修正版7.110の修正内容と過去の対応履歴もここで確認できる。
WordPress.org(外部)
WordPressの公式サイト。セキュリティリリースの告知に加え、深刻な脆弱性に対する強制自動更新の運用も扱っている。
Wordfence Intelligence|該当脆弱性のエントリ(外部)
今回の脆弱性のデータベース登録。CVSS、影響バージョン、修正版、発見者、報奨金額を一覧で確認できるページ。
CVE-2026-19949(外部)
共通脆弱性識別子の公式記録。CVSSベクター文字列と、Wordfenceや修正コミットへの参照先を掲載している。
セオリコ(外部)
瀬尾真氏が運営するSEOとWordPressのサポートサービス。改ざんの修復や、更新が止まったサイトの保守を手がけている。
【参考記事】
WordPress backup plugin flaw exposes millions of sites to takeover attacks(外部)
Wordfenceの公表を受けた報道。修正版へ更新した利用者の割合と、脆弱なまま残るサイト数を示している。
CVE-2026-19949|INCIBE-CERT(外部)
スペインの政府系CERTによる登録情報。CVSSの各評価項目を個別に掲載しており、ベクターの内訳を確認できる。
All-in-One WP Migration and Backup Plugin Vulnerability (CVE-2026-19949)(外部)
米国のWeb制作会社によるセキュリティ速報。CVSSベクター文字列とCVEの公開日時を、参照先とあわせて明記している。
【2026年1月版】All-in-One WP Migration and Backupのバージョンと脆弱性情報(外部)
日本語による解説。このプラグインの過去の脆弱性と対応状況を、バージョンごとに整理している2026年1月時点の記事。














|WordPressプラグイン利用者は今すぐアップデートを-768x419.jpg)



