テック技報最新号へ →
セキュリティ

WordPress 本体の更新中を狙う RCE(CVE-2026-119977):wp-content/upgrade への直接アクセスを止める

WordPress が本体を完全なパッケージで更新する数秒の間、wp-content/upgrade の下に置かれるインストーラーの一時コピーへ直接リクエストしてコードを実行させる競合状態の欠陥。7.1.4 などの修正版へ上げ、このフォルダーの PHP を Web から実行できないようにしておく。

@MalwareBibleJP · 2026-11-01
#wordpress#race-condition#rce#nginx#waf#patch-management

どういう問題か

  • 対象は 4.7〜7.1.3 のうち各系列の修正前の版。更新時に一時コピーが推測できる場所に展開されるため、その削除前にアクセスできれば PHP コードの実行に至りうる(CVSS 8.1)。
  • 時間窓は検証環境で数秒程度。単発ではなく、自動化した反復リクエストで当てにくる。Wordfence は遮断ルールの配布から 9 分後に最初の一致を観測し、21 時間で 1 万 8500 件超の関連リクエストを記録した(成功件数ではない)。
  • 攻撃は WordPress 本体を読み込まず一時コピーの PHP を直接叩くので、WordPress の中で動くセキュリティープラグインでは止められない。ファイルに届く前の層(Web サーバーや WAF)で止める必要がある。

対策

  1. 修正版へ上げる: 7.1.4、旧系列は 7.0.8、6.9.11、4.7.39 など。修正では一時ディレクトリー名が無作為化された。4.6 以前には修正が出ないので移行する。
  2. wp-content/upgrade の PHP を Web から実行させない: 更新処理はサーバー内部で行われるので、このフォルダーへの外部からの直接リクエストは本来不要。例として nginx なら次のように拒否できる(自分の環境で更新が動くことを確認してから適用する)。
    nginx
    location ~* ^/wp-content/upgrade/.*\.php$ { deny all; }

    Apache なら同フォルダーの .htaccess で PHP の実行を拒否する。

  3. Wordfence を使っているなら「Extended Protection」を確認する: ファイアウォールを WordPress より前に動かす設定で、これが無効だと直接アクセスを止められない。無料版への遮断ルールの配布は 11 月 27 日予定で、ルールは更新の代わりにならない。
  4. 更新が遅れたサイトは痕跡を見る: アクセスログで wp-content/upgrade 配下の PHP への想定外のリクエスト、見覚えのない管理者アカウント・プラグイン・PHP ファイルがないか確認する。

一般化できる教訓

  • 「一時的に置かれるだけ」のファイルも、推測できる場所に置けば攻撃面になる。更新・展開用の作業フォルダーは Web から見えない場所に置くか、実行を禁止しておく。

出典

X の元の投稿を開く