WordPress 脆弱性の悪用を確認|更新中の数秒を狙う攻撃と対策
この記事の要点
- WordPress本体の4.7〜7.1.3には、本体を完全パッケージで更新している数秒の間に、ログインなしでサーバー上のコードを実行されるおそれがある脆弱性(CVE-2026-119977)がありました。
- WordPressは10月28日に7.1.4と4.7系までの修正版を公開し、米CISAは11月3日に悪用確認済みの一覧(KEV)へ追加しました。Wordfenceは遮断ルール配布後21時間で18,500件超の攻撃リクエストを記録しました。
- 編集部が11月4日に更新APIを確認したところ、日本語版のまま管理画面から手動更新すると、インストーラを含む完全パッケージだけが使われ、攻撃の前提条件の1つがそろいます。
- 更新処理は展開の前にupgradeフォルダの中身を隠しファイルも含めて削除するため、そのフォルダ内に置いた.htaccessによる遮断は、更新が始まった時点で消えてしまいます。
- 今週中に、全サイトの版が修正版になっているかを管理画面で確かめ、10月28日以降も未修正だったサイトはアクセスログと管理者アカウントを点検してください。
会社サイトや採用サイト、オウンドメディアで広く使われている WordPress の本体に、更新処理そのものを狙われる脆弱性 CVE-2026-119977 が見つかりました。WordPress は2026年10月28日に修正版 7.1.4 を公開し[1]、米CISA は11月3日、実際の攻撃での悪用を確認したとして KEV(悪用が確認された脆弱性の一覧)に追加しました[5]。国内でも Security NEXT が KEV への追加を報じています[12]。
この脆弱性は、WordPress 本体を更新している数秒の間にだけ開く「すき」を突くものです[4]。普段は安全に見えるサイトでも、更新のたびに危険な時間が生まれます。編集部が WordPress の更新 API とソースコードを確認したところ、日本語版のサイトに固有の事情と、よく紹介される回避策が効かない場合があることも分かりました[7][8]。
この記事では、何が起きたのか、なぜ「更新中」が危ないのか、日本語版のサイトで何が違うのか、そして今週確認することを整理します。情報は2026年11月4日時点のものです。
何が起きたのか?
WordPress は2026年10月28日、22件の脆弱性を修正したセキュリティリリース 7.1.4 を公開し、すぐに更新するよう呼びかけました[1][2]。最も深刻なのが、本体の更新処理中にログインなしでコードを実行されるおそれがある CVE-2026-119977 です[4]。修正公開から数時間で攻撃の試行が観測され、11月3日には米CISA が KEV に追加しました[4][5]。
10月28日
WordPress 7.1.4 を公開
10月28日 20:30(UTC)
Wordfence が遮断ルールを配布
WordPress の発表から約3時間後。最初の攻撃リクエストを検知したのは配布の9分後[4]。
10月29日
WordPress がアドバイザリを公開、Wordfence が攻撃状況を報告
WordPress 自身は深刻度を「low」と評価[3]。Wordfence はルール配布後の21時間で、インストーラのパスを狙うリクエストを18,500件超記録[4]。
10月31日
CVE が NVD に登録
影響範囲は 4.7〜7.1.3、CVSS 8.1(Wordfence の評価)[6]。
11月3日
米CISA が KEV に追加
米連邦機関の対応期限は3日後の11月6日[5]。
11月27日(予定)
Wordfence 無料版に遮断ルールが届く
有料版より30日遅れの配布[4]。
KEV は、米CISA が「実際に悪用が確認された」と判断した脆弱性だけを載せる一覧です[5]。WordPress 本体の脆弱性が KEV に載るのは2026年に入って3回目で、7月21日に2件、9月25日に1件が追加されています[5]。7月の件では、WordPress 自身が深刻度を理由に、影響を受けるサイトへ自動更新の仕組みで修正を強制配布しました(自動更新を止めているサイトには届きません)[11]。
なぜ「更新している最中」が危ないのか?
WordPress は本体を更新するとき、新しい版を丸ごと一時フォルダに展開してから所定の場所へ移します。7.1.3 以前はこの一時フォルダの名前が推測でき、多くのサーバーでは Web から見える場所にありました[3][4]。展開された中には WordPress の初期設定画面(インストーラ)も含まれるため、その数秒の間にインストーラを呼び出されると、コードを実行されるおそれがあります[4]。
完全パッケージを使う本体の更新中、WordPress は新しいファイルを、Web から配信されるアップグレード用フォルダ内の予測可能なディレクトリに展開していました。その展開との競争に勝った認証なしの攻撃者は、リモートからのコード実行に至る可能性がありました。
During a core update that uses a complete package, WordPress extracted the new files to a predictable directory inside the web-served upgrade folder. An unauthenticated attacker who wins a race against that extraction could reach remote code execution.

