WordPressのコア更新の競合状態CVE-2026-119977の悪用

カテゴリ
脆弱性の悪用
タグ
国外
目次
  1. 脆弱性の内容
  2. 時系列
  3. 対象の製品と版
  4. 悪用の状況
  5. 修正と回避策
    1. 最初の更新に残る窓
    2. 発見者が示した手順
  6. 未公表の事項
  7. 注
  8. 出典
  9. 更新記録
  10. 関連記事

WordPressの2026年10月28日のリリース告知によると、更新の時間帯にリモートでのコード実行に至りうる更新処理の弱点を7.1.4で直し、修正を4.7までの系列にバックポートした⁠[1]。米CISAはこの脆弱性CVE-2026-119977をKEVカタログに加え、悪用の状況の評価は「active」だった⁠[4]。

脆弱性の内容

CVE記録の説明では、完全パッケージでコアを更新するときに使う一時の展開先が予測でき、Webから到達できるため、認証の無い攻撃者が更新の時間帯にサーバー上でコードを実行しうる⁠[4]。WordPressはGitHubでアドバイザリGHSA-4w3m-c66w-69mgを公表した⁠[3]。

表1:CVE-2026-119977の評価
項目値資料
CVSS 3.1(CNAのWordfenceの評価)8.1、HIGH(AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H)⁠[4]
Patchstackの評価AC:H、実用的に悪用できるとは言わない⁠[7]
CWECWE-367(TOCTOUの競合状態)⁠[4]
SSVC(CISAの評価)Automatable: no、Technical Impact: total⁠[4]

発見者はPicus Securityのブログで、完全な更新はパッケージをwp-content/upgradeの下に展開し、既知のファイルを確かめてから稼働中のサイトへ複写し、一時の作業ディレクトリを消す順に進むと説明した⁠[6]。問題は展開と複写のあいだに起きる⁠[6]。一般的な構成ではwp-contentが公開のドキュメントルートの下にあって中のPHPを実行できるので、展開した木は一時的に到達できる2つ目のWordPressになる⁠[6]。

Picus Securityの11月4日の解説では、展開した写しのインストーラsetup-config.phpは2か所だけで既存の設定を探すため、稼働中の設定を見つけられず、認証を求めずに設定の処理を始めていた⁠[6]。攻撃者は自分のデータベースの接続情報を渡し、一時の木にwp-config.phpを書かせられる⁠[6]。更新の複写はwp-config.phpを確かめも飛ばしもしないので、稼働中のwp-config.phpが上書きされる⁠[6]。

発見者の説明では、空のデータベースを指す設定に替わるとインストールの手順が出て、攻撃者は最初の管理者を作れる⁠[6]。管理者がPHPのプラグインを入れられる構成では、Webサーバー上でPHPのコードを実行できる⁠[6]。

Patchstackは、7.1.4までは展開先の名前がパッケージから付き、管理画面からアップロードしたものは名前を完全に予測できたと説明した⁠[7]。最初に走る片付けは、ディレクトリの一覧表示を止めるindex.phpも消していた⁠[7]。更新にかかる数秒のあいだ、完全なWordPressが推測でき一覧できるパスに置かれていた⁠[7]。

WordPressの更新の手引きでは、3.7以降の多くのサイトはマイナー版とセキュリティ更新をバックグラウンドで自動で当てる⁠[13]。7.1.4の告知も、自動のバックグラウンド更新に対応したサイトでは更新の処理が自動で始まると書いた⁠[1]。Patchstackは、時間の窓が無人の更新を含む毎回の更新で開くと述べた⁠[7]。

発見者は、GPT 5.6 Solを研究の相手に使い、更新処理を見始めてから動く攻撃の連鎖まで約4時間だったと書いた⁠[6]。Xintも公表の前に独立にこの問題を見つけ、実際の更新中の悪用の経路と7.1.4の修正を検証したと説明した⁠[9]。

目次へ

時系列

時系列
日付主体内容資料
2026年10月28日WordPress7.1.4と各系列の修正版を公開した⁠[1、2]
2026年10月30日WordfenceCVE-2026-119977を予約した⁠[4]
2026年10月30日Previdianセンサーで最初の悪用の試行を観測した⁠[8]
2026年10月31日WordfenceCVE記録を公開した⁠[4]
2026年11月3日CISAKEVカタログに加えた⁠[4]
2026年11月3日カナダのサイバーセキュリティセンターAV26-1117を出し、7.1.4より前の版が影響を受けるとした⁠[5]
2026年11月3日Xint独立に見つけた問題の分析を公開した⁠[9]
2026年11月4日Picus Security発見者の技術解説を公開した⁠[6]

