All-in-One WP Migrationの脆弱性は
「無効化」では止まりません
CVE-2026-19949。修正版7.110はすでに8月20日に公開されています。待つ理由はありません。
📌 この記事の結論(先に5行)
- アップデートは、すでに来ています。対象は7.109以下、修正版は7.110で、2026年8月20日に公開済みです。「更新を待つあいだ無効化しておく」という状況ではなく、今日そのまま更新できます。
- 無効化は「一時的な足止め」であって、解除ではありません。この攻撃は、仕掛ける日と発火する日が別だからです。プラグインを止めても、すでにデータベースに置かれた文字列はそのまま残ります。
- 発火するのは「バックアップの復元(インポート)」の瞬間です。引っ越し、障害復旧、テスト環境づくり——どれもごく普通の作業です。旧版のまま復元することが、いちばん危険な操作になります。
- 発火すると、プラグインの合言葉が公開のコメント欄に漏れます。攻撃者はそれを拾い、ログインなしで細工したバックアップを流し込めます。ここまで来るとサイトごと乗っ取られます。
- 追加の確認が必要なのは、旧版のまま復元・インポートを実行した人だけです。該当する人向けのチェック項目を第6章にまとめました。心当たりがなければ、更新して終わりで構いません。
📋 目次
🧭 まず30秒|あなたはどのタイプですか?
この記事を全部読む必要がある人は、実はごく一部です。最初にここで振り分けてください。
「対象プラグインを使っている」と「危険な状態にある」は別の話です
All-in-One WP Migration and Backupは、WordPressの引っ越しやバックアップに使われる定番プラグインで、世界で500万サイト以上に入っています。ただし今回の脆弱性は、ある特定の操作をした人にだけ実害が出る仕組みです。まず、自分がどこにいるのかを確定させましょう。
| あなたの状況 | 危険度 | やること |
|---|---|---|
| A. このプラグインを入れていない | なし | 対応不要。ただし第7章の一般則だけは、他のプラグインにもそのまま当てはまります |
| B. 入れているが、7.110以上になっている | 対応済み | 今回の脆弱性は修正済みです。自動更新が有効かだけ確認しておけば十分 |
| C. 7.109以下だが、復元・インポートはしていない | 要更新 | 更新するだけで終わり。仕掛けが残っていても、更新後は発火しません(第5章) |
| D. 7.109以下のまま、復元・インポートを実行した | 要確認 | 更新に加えて、コメント欄・ファイル・管理者一覧の確認を(第6章) |
Dに当てはまる人は、そう多くありません
復元(インポート)は、引っ越しや障害復旧のときにしかやらない作業です。「バックアップを取っていただけ」「エクスポートしただけ」なら、公表されている攻撃の流れでは発火しません。落ち着いて更新してください。
📄 CVE-2026-19949とは何か
数字と日付を先に押さえます。ここが分かれば、あとの章はすべて「なぜ」の説明です。
| 項目 | 内容 |
|---|---|
| 脆弱性番号 | CVE-2026-19949(CVEとは=脆弱性1件ごとに世界共通で振られる背番号) |
| 対象 | WordPressプラグイン All-in-One WP Migration and Backup(提供元:ServMask)7.109以下のすべてのバージョン |
| 修正版 | 7.110(2026年8月20日公開) |
| 種類 | SQLインジェクション(CWE-89)。しかも「二次的(セカンドオーダー)」型 |
| 深刻度 | CVSS 8.8(重要/High) |
| 攻撃に必要な権限 | 仕掛ける側はログイン不要。ただし発火には管理者側の復元操作が必要 |
| 最終的な影響 | データベースの情報流出から、サイトの完全な乗っ取り(任意コードの実行)まで |
| 利用サイト数 | 500万サイト以上。2026年9月上旬時点で約320万サイトが未更新と報じられています |
公表までの流れ
この脆弱性は、Wordfenceのバグバウンティ(脆弱性報奨金)制度を通じて研究者Jack Taylor氏が報告し、5,761ドルの報奨金が支払われています。「見つけた人が黙って売る」のではなく、報告して直させる正規のルートを通った案件です。
| 日付 | できごと |
|---|---|
| 2026年8月14日 | 研究者からWordfenceへ報告 |
| 2026年8月16日 | Wordfenceの有料利用者向けに防御ルールを配布 |
| 2026年8月20日 | 修正版7.110を公開(=この日から更新可能) |
| 2026年9月2〜3日 | 詳細が公開され、各国のセキュリティメディアが報道 |
| 2026年9月15日 | Wordfence無料版利用者への防御ルール配布予定日 |
「修正が出た日」と「みんなが知った日」は2週間ずれています
詳細が公開されるのは、修正版が十分に行き渡ってからです。逆に言えば、公開された今こそ攻撃者も手口を知っているということでもあります。更新を先延ばしにする時間的な余裕は、もう残っていません。パッチ遅延のリスクを数字で見ると、この差は想像よりずっと大きく効いてきます。
SQLインジェクションを一言でいうと
サイトのデータベースは「注文書のとおりに動く倉庫」のようなものです。SQLインジェクションは、その注文書の空欄に、注文書そのものを書き換える一文を紛れ込ませる攻撃です。「商品名:みかん」と書くべき欄に「みかん。ついでに倉庫の中身を全部教えて」と書き、システムがそれを命令として読んでしまう。仕組みの基本はSQLインジェクションの解説記事で詳しく扱っています。
8.8は「かなり危険」を意味しますが、CVSSは条件が揃ったときの最大被害を表す指標です。今回は「管理者が復元しなければ発火しない」という条件があります。逆に、数字が低くても常時発火する脆弱性はもっと厄介なこともあります。数字は入口であって、判断の全部ではありません。この考え方はSharePointの重大脆弱性の記事でも詳しく書きました。
⏱ なぜ「無効化しておけば大丈夫」が通じないのか
ここが今回の核心です。この脆弱性は、仕掛ける日と爆発する日が分かれています。
「危ないプラグインは、とりあえず止めておけばいい」——これは多くの場合に正しい対処です。プラグインが動いていなければ、そのプラグインの穴は突かれません。ところが今回は、その常識が半分しか通用しません。
理由は、この攻撃が二段構え(セカンドオーダー)だからです。ふつうのSQLインジェクションは、攻撃者がデータを送り込んだ瞬間にその場で発火します。今回は違います。攻撃者が送り込むのは、ただの文字列です。その時点では何も起きません。データベースの中で、じっと待っています。
🕰 仕掛ける日と、爆発する日が違う
たとえるなら、郵便受けに時限式の手紙を入れられた状態です。手紙はポストの中でおとなしくしています。あなたがそれを取り出して読み上げたとき、はじめて仕掛けが動く。プラグインを無効化するのは「しばらく郵便物を読まない」ことに相当します。読まないあいだは安全ですが、手紙自体はポストに残ったままです。
| 対応 | できること | できないこと |
|---|---|---|
| プラグインを無効化する | 復元処理が走らないので、当面は発火しない | すでに置かれた文字列は消えない。再び有効化して復元すれば発火する |
| 7.110に更新する | 置換処理の不具合が直り、同じ文字列を復元しても命令として実行されない | 更新前にすでに発火・侵入されていた場合、その痕跡までは消えない |
| プラグインを削除する | ファイルごと消えるので、将来うっかり有効化する事故もなくなる | 次にバックアップや引っ越しが必要になったとき、入れ直しが必要 |
いちばん危ない選択は「無効化したまま、旧版で復元する」
「危ないと聞いたので止めておいた」→「サイトが壊れたので、止めていたプラグインを有効化してバックアップから戻した」。この順番が、公表されている攻撃の流れをそのままなぞってしまいます。復元する前に、必ず更新してください。
🔍 攻撃の流れを5ステップで見る
「トラックバック」「合言葉」「バックアップの流し込み」。順番に追えば、難しくありません。
公開されている解析にもとづく、攻撃の全体像です。専門用語は都度かみ砕きます。
ステップ1:攻撃者が、公開記事にトラックバックを送る
トラックバックとは、「あなたの記事を、私の記事から紹介しました」と自動で知らせるWordPressの古い機能です。ブログ同士がリンクし合っていた時代の名残で、多くのサイトでは今も受け付けたままになっています。送るのにログインは要りません。だからこそ、攻撃者にとっては誰でも使える「投入口」になります。
ステップ2:送られた文字列は、そのまま眠る
この時点では何も起きません。データベースの中に、ちょっと変わった記号(引用符やバックスラッシュ)を含む文字列があるだけです。サイトは普通に動き続けます。気づく手がかりが、ほとんどありません。これがこの攻撃の嫌なところです。
ステップ3:管理者がバックアップを復元(インポート)する
サーバーを移す、テスト環境を本番に反映する、障害から戻す——理由は何でも構いません。このプラグインが復元処理を始めると、バックアップの中身に対してURLやデータベースの接頭辞の一括置換をかけます。引っ越し先で正しく動くようにするための、必要な処理です。
ステップ4:置換処理で「文字列の囲い」が壊れる
ここが脆弱性の本体です。データベースへの命令文では、文字列を引用符で囲って「これはただの文字ですよ」と示します。ところがこの置換処理は、末尾がバックスラッシュで終わる値などを正しく扱えませんでした。その結果、囲いが途中で外れ、続く文字が「ただの文字」ではなく「命令」として読まれてしまう。攻撃者が数か月前に置いた文字列が、ここで初めて命令に変わります。
ステップ5:合言葉が公開コメントに書き出され、乗っ取りへ
実行される命令が狙うのは、ai1wm_secret_keyという値です。これはこのプラグインが「正規の依頼かどうか」を確かめるために使う合言葉で、本来は外に出てはいけません。攻撃者はこれを誰でも読める公開コメントの中に書き出させ、あとからコメント一覧のAPIを開いて回収します。
合言葉さえ手に入れば、あとはログインは要りません。攻撃者は自分で用意した細工済みのバックアップファイルを、正規の依頼のふりをして流し込めます。その中に、WordPressが起動時に必ず読み込む場所(mu-plugins)へ置かれるPHPファイルを仕込んでおけば、次にページが開かれた瞬間に攻撃者のコードが動きます。ここまで来ると、管理者権限を持った第三者がサイトの中にいるのと同じ状態です。
公表されている流れで引き金になるのはインポート/復元の側です。「バックアップを取っていただけ」なら、この連鎖は始まりません。ただし、そのとき取ったバックアップの中には仕掛けが入ったままである可能性があります。旧版で取ったバックアップを、あとから旧版で戻すと発火し得る——という点は覚えておいてください。
この攻撃が成立する条件は、意外と多い
①対象プラグインが7.109以下である ②記事がトラックバックを受け付けている ③攻撃者が事前に仕掛けている ④管理者が復元を実行する。4つ全部が揃って初めて成立します。だからパニックになる必要はありません。ただし、④は自分の意思でやってしまう操作なので、「知らずに自分で引き金を引く」形になるのが怖いところです。
✅ 今すぐやること|7.110への更新手順
作業そのものは3分で終わります。順番だけ間違えないでください。
順番が大事です。「更新してから復元」であって、逆ではありません
更新作業自体は、管理画面のボタンを押すだけです。ただし更新前に復元をしてしまうと意味がありません。もし今まさに引っ越しや復旧作業の途中なら、いったん手を止めて、先に更新を済ませてください。
手順1:いま入っているバージョンを確認する
WordPressの管理画面で「プラグイン」→「インストール済みプラグイン」を開き、All-in-One WP Migration and Backupを探します。プラグイン名の下に「バージョン 7.1xx」と表示されています。ここが7.110以上なら対応済み、7.109以下なら要更新です。無効化してあるプラグインも、この一覧には表示されます。
手順2:更新する
「更新可能」と出ていれば「今すぐ更新」を押すだけです。表示が出ない場合は、画面上部の「更新」メニューから最新情報を再取得してください。無効化したままでも更新はできます。「有効化しないと更新できない」という制限はないので、不安な人は無効のまま更新して、あとから有効化して構いません。
手順3:更新後にバージョンを見直す
表示が7.110以上になっていれば、今回の脆弱性については対応完了です。ここまでで、タイプCの人(前掲の振り分け表)はすべて終わりです。
□ プラグイン一覧でバージョンを確認した
□ 7.110以上に更新した(無効化中でも更新した)
□ 更新が終わるまで、復元・インポートを実行していない
□ このプラグインの自動更新を「有効」にした
□ 今後もう使わないなら、無効化ではなく削除した
すぐに更新できない事情がある場合
「本番サイトで、テストしてからでないと更新できない」という現場もあります。その場合の暫定策は次のとおりですが、いずれも時間稼ぎであって解決ではないことを前提にしてください。
| 暫定策 | 効果 | 限界 |
|---|---|---|
| 復元・インポートを一切しない | 引き金を引かないので、発火は防げる | 障害が起きて「戻すしかない」状況になると破綻する |
| プラグインを無効化する | うっかり復元を実行する事故を減らせる | 仕掛けは残る。有効化した瞬間に元の状態に戻る |
| 新規投稿のトラックバック/ピンバックを止める | 新しく仕掛けられる入口をひとつ塞げる | すでに仕掛けられた分には効かない。既存記事は個別設定が残る |
| WAF(セキュリティプラグイン等)を入れる | 既知の攻撃パターンを入口で弾ける | 製品と配信時期による。無料版はルール配布が遅れることがある |
| 立場 | 今週の最優先アクション |
|---|---|
| 個人ブログの運営者 | 管理画面から更新。今後使わないなら削除して、サーバー側のバックアップに一本化する |
| 会社サイトの担当者 | 更新に加え、直近に復元・移行作業をしていないかを制作会社に確認する |
| 制作会社・受託開発 | 管理下の全サイトのバージョンを棚卸し。8月20日以降に旧版で復元した案件がないかを洗い出す |
| サーバー管理者 | ユーザーへの注意喚起と、WAFルールの適用状況の確認 |
| いま引っ越し作業中の人 | 作業を止めて、先に更新する。順番を入れ替えるだけでリスクが消える |
🧾 旧版のまま復元してしまった人の確認手順
該当する人だけ読んでください。更新して終わりにできない、唯一のケースです。
7.110へ更新すれば、これから発火することはありません。しかし更新より前に旧版で復元していた場合、そのときすでに発火していた可能性は、更新では消えません。以下は、公表されている攻撃の流れから逆算した確認項目です。プラグイン提供元やセキュリティベンダーが公式に出した「侵害確認手順」ではありませんので、確実な調査が必要な場合は専門業者への依頼を検討してください。
復元後に見ておきたい5か所
- 公開コメント・トラックバックの一覧:管理画面の「コメント」を、復元を実行した日の前後で確認します。意味をなさない長い英数字の羅列、記号だらけの文章、見覚えのないトラックバックが出ていないか。この攻撃は盗んだ合言葉を公開コメントに書き出させるため、痕跡がいちばん出やすい場所です。
- コメントAPIの応答:ブラウザで自分のサイトの
/wp-json/wp/v2/commentsを開くと、公開コメントが機械的な形式で一覧表示されます。攻撃者が回収に使うのと同じ経路なので、管理画面の一覧と突き合わせて不審なものがないか見ておきます。 - wp-content/mu-plugins フォルダ:ここに置かれたPHPファイルは、有効化の操作なしに毎回自動で読み込まれます。乗っ取りの足場としてよく使われる場所です。FTPやファイルマネージャーで開き、身に覚えのないファイルがないか確認します(そもそもこのフォルダが存在しないサイトも多く、その場合は正常です)。
- ユーザー一覧の管理者権限:「ユーザー」画面で、権限グループが「管理者」になっているアカウントを全部確認します。人数が増えていないか、見覚えのないユーザー名やメールアドレスがないか。
- ファイルの更新日時:復元を実行した日以降に、自分が触っていないPHPファイルが更新・追加されていないか。不審なファイルの確認方法もあわせて参考にしてください。
何か見つかったら、消す前に記録を残す
不審なファイルやユーザーを見つけると、反射的に削除したくなります。しかし消してしまうと、いつ・どこから入られたのかが分からなくなります。スクリーンショット、ファイル名と日時、サーバーのアクセスログを先に確保してください。手順の全体像はインシデント対応プレイブックにまとめています。
なお、ここまで確認して何も見つからなかったとしても、それは「侵害されていないことの証明」ではありません。あくまで「分かりやすい痕跡は見当たらなかった」という意味です。企業サイトや個人情報を扱うサイトで不安が残る場合は、専門業者の調査を検討してください。
🌱 この一件が教える、WordPress運用の3つの一般則
CVE番号は半年で忘れられます。残るのは、この3つの考え方のほうです。
一般則1:使っていないプラグインは「無効化」ではなく「削除」する
無効化したプラグインは、動いていないだけでファイルはサーバーに残っています。今回のように「無効化しても仕掛けは残る」ケースもあれば、無効なプラグインのファイルが直接呼び出されて悪用された事例も過去にあります。何より、いつか誰かが有効化します。1年使っていないプラグインは、思い切って削除するほうが安全です。必要になったら、また入れればいい。
一般則2:「復元」は作業ではなく、リスクのある操作だと考える
バックアップからの復元は、心理的には「安全な側に戻す」行為です。ところが技術的には、過去のある時点のデータを、いまのサイトに丸ごと注ぎ込む操作です。その中に何が入っているかは、取った時点では誰も検査していません。だからこそ、
復元の前後に、2つだけ習慣を足す
前:復元に使うプラグインを最新版にしてから始める。後:復元が終わったら、管理者ユーザーと新しいファイルをひととおり見る。この2つを挟むだけで、今回のような「善意の作業が引き金になる」型の攻撃は、ほとんど成立しなくなります。
一般則3:使っていない「受け口」は閉じる
今回の入口になったトラックバックは、ほとんどのサイトが使っていないのに開いたままの機能の典型です。「使っていない=無害」ではありません。攻撃者から見れば、それはログインせずにデータを置ける場所です。今回は復元処理がその置き場所を読みましたが、別のプラグインが別の形で読む可能性は常にあります。
| 受け口 | 今も使っている人 | 閉じ方の目安 |
|---|---|---|
| トラックバック/ピンバック | ほぼいない(ブログ同士の相互紹介の名残) | 設定→ディスカッションで新規投稿の受付を外す。既存記事は投稿一覧の一括編集で変更 |
| コメント欄 | 使っているサイトも多い | 使うなら承認制にする。使わないなら受付を止める |
| ユーザー登録 | 会員サイト以外は不要 | 設定→一般の「誰でもユーザー登録できるようにする」を外す |
| XML-RPC | 専用アプリや一部連携ツールのみ | 使っていなければセキュリティプラグインやサーバー設定で制限 |
コメント欄を止めれば読者との接点が減り、XML-RPCを止めれば使っているアプリが動かなくなることがあります。「全部閉じるのが正解」ではなく、「使っていないものだけ閉じる」のが正解です。判断がつかない機能は、制作を依頼した会社に確認してから触ってください。
❓ よくある質問(FAQ)
実際に受けた質問と、判断に迷いやすい点をまとめました。
Q. 無効化してあるので、更新しなくてもいいですか?
A. 更新してください。無効化中でも更新できます。無効化はうっかり復元する事故を減らすだけで、脆弱性そのものは残っています。いつか誰かが有効化して復元すれば、そのとき危険が戻ってきます。「更新するまで無効のままにしておく」のは正しい判断ですが、その更新は今日できます。
Q. アップデートはいつ来ますか?
A. もう来ています。修正版7.110は2026年8月20日に公開済みです。詳細が報道されたのが9月に入ってからなので「これから対策版が出る」と誤解されやすいのですが、順番は逆で、修正が行き渡ってから詳細が公開されたという流れです。
Q. 更新したら、すでに仕込まれている文字列はどうなりますか?
A. 修正版では、復元時の置換処理がその文字列を「命令」ではなく「ただの文字」として扱うようになります。つまり残っていても発火しません。ただしコメント・トラックバックとしてはデータベースに残り続けるので、明らかに不審なものは通常どおり削除して構いません。
Q. すでに悪用されているのですか?
A. 執筆時点(2026年9月7日)では、実際に悪用されたという公表事例は確認できていません。米国CISAの「悪用が確認された脆弱性カタログ(KEV)」にも収載されていません。ただし、9月初旬に技術的な詳細が公開されたことで、再現を試みる動きは今後増える可能性があります。「まだ事例がない」は「これからも安全」ではありません。
Q. エクスポート(バックアップの取得)もやめたほうがいいですか?
A. 公表されている流れで引き金になるのは復元側なので、書き出しだけなら発火しません。ただし旧版のまま取ったバックアップには仕掛けが含まれている可能性があるため、更新してから取り直しておくと安心です。バックアップ自体をやめるのは本末転倒で、いちばんやってはいけない対応です。
Q. 別のバックアッププラグインに乗り換えるべきですか?
A. 今回の件だけを理由に急ぐ必要はありません。報告を受けて6日で修正版を出している点は、むしろ対応が早い部類です。慣れないプラグインへの乗り換えは、設定ミスや復元失敗という別のリスクを持ち込みます。乗り換えるなら、緊急対応が済んで落ち着いてから比較検討してください。
Q. レンタルサーバー側の自動バックアップは大丈夫ですか?
A. サーバー会社が提供するバックアップは、このプラグインとは別の仕組みなので、今回の脆弱性の影響は受けません。ただし「復元は慎重に」という一般則は同じです。復元後にサイトの状態を確認する習慣は、どちらの方式でも持っておいてください。
Q. トラックバックを止めれば、更新しなくても安全になりますか?
A. なりません。2つ理由があります。ひとつは、すでに仕掛けられた分には効かないこと。もうひとつは、この脆弱性の本体が「復元時の置換処理」にあるためで、入口はトラックバックだけとは限らないためです。トラックバックを閉じるのは有意義な予防策ですが、更新の代わりにはなりません。
Q. CVSS 8.8は、どのくらい危険という意味ですか?
A. 10点満点で、7.0以上が「重要(High)」、9.0以上が「緊急(Critical)」という区分です。8.8は重要の上のほうにあたります。ただし前述のとおり、この数字は条件が揃ったときの最大被害を表すもので、「明日必ず被害に遭う確率」ではありません。CVSSの読み方も参考にしてください。
この記事で扱っていないこと
- 攻撃コードの具体的な書き方(再現手順は掲載しません)
- 侵害されたサイトの復旧・クリーンアップの詳細手順(インシデント対応プレイブックを参照)
- WordPress全般の安全設定(プラグイン以外の対策は別記事で扱っています)
📚 参照した情報(2026年9月7日時点で確認)
- Wordfence「5 Million WordPress Sites Affected by SQL Injection Vulnerability in All-in-One WP Migration and Backup WordPress Plugin」2026年9月公開(CVE-2026-19949の詳細、報奨金制度による報告、防御ルールの配布時期)
- SecurityWeek「Over 3 Million WordPress Sites Affected by Migration Plugin Vulnerability」2026年9月3日(第二次SQLインジェクションの仕組み、合言葉の漏えいから乗っ取りに至る経路、未更新サイト数)
- BleepingComputer「WordPress backup plugin flaw exposes millions of sites to takeover attacks」2026年9月(修正版の公開日、更新率、無効化では完全には防げない旨)
- eSecurity Planet「CVE-2026-19949 Leaves Millions of WordPress Sites Running Vulnerable Plugin Versions」2026年9月(2026年9月2日時点で約325万サイトが未更新)
- Cyber Security News(報告日2026年8月14日、修正版公開2026年8月20日、防御ルール配布日、報告者と報奨金額、トラックバックが認証不要である点)
- WordPress.org プラグインディレクトリ「All-in-One WP Migration and Backup」変更履歴(7.110の修正内容、有効インストール数500万以上)
- SentinelOne Vulnerability Database「CVE-2026-19949」(CVSSスコア8.8、CWE-89、CISA KEV未収載)
※ 未更新サイト数は日々変動します。※ 第6章の確認項目は、公表された攻撃の流れから導いた確認観点であり、提供元が公式に示した侵害確認手順ではありません。※ 実際の作業前には必ずバックアップを取得し、本番環境での操作は慎重に行ってください。


コメント