WordPress Update Vulnerability CVE-2026-119977 Exploited: Check Version and Secure Site

By , Tim Engineering APIPedia · Published · Updated · 9 min read

CISA inserted a WordPress Core update race condition loophole into KEV. Check the version, close the wp-content/upgrade folder, update, then check the log.

APIPedia cover: "WordPress update flaw exploited" title with fact card CVE-2026-119977, WordPress Core 4.7–7.1.3, CVSS score of 8.1, KEV entry status, CISA deadline of November 6, 2026, and list of safe versions 7.1.4, 7.0.8, 6.9.11, 6.8.12 through 4.7.39.

CVE-2026-119977 is a race condition vulnerability in the WordPress Core update process that allows an unlogged attacker to run PHP code on the server, just as the site is being updated. This flaw affects WordPress 4.7 through 7.1.3, has been exploited, and is in the CISA KEV catalog with a deadline of November 6, 2026.

What makes it unique: this gap actually opens when you do the right thing, namely updating WordPress. So the order of the steps is important. This article discusses how it works, which versions are safe, how to check your site, and how to look for traces of attacks in the logs.

Quick summary: what do you need to know?

ItemsDetails
IDCVE-2026-119977 (WordPress advisory: GHSA-4w3m-c66w-69mg)
TypeRace condition TOCTOU (CWE-367) on full package Core update
ImpactRemote PHP code execution without authentication
ScoreCVSS 3.1: 8.1 (AV:N/AC:H/PR:N/UI:N). WordPress itself rates it "Low"
Impacted versionWordPress Core 4.7 to 7.1.3
Safe version7.1.4 (release October 28, 2026) or backport per branch, for example 7.0.8, 6.9.11, 6.8.12
StatusExploited; enter CISA KEV November 3 2026, US federal agency deadline November 6 2026
InventorUmut Bayram

How does this loophole work?

When WordPress performs a full package Core update, the new version files are first extracted to a temporary (staging) folder in wp-content/upgrade/, then moved to replace the old files. On the affected version, the name of this folder is predictable because it follows the package name, and on many servers the folder can be accessed via the web and allows PHP to run.

In the copy of the package, installer wp-admin/setup-config.php is also included. This installer can run without site configuration. According to ThreatDefence's analysis, the PoC in circulation uses it to promote the attacker's database configuration in place of the original file, then run code on the server.

CVE-2026-119977 flowchart in four steps: 1) admin starts Core update, 2) package is extracted to wp-content/upgrade staging folder whose name is predictable and can be accessed from the web, 3) setup-config.php installer is copied and can be run without site configuration, 4) files are moved and staging is cleaned up in seconds. Underneath: attack bots keep shooting the staging path, and the 7.1.4 fix randomizes 16 character folder names, keeps index.php, and no longer copies wp-config.php.

The attack window is narrow, only a matter of seconds. Therefore the CVSS score gives the Attack Complexity value "High". But attackers don't need to be so lucky; The bot simply continues to send requests to possible paths until a site is updated. Patchstack also discovered that the old version's cleanup routine removed index.php protectors, so that on servers that enabled directory listing, folder names could be read directly.

Why can the plugin firewall be bypassed?

The installer in the staging folder runs without loading the WordPress configuration. This means that a firewall running as a regular WordPress plugin may never see the request. Wordfence itself warns that PHP requests can directly pass through plugin-level firewalls without Extended Protection mode. The best protection is at the web server, CDN, or WAF level.

Who is affected?

  • All WordPress Core 4.7 to 7.1.3 sites that have not received the patch, including staging sites, demos, and old forgotten sites.
  • Sites with folder wp-content/upgrade are publicly accessible and allow PHP execution. This is a common configuration in shared hosting.
  • Sites with WordPress 4.6 or earlier no longer get security patches at all, so must be migrated to a supported branch.
  • Agencies and hosting providers manage multiple installations: a single server can contain dozens of sites with different versions.

Please note: this loophole is not in the plugin or theme, but in Core. Even sites with minimal plugins are still affected.

How serious is the exploitation?

CVE-2026-119977 Timeline: October 28, 2026 WordPress 7.1.4 release patches 22 vulnerabilities; October 28 20:30 UTC Wordfence firewall rules active and first attack seen 9 minutes later, over 18,500 requests in 21 hours; October 31st CVE notes published with CVSS 8.1; November 3 CISA adds to KEV catalogue; November 4 Public PoC appeared on GitHub and 12,289 attacks were blocked per 24 hours; November 6 CISA deadline; November 27 free Wordfence rules available.

The available data comes mostly from Wordfence and reflects blocked attempts, not confirmed breaches:

  • The Wordfence firewall rule went live October 28 at 20:30 UTC, and the first attack request was seen nine minutes later.
  • More than 18,500 requests to path setup-config.php were staging in the first 21 hours.
  • Wordfence records as of November 4 stated that 12,289 attacks were blocked in the last 24 hours. Other media quoted different figures (13,095 and 62,969 per 24 hours) because they were taken at different times.
  • CISA added this flaw to KEV on November 3 based on evidence of active exploitation, without naming a perpetrator or ransomware link.
  • A working PoC appeared on GitHub on November 4. There is also a fake "bypass 7.1.4" repo that only contains a short download link and appears to be malware bait. Don't run it.

There are differences in assessments that are worth noting. Wordfence (as CNA) and Tenable gave it a score of 8.1, while the WordPress advisory rated it "Low" and did not include a CVE number. This difference is normal because of the difficulty of winning races, but KEV's status shows this gap is already used in the real world.

Which version is safe?

WordPress 7.1.4 patched 22 gaps at once, and the fixes were backported to the old branch. For this update gap, branch 4.7 and above received a fix.

BranchMinimum safe versionNotes
7.17.1.4Latest release, the only one actively supported
7.07.0.8Received all 22 repairs
6.96.9.11Received all 22 repairs
6.8 / 6.76.8.12 / 6.7.1120 of 22 improvements
6.0 to 6.66.6.11, 6.5.14, 6.4.14, 6.3.14, 6.2.15, 6.1.16, 6.0.18The number of repairs is getting smaller
4.7 to 5.9Example: 5.9.20, 5.0.31, 4.9.35, 4.7.39We recommend upgrading to 7.1.4
4.6 and belowThere isn't anyMandatory migration to a supported branch

How to check WordPress version?

Easiest way: go to Dashboard → Updates. If you have SSH access, use WP-CLI from the installation folder:

# Versi Core yang terpasang
wp core version

# Cek apakah ada update yang tersedia
wp core check-update

# Tanpa WP-CLI: baca langsung dari file versi
grep "wp_version =" wp-includes/version.php