目次へ

対象の製品と版

表2:系列ごとの影響を受ける版と修正版
製品影響を受ける版修正版資料
WordPress 7.1系列7.1.0〜7.1.37.1.4⁠[2、4]
WordPress 7.0系列7.0.0〜7.0.77.0.8⁠[2、4]
WordPress 6.9系列6.9.0〜6.9.106.9.11⁠[2、4]
WordPress 6.8系列6.8.0〜6.8.116.8.12⁠[2、4]
WordPress 6.7系列6.7.0〜6.7.106.7.11⁠[2、4]
WordPress 6.6系列6.6.0〜6.6.106.6.11⁠[2、4]
WordPress 6.5系列6.5.0〜6.5.136.5.14⁠[2、4]
WordPress 6.4系列6.4.0〜6.4.136.4.14⁠[2、4]
WordPress 6.3系列6.3.0〜6.3.136.3.14⁠[2、4]
WordPress 6.2系列6.2.0〜6.2.146.2.15⁠[2、4]
WordPress 6.1系列6.1.0〜6.1.156.1.16⁠[2、4]
WordPress 6.0系列6.0.0〜6.0.176.0.18⁠[2、4]
WordPress 5.9系列5.9.0〜5.9.195.9.20⁠[2、4]
WordPress 5.8系列5.8.0〜5.8.185.8.19⁠[2、4]
WordPress 5.7系列5.7.0〜5.7.205.7.21⁠[2、4]
WordPress 5.6系列5.6.0〜5.6.225.6.23⁠[2、4]
WordPress 5.5系列5.5.0〜5.5.235.5.24⁠[2、4]
WordPress 5.4系列5.4.0〜5.4.245.4.25⁠[2、4]
WordPress 5.3系列5.3.0〜5.3.265.3.27⁠[2、4]
WordPress 5.2系列5.2.0〜5.2.295.2.30⁠[2、4]
WordPress 5.1系列5.1.0〜5.1.275.1.28⁠[2、4]
WordPress 5.0系列5.0.0〜5.0.305.0.31⁠[2、4]
WordPress 4.9系列4.9.0〜4.9.344.9.35⁠[2、4]
WordPress 4.8系列4.8.0〜4.8.334.8.34⁠[2、4]
WordPress 4.7系列4.7.0〜4.7.384.7.39⁠[2、4]

WordPressによると、4.6以前はセキュリティ更新を受けない⁠[2]。発見者は、更新と複写の下地の動作は2.7.0〜7.1.3〔注1〕に及ぶが、すべての更新がインストーラを露出するわけではないと説明した⁠[6]。攻撃の連鎖に要るインストーラのファイルを含むのはfull・no_content・new_bundledのパッケージで、partialとrollbackは個々のアーカイブがそれらのファイルを含むときだけ当たる⁠[6]。

表3:版ごとの一時の展開先の名前(発見者の説明)
版展開先の名前資料
2.7.0〜2.7.1固定のwp-content/upgrade/core⁠[6]
2.8.0〜4.3.35取得したパッケージのファイル名から導ける⁠[6]
4.4.0〜5.8.186文字の乱数が付いて導けず、冗長なエラーなど別の経路でパスが漏れたときだけ条件付きで悪用できる⁠[6]
5.9.0〜7.1.3Content-Dispositionのファイル名の扱いで、再びパッケージのファイル名から導ける⁠[6]

目次へ

悪用の状況

The Hacker Newsの10月30日の記事によると、Wordfenceは過去24時間にこの脆弱性を狙う攻撃を62,969件防いだと述べた⁠[10]。窓は通常の検証環境では数秒しか続かないが、攻撃者はsetup-config.phpなどのパスを繰り返し要求していると同紙は報じた⁠[10]。WordfenceのAlex Thomas氏は同紙に、最大の発信元2つが少数のサイトの群れを約14.5時間にわたって繰り返し要求したと述べた⁠[10]。

The Hacker Newsの11月4日の記事では、Wordfenceは公開後の最初の21時間に、展開されたインストーラのパスを狙う要求を18,500件超記録した⁠[11]。記事を書いた際には、過去24時間に12,632件〔注2〕の攻撃を防いでいた⁠[11]。米連邦文民行政機関(FCEB)の修正の期限は11月6日だと同紙は報じた⁠[11]。

Previdianは、センサーで3回の悪用の試行と、1件の攻撃元のIPアドレスを観測したと報告した⁠[8]。日別の観測は初日の3件だけで、その後の日は0件だった⁠[8]。同社は、確度の評価は試行が成功したことを意味しないと説明した⁠[8]。

表4:観測された要求
種別値示した組織資料
要求の対象展開されたsetup-config.phpのインストーラのパスWordfence⁠[11]
要求の対象展開先と版の名前の多くの変種Wordfence⁠[10]
接続元の国GBPrevidian⁠[8]

目次へ

修正と回避策

発見者は、7.1.4の修正を3つの変更として示した⁠[6]。

  1. 作業ディレクトリを作るときに16文字の乱数を付ける⁠[6]
  2. 展開の前の片付けでupgrade/index.phpを消さず、無ければ作り直す⁠[6]
  3. update_core()が複写しないファイルの一覧にwp-config.phpを加える⁠[6]

Patchstackは、wp-config.phpを複写しないupdate-core.phpの変更がリリースの告知に書かれていないと指摘した⁠[7]。

最初の更新に残る窓

Picus Securityの解説では、修正を入れる最初の更新でも展開を古い版のコードが行うため、展開先は予測でき、index.phpも守られない⁠[6]。wp-config.phpを複写しない変更だけは、新しい版のupdate-core.phpで効く⁠[6]。それでも攻撃者は一時のWordPressを自分のデータベースで設定してログインし、展開先が消える前にWebサーバーの権限でPHPを実行して、稼働中のディレクトリのファイルを読み書きできる⁠[6]。

Xintは、修正前の2.7〜7.0.7から7.1.4への更新が、発動に要るファイルを含むZIPを使うと説明した⁠[9]。修正前の7.1〜7.1.3のサイトは今はそのファイルの無いpartialを受け取るが、7.1.4を入れる前に次の更新が出れば同じ攻撃に遭いうる⁠[9]。修正版への自動のセキュリティ更新を終えたサイトは、その後の更新でも守られると同社は書いた⁠[9]。

発見者が示した手順

発見者は、7.1.4か、古い系列ではその系列の最新のセキュリティリリースへの更新を勧め、更新を安全に進める方法を示した⁠[6]。

  1. wp-content/upgrade/へのWebからのアクセスを拒む⁠[6]。WordPressはファイルシステムで読み書きするので、更新は壊れない⁠[6]
  2. 適用した後、更新を始める前に/wp-content/upgrade/への要求が403を返すことを確かめる⁠[6]。修正前の処理は展開の前に中身を消すので、wp-content/upgrade/の中には.htaccessを置かない⁠[6]
  3. 代わりにWebルートの外でパッケージを展開して手で更新する⁠[6]。WP-CLIのwp core updateは同じ更新処理を使うので代わりにならない⁠[6]
  4. すぐに修正できなければ、wp-content/upgrade/の下のsetup-config.phpを狙う要求を防御製品が止めるかを確かめる⁠[6]

Patchstackは、PHPのファイアウォールではこの要求を防げないと説明した⁠[7]。展開した写しは自分のファイルからWordPressを読み込み、公式のzipにmu-pluginsが無いため、サイトのファイアウォールが動かない⁠[7]。The Hacker Newsは、wp-content/upgradeの下のPHPへの不審な要求と、見慣れない管理者アカウント・プラグイン・PHPファイルの確認がサイトの所有者に勧められていると報じた⁠[10]。

目次へ

未公表の事項

  • 乗っ取られたサイトの有無と数
  • CISAが悪用と判断した根拠
  • WordPressが報告を受けてから修正までの経緯と日付
  • 攻撃の発信元の主体

注

  • 〔注1〕Patchstackは、問題の箇所が2.8からあると書いた⁠[7]。CVE記録は影響を受ける版を4.7.0からとした⁠[4]。
  • 〔注2〕Security NEXTは11月4日の記事で、Wordfenceが過去24時間に「1万3000件超」の攻撃を防いだとしていると報じた⁠[12]。

出典

当事者

公的機関

調査・観測

報道機関

背景資料

更新記録

  • 2026年11月5日:公開した。

目次へ