このように「確認した時点」と「使う時点」のずれを突く不具合は、TOCTOU(Time-of-check Time-of-use)と呼ばれます。NVD に登録された情報でも、この脆弱性は TOCTOU の競合状態(CWE-367)に分類されています(分類は CVE を採番した Wordfence による)[6]。攻撃者は、更新が始まるタイミングを知っている必要はありません。Wordfence によれば、一度きりのリクエストで成功する見込みは低いものの、自動で何度も問い合わせ続ければ成功の確率は上がります[4]。
Wordfence は、成功には次の4つの条件がそろう必要があるとしています[4]。攻撃の難しさを反映して CVSS は 8.1 で、「攻撃の複雑さ:高」と評価されています[6]。一方、WordPress 自身はアドバイザリで深刻度を「low」としており、評価は分かれています[3]。
- インストーラを含む完全パッケージで本体を更新していること[4]
- 一時フォルダが Web から見え、その中の PHP が実行できること[4]
- 一時フォルダの場所が推測できるか、見つけられること[4]
- WordPress が一時ファイルを片付ける前に、攻撃を完了できること[4]
評価が「低い」ことは、放置してよい理由にはなりません。Wordfence は、大口の送信元2つが少数のサイトに約14.5時間にわたって繰り返し問い合わせを続けていたと報告しており、この動きは更新のすき間を捕まえようとする行動と一致するとしています[4]。攻撃者はすでに条件を理解したうえで、待ち構える手口をとっています。
なお、Wordfence が報告しているのは攻撃の試行で、侵害が成立した件数は示していません[4]。CISA の KEV でも、ランサムウェアでの利用は「不明」とされています[5]。
日本語版の WordPress では何が違うのか?
日本語版のサイトを管理画面から日本語版のまま手動で更新すると、毎回インストーラを含む完全パッケージが使われます。編集部が11月4日に WordPress の更新 API を日本語の設定で照会したところ、日本語版として提示される更新は完全パッケージだけで、差分だけを入れる部分パッケージはありませんでした[7]。つまり、日本語版のままの手動更新では、この脆弱性の1つ目の条件が必ずそろいます。なお、同じ更新画面に表示される英語版(en_US)での更新を選ぶと、部分パッケージが使われます[7][14]。
| 更新のしかた | 配られるパッケージ | インストーラを含むか |
|---|---|---|
| 管理画面から日本語版のまま手動で更新 | 日本語版の完全パッケージのみ[7] | 含む(3,871ファイル)[7] |
| 自動バックグラウンド更新(同じ 7.1 系から) | 言語に依存しない差分だけの部分パッケージ(更新 API 上は en_US 扱い)[7][15] | 含まない(7.1.3 からは50ファイル、7.1.0 からは121ファイル)[7] |
| 本体のファイルを書き換えたサイトを手動で更新 | 部分パッケージは使われず、完全版などに切り替わる[14] | 含む |
| 別の系列から上げる(例:6.9 系から 7.1.4) | 部分パッケージの提示なし[7] | 含む[7] |
2026年11月4日時点。編集部が api.wordpress.org の更新 API を 7.1.0〜7.1.3、7.0.7、6.9.10 の各版・日本語の設定で照会し、7.1.4 のパッケージをダウンロードして中身を確認した結果。レンタルサーバーやマネージドサービスが独自の方法で更新している場合は、この表のとおりとは限りません。
自動バックグラウンド更新では、日本語のサイトでも、言語に依存しない差分だけの部分パッケージ(更新 API 上は en_US 扱い)が選ばれ、こちらにはインストーラが含まれていませんでした[7][15]。自動更新は、可能な限り部分パッケージを使う設定で動きます[15]。一方、修正版を当てる更新そのものも、更新前に入っている古いコードが展開を行います[14]。脆弱な版から 7.1.4 へ完全パッケージで上げる場合は、その最後の1回も危険な時間を含むということです。
upgrade フォルダに置いた .htaccess では防げないのか?
防げません。7.1.3 以前の更新処理は、展開を始める前に upgrade フォルダの中身を、隠しファイルも含めてすべて削除します[8]。修正版の 7.1.4 も、残すのは index.php だけです[9]。この削除は本体だけでなく、プラグインやテーマの更新でも同じ処理を通ります[8]。upgrade フォルダの中に置いた .htaccess は、ファイルの権限で削除できない場合などを除き、更新が始まった時点で消えます。
upgrade フォルダ自体に .htaccess を置いてアクセスを拒否するのは、一見もっともらしい対策です。しかしソースコードを読む限り、守りたい「更新中」にはその設定はもう残っていません[8][9]。遮断ルールは upgrade フォルダの外、つまりサイト直下や wp-content フォルダの .htaccess、または Web サーバーの設定ファイルに置く必要があります。
- Apache(多くのレンタルサーバー):サイト直下の .htaccess の
# BEGIN WordPressより上にRedirectMatch 403 ^/wp-content/upgrade/を置く(wp-content フォルダに別の .htaccess があっても効きやすい書き方) - nginx:サーバー設定に
location ^~ /wp-content/upgrade/ { deny all; }を加える - WordPress をサブディレクトリに置いている場合は、パスをその構成に合わせる
- 設定後、存在しない
/wp-content/upgrade/test.phpをブラウザで開き、404 ではなく 403 が返ることを確かめる(フォルダの URL だけだと、一覧表示の禁止でも 403 になり、効いていると誤認しやすい)
upgrade フォルダは、更新のときにサーバー内部でファイルを展開する作業場所です。訪問者に配信する必要のあるファイルは置かれないため、Web からのアクセスを拒否しても、通常はサイトの表示に影響しないと考えられます。ただし、構成によっては影響が出る可能性もあるため、本番に入れる前に、検証環境やバックアップを用意したうえで試してください。
どのバージョンが影響を受け、どこまで直っているのか?
影響を受けるのは 4.7〜7.1.3 で、修正は最新の 7.1.4 に加え、4.7 系までの各系列に提供されています[4][6]。4.6 以前には修正が提供されず、正式なサポートは最新版だけです[1][2]。自社サイトの版が下の表の「修正版」以上になっているかを確認してください。
| 系列 | 修正版 | 7.1.4 の22件のうち影響を受ける件数 |
|---|---|---|
| 7.1 | 7.1.4[2] | —(最新系列) |
| 7.0 | 7.0.8[2] | 22件[2] |
| 6.9 | 6.9.11[2] | 22件[2] |
| 6.8 | 6.8.12[2] | 20件[2] |
| 6.7 / 6.6 | 6.7.11 / 6.6.11[2] | 20件 / 19件[2] |
| 6.5 / 6.4 | 6.5.14 / 6.4.14[2] | 17件[2] |
| 6.0〜6.3 | 6.0.18〜6.3.14[2] | 9件[2] |
| 4.7〜5.9 | 4.7.39〜5.9.20[3][4] | 2〜9件[2] |
| 4.6 以前 | 提供なし[2] | — |
2026年11月4日時点。WordPress の公式ドキュメント(HelpHub)、GitHub のアドバイザリ、Wordfence の記載による。系列ごとの詳しい版は出典を確認してください。
7.1.4 のほかの21件は、多くが寄稿者・投稿者・編集者などログインした利用者を前提とする格納型クロスサイトスクリプティング(XSS)です[4]。前提条件があるぶん危険度は下がりますが、管理者が悪意あるページを開くと、アカウントの乗っ取りやサイトの改ざんにつながるおそれがあります[4]。外部の書き手や制作会社に投稿権限を渡しているサイトでは、こちらも早めに修正版を入れる理由になります。
今すぐやることは何か?
最初にやるのは、管理しているすべての WordPress が修正版になっているかを、自分の目で確かめることです。Wordfence も、自動更新が済んだと決めつけず、管理画面の「ダッシュボード」→「更新」で版を確認するよう勧めています[4]。次に、未修正だった期間があるサイトの点検です。
今週中に確認すること
- 会社サイト・採用サイト・キャンペーンサイトなど、社内にある WordPress をすべて洗い出す(制作会社が管理しているものも含む)
- 各サイトの管理画面で、版が 7.1.4 または自分の系列の修正版になっているかを確認する
- 未修正のサイトは、upgrade フォルダへのアクセス拒否をサイト直下の .htaccess かサーバー設定に入れてから更新する
- 10月28日以降も未修正だったサイトは、修正前の版のまま完全パッケージで更新した時刻の前後を中心に、アクセスログで upgrade フォルダ配下の PHP へのリクエストを探す
- 見覚えのない管理者アカウント、入れた覚えのないプラグイン、置いた覚えのない PHP ファイルがないかを確認する
- 4.6 以前で動いているサイトは、修正版が出ないため、更新か停止を判断する
点検の項目は、Wordfence が未修正だったサイトに勧めている確認内容に沿っています[4]。不審な管理者アカウントやファイルが見つかった場合は、更新だけでは不十分です。パスワードの変更、不審なファイルの削除、バックアップからの復元を含めて、侵害を前提に対応してください。
自動更新を止めているサイトはどうすべきか?
セキュリティ修正を含むマイナー更新の自動適用は、原則として有効のままにしておくべきです。WordPress は 3.7 から自動バックグラウンド更新を備え、マイナー更新は既定で有効になっています。公式ドキュメントも、無効にすることは強く非推奨としています[10]。
それでも、過去に表示崩れを恐れて自動更新を止めたサイトは少なくありません。wp-config.php に AUTOMATIC_UPDATER_DISABLED や WP_AUTO_UPDATE_CORE を書くと、自動更新が止まったり範囲が変わったりします[10]。担当者が替わってこの設定が忘れられると、今回のような修正が届かないまま運用が続きます。
| 設定 | 意味 | 確認すること |
|---|---|---|
| 既定(何も書かない) | マイナー更新と翻訳ファイルは自動で適用[10] | 今回の修正版が実際に入ったか |
AUTOMATIC_UPDATER_DISABLED を true | 自動更新をすべて止める[10] | 誰が、なぜ止めたのか。手動更新の担当と頻度 |
WP_AUTO_UPDATE_CORE を false | 本体の自動更新をすべて止める[10] | 同上 |
WP_AUTO_UPDATE_CORE を 'minor' | マイナー更新だけ自動で適用[10] | セキュリティ修正は届く設定 |
2026年11月4日時点の WordPress 公式ドキュメントによる。
WordPress 本体の脆弱性は、2026年に入って7月・9月・11月と KEV への追加が続いています[5]。プラグインやテーマの管理に加えて、本体の版を誰がいつ確認するのかを、保守契約や社内の担当表に書いておくことが、次の脆弱性への備えになります。制作会社に保守を任せている場合は、契約に本体の更新と版の報告が含まれているかを確かめてください。
AI を使った制作・運用で気をつけることは?
AI でサイトの改修案や設定ファイルを作るときは、出てきた対策を「そのまま効くか」まで確かめる必要があります。今回の upgrade フォルダの .htaccess のように、もっともらしい対策でも、ソフトウェアの実際の動きと合わず、肝心なときに効かないことがあります[8]。AI が提案した設定は、出典となる公式ドキュメントやソースコードと照らし合わせ、検証環境で動作を確かめてから本番に入れてください。
また、AI のコーディング支援で WordPress のテーマやプラグインを手早く作るほど、管理する部品は増えます。誰がどのサイトを作り、どの版で動いているかを一覧にしておくことは、AI の時代の脆弱性対応でも基本になります。生成AI を業務で使う際の考え方は、AIセキュリティとはで整理しています。
まとめ
CVE-2026-119977 は、WordPress 本体を完全パッケージで更新している数秒の間に、ログインなしでコードを実行されるおそれがある脆弱性です[3][4]。2026年10月28日に修正版が公開され、11月3日に米CISA が悪用確認済みとして KEV に追加しました[1][5]。
日本語版のサイトを管理画面から日本語版のまま手動で更新すると、毎回インストーラを含む完全パッケージが使われます[7]。upgrade フォルダの中に置いた .htaccess は更新の開始時に消えるため、遮断ルールはその外に置く必要があります[8][9]。まずは全サイトの版を確認し、未修正だったサイトはログと管理者アカウントを点検してください。PHP の脆弱性への対応はPHP2Shell の解説記事、よくある質問はFAQもあわせてご覧ください。
よくある質問
CVE-2026-119977 とはどのような脆弱性ですか?
WordPress 本体の 4.7〜7.1.3 にある脆弱性です。本体を完全パッケージで更新する間、新しいファイルが推測できる名前の一時フォルダに展開され、Web から見える状態になります。その数秒の間にインストーラを呼び出されると、ログインなしでサーバー上のコードを実行されるおそれがあります。2026年10月28日公開の 7.1.4 と、4.7 系までの各系列の修正版で直っています。
自動更新を有効にしていれば対応は不要ですか?
自動更新で修正版が入っていれば、この脆弱性への対応は済んでいます。ただし、自動更新が設定で止められていたり、失敗していたりすることもあります。管理画面の「ダッシュボード」→「更新」で、版が 7.1.4 か自分の系列の修正版になっているかを必ず確認してください。
日本語版の WordPress は特に危険なのですか?
2026年11月4日に編集部が更新 API を確認したところ、日本語版のまま管理画面から手動で更新する場合に提示されるのは、インストーラを含む完全パッケージだけでした(同じ画面の英語版での更新や、自動更新では差分だけの部分パッケージが使われます)。このため、未修正の版から手動で更新するたびに、この脆弱性の前提条件の1つがそろいます。修正版になっていれば、この問題は解消されています。
upgrade フォルダに .htaccess を置けば防げますか?
防げません。7.1.3 以前の更新処理は展開の前に upgrade フォルダの中身を隠しファイルも含めて削除し、7.1.4 も index.php 以外を削除します。遮断ルールは、サイト直下や wp-content フォルダの .htaccess、または Web サーバーの設定ファイルなど、upgrade フォルダの外に置いてください。
攻撃を受けたかどうかはどう確認すればよいですか?
10月28日以降も未修正だった期間があるサイトでは、修正前の版のまま完全パッケージで更新した時刻の前後を中心に、アクセスログで upgrade フォルダ配下の PHP ファイルへのリクエストを探してください。あわせて、見覚えのない管理者アカウント、入れた覚えのないプラグイン、置いた覚えのない PHP ファイルがないかを確認します。見つかった場合は、侵害を前提に、パスワードの変更や復元を含めて対応してください。
出典・参考資料
- 公式発表WordPress 7.1.4
- 公式発表Version 7.1.4
- 注意喚起A race condition during core updates that could lead to remote code execution
- 調査レポートWordPress 7.1.4 Patches Unauthenticated Upgrade-Window RCE; Exploitation Attempts Detected After Release
- 注意喚起Known Exploited Vulnerabilities Catalog
- 注意喚起CVE-2026-119977 Detail
- 公式発表WordPress.org Version Check API 1.7(version=7.1.3, locale=ja の応答)
- 公式発表wordpress-develop/src/wp-admin/includes/class-wp-upgrader.php at 7.1.3
- 公式発表wordpress-develop/src/wp-admin/includes/class-wp-upgrader.php at 7.1.4
- 公式発表Upgrading WordPress – Advanced Administration Handbook
- 公式発表WordPress 7.0.2 Release
- 記事「WordPress」更新機能のRCE脆弱性 - 悪用に米当局が注意喚起
- 調査レポートUsage Statistics and Market Share of WordPress, November 2026
- 公式発表wordpress-develop/src/wp-admin/includes/class-core-upgrader.php at 7.1.3
- 公式発表wordpress-develop/src/wp-admin/includes/class-wp-automatic-updater.php at 7.1.3
本記事の事実関係は、2026.11.04 時点で上記の出典をすべて再確認しています。 独立のファクトチェックで全出典・更新API・パッケージ7本・ソースコードを照合し、Apache の遮断ルールは実機で検証。指摘(修正5件・要注記)を反映済み。
AIセキュリティの基本は「AIセキュリティとは」で解説しています。