# Banyak situs di satu server (contoh: semua di /var/www)
for d in /var/www/*/; do
  [ -f "$d/wp-includes/version.php" ] && \
  echo "$d $(grep -oP "wp_version = '\K[^']+" "$d/wp-includes/version.php")"
done

How to update safely?

Since the update itself opens an attack window in older versions, the recommended order is: block web access to the staging folder first, then update.

Step 1: block wp-content/upgrade on the web server

# Nginx: di dalam blok server situs, lalu: nginx -t && systemctl reload nginx
location ^~ /wp-content/upgrade/ {
    deny all;
}
# Apache: di konfigurasi virtual host (sesuaikan path DocumentRoot)
<Directory "/var/www/html/wp-content/upgrade">
    Require all denied
</Directory>

It's better to put the rules in the server configuration or CDN rather than relying on .htaccess in that folder. In Cloudflare or another WAF, block requests whose paths start with /wp-content/upgrade/. Then make sure the rules work:

# Harus mengembalikan 403, bukan daftar isi folder atau 200
curl -s -o /dev/null -w "%{http_code}\n" https://situsanda.id/wp-content/upgrade/

Step 2: update and verify

wp core update
wp core version            # pastikan 7.1.4 atau versi aman cabang Anda
wp core verify-checksums   # file Core harus cocok dengan rilis resmi

Automatic updates can fail silently, so don't assume a site is safe before checking the version. If you use managed hosting, ask what mitigations they have installed; IONOS and Pantheon for example report mitigations at the platform level, but they are not a substitute for updates.

How to detect whether a site has been hacked?

No fixed IOC (IP, user agent, or webshell name) has been published yet, so hunting relies on path and timing patterns. Normal visitors never request PHP files in the staging folder, so every hit is worth checking, and a 200 response is a priority.

# 1) Request ke file PHP di folder staging (termasuk log lama terkompresi)
zgrep -hE '"(GET|POST) /wp-content/upgrade/[^ ]*\.php' /var/log/nginx/access.log* | head -50

# 2) Respons 200 = prioritas tinggi
zgrep -hE '"(GET|POST) /wp-content/upgrade/[^ ]*\.php[^"]*" 200 ' /var/log/nginx/access.log*

# 3) Sisa file di folder staging (normalnya hanya index.php)
find wp-content/upgrade -mindepth 1 ! -name index.php

# 4) File PHP yang tidak semestinya ada di uploads
find wp-content/uploads -name "*.php"

# 5) Waktu update vs waktu ubah wp-config.php
#    Update Core tidak pernah menulis wp-config.php
stat -c '%y %n' wp-includes/version.php wp-config.php

# 6) Admin dan plugin yang tidak dikenal
wp user list --role=administrator --fields=ID,user_login,user_registered
wp plugin list

If wp-config.php changes at the same time as the update, check the values DB_HOST, DB_NAME, DB_USER, and $table_prefix. Other signs to look for: PHP processes or web servers running sh, curl, or wget, as well as outgoing connections to port 3306 on public addresses that are not your database server.

If you find signs of a burglary?

  1. Shut down the site and keep copies of files, databases, and logs as evidence.
  2. Check other sites on the same server and the credentials stored there.
  3. Rebuild from a patched official release, reinstall plugins and themes from official sources, restore content from backup before updating.
  4. Change the database password, salt and key to wp-config.php, admin password, as well as API key and hosting credentials. If the site stores API keys for third-party services, rotate them too; LLMjacking cases show how expensive leaking keys can be.

Frequently asked questions

My site has updated automatically, is it safe?

Most likely it's already patched, but check the version with wp core version or dash. Updates running on older versions still go through vulnerable windows, so keep checking the logs around the time of the update.

Does the November 6 deadline apply to sites in Indonesia?

Not legally. The deadline applies to US civilian federal agencies. But the KEV status is a strong signal that this vulnerability has been attacked, so all site owners should patch it ASAP.

I'm using the free version of Wordfence, is it protected?

Not yet. The new firewall rules for Wordfence Free users are scheduled for November 27, 2026. Moreover, direct requests to PHP staging files can bypass the plugin level firewall. Update and block folders on the web server.

Does blocking wp-content/upgrade interfere with the update process?

No. The update process runs on the server side via the file system, not via HTTP requests to that folder. This rule only closes access from outside.

I found the GitHub repo "bypass 7.1.4", need to try it?

Don't. Such repos reportedly only contain short download links and appear to be malware bait targeting admins and researchers.

This flaw joins the list of CVEs exploited quickly after patch releases, such as the GitLab flaw CVE-2026-97229. The pattern is the same: the gap between patch and attack is now minutes, not weeks.

Source

Topics:

${c.about}

Tim APIPedia — Tim Engineering APIPedia

Tim engineering di balik APIPedia yang membangun dan memelihara API data Indonesia - ongkir, OCR KTP, data wilayah, BMKG, hingga server MCP - dan menulis panduan integrasinya dari pengalaman langsung.