Get a free audit
Apple credit Apple credits the researcher who runs our AI penetration testing.

Field Notes / Vulnerability

The WordPress vulnerability that opens when you click Update. Attackers sent 240,000 requests to catch the moment.

CVE-2026-119977 lets an attacker take over a WordPress site without a password, but only in the seconds while WordPress installs a core update. The fix, WordPress 7.1.4, shipped on 28 October 2026. The update to it runs the old, flawed process one last time. CISA confirmed attacks on 3 November. Here is how the window works, why auto-updates did not fully close it, what to look for in your logs, and the one server rule that shuts it for good.

Author
Red Team Partners
Read
8 MIN READ
Filed
9 Nov 2026
A business owner at a laptop in a dark office, about to click Update on her company’s WordPress site.

01 What the flaw does, in plain terms

hen you click Update in your WordPress dashboard, WordPress downloads the new version and unpacks it into a working folder, wp-content/upgrade/. It then copies the new files over your live site and deletes the working folder. On most servers that takes a few seconds. In Wordfence’s lab the folder existed for only seconds Wordfence, 28 Oct .

The problem is what sits in that folder during those seconds. A full WordPress package includes setup-config.php, the wizard that asks for database details on a brand-new install. The staged copy looks for a configuration file in the wrong places, decides the site has never been set up, and offers to set it up Picus 2026 . Before 7.1.4 the folder name was predictable. On many servers it could also be listed in a browser, because the clean-up step deleted the blank index.php that normally hides the contents Patchstack 2026 .

Umut Bayram, who reported the bug, describes the full attack. The attacker gives the staged installer the details of a database they control. The installer writes a new wp-config.php. The update then copies that file over your real one. Your site now reads from the attacker’s database, where they create the first administrator and upload a plugin that runs their code Picus 2026 . No password, no click from you. Your content stays where it was, but your site stops using it.

8.1
CVSS v3.1 score from Wordfence, the CVE authority. No login needed; attack complexity rated high because the attacker has to hit a window of seconds.

CVE-2026-119977, NVD

Experts disagree on how practical the attack is. Patchstack’s Dave Jong says he “would not call it practical to exploit”, because the attacker has to request the right path at the exact moment an update runs. He also notes it is the only bug in the release that needs no account Patchstack 2026 . Attackers only need it to be cheap, and polling a URL every few seconds costs almost nothing.

02 Ten days from fix to federal deadline

Date (UTC)What happened
28 Oct 2026WordPress releases 7.1.4 and fixes for every branch back to 4.7
28 Oct, 20:30Wordfence deploys a firewall rule; the first matching attack arrives nine minutes later
29 OctMore than 18,500 attack requests logged in the first 21 hours
30 OctPeak day: over 74,000 blocked attempts
31 OctCVE-2026-119977 published, CVSS 8.1
3 NovCISA adds it to the Known Exploited Vulnerabilities catalogue
6 NovDeadline for US federal agencies to fix it

The attacks started on the day of the fix. Wordfence counts more than 240,000 blocked attempts across the sites it protects, most of them automated requests for addresses such as /wp-content/upgrade/wordpress-6.9.11/setup-config.php Wordfence, Nov . Three addresses sent nearly 150,000 of them between them. Two of the busiest sources polled the same small groups of sites for about 14.5 hours, waiting for one of them to update Wordfence, 28 Oct .

Read those figures for what they are: blocked requests, logged by one vendor. They show how hard attackers are trying. They do not count break-ins, and we have not found a public report that names a site taken over this way. CISA lists the flaw as exploited and asks agencies for forensic triage as well as the patch CISA KEV .

03 Did auto-updates protect you?

Mostly, with one catch. WordPress installs minor security releases in the background by default, and Wordfence says sites with background updates on should already be patched Wordfence, Nov . From 7.1.4 onwards the working folder gets a 16-character random name, the blank index.php stays in place, and a staged wp-config.php can no longer be copied over the live one Patchstack 2026 .

The catch is the update that brought the fix. It was performed by the old, flawed updater. Wordfence and the researcher both make this point: moving from a vulnerable version to a fixed one runs the vulnerable process one last time Picus 2026 . Patchstack adds that the window opens on every update, “including unattended ones” Patchstack 2026 . So if your site auto-updated on the evening of 28 October, while attackers were already polling, it was exposed for a few seconds.

One detail affects how likely the window was to open. The researcher says full update packages carry the installer, while smaller “partial” packages carry it only if those files happen to be included Picus 2026 . You cannot easily tell after the fact which one your site downloaded. Your logs can tell you whether anyone came knocking.

04 How to check whether you were hit

Start with the time your site moved to the fixed version. The file wp-includes/version.php changes during every core update, so its modification date is a good marker. Then work through this list, or hand it to your host or developer. If the site takes logins or payments, a website penetration test shows what an attacker can still reach after the patch.

Checks for every WordPress site, from 28 October 2026
  • Search your web server access logs for any request to a .php file under /wp-content/upgrade/, especially setup-config.php. Wordfence says no legitimate update needs outside requests to these files. A hit means you were targeted. A POST request that got a 200 response means someone reached the installer; treat it as a likely break-in.
  • Open wp-config.php and check DB_HOST, DB_NAME and DB_USER. If the database host is a server you do not run, treat the site as compromised.
  • List every administrator account in Users and compare it with the people who should have one. Delete nobody yet; note the dates first.
  • Compare installed plugins with the list you expect. An attacker with admin access usually uploads a plugin, because that is the quickest way to run code.
  • Look for PHP files in wp-content/uploads and wp-content/mu-plugins, and anything other than index.php left in wp-content/upgrade/. A failed update can also leave folders behind, so check the dates.
  • If you find anything, rotate the database password, every admin password and any API keys stored in wp-config.php, and restore from a backup taken before 28 October.

A clean log does not prove a clean site. Wordfence says so directly Wordfence, Nov , and some hosting plans keep access logs for only a few days. If your logs from late October are already gone, the wp-config.php and administrator checks matter most.

05 Close the window before the next update

Updating to 7.1.4 fixes this bug. One server rule removes the whole class of problem: nobody on the internet needs to reach /wp-content/upgrade/. WordPress uses that folder internally and never sends visitors there. Patchstack and Wordfence both advise blocking it at the web server Patchstack 2026 .

  • nginx. Add location ^~ /wp-content/upgrade/ { deny all; } to the site’s server block and reload nginx.
  • Apache. In the .htaccess at the site root, add RewriteRule ^wp-content/upgrade/ - [F,L] above the WordPress rules, with RewriteEngine On. Do not put an .htaccess inside the upgrade folder itself. The unpatched updater deletes it Picus 2026 .
  • Test it. Request https://yoursite/wp-content/upgrade/ in a browser. You want a 403 or 404, never a file listing.
  • Turn off directory listing everywhere. A listable folder handed attackers the folder name before 7.1.4. Set Options -Indexes on Apache, and make sure autoindex is off on nginx.

Security plugins have a blind spot here. The staged installer runs from its own files and never loads your WordPress, so a firewall plugin that runs inside WordPress does not see the request Patchstack 2026 . Wordfence’s firewall catches it only in its Extended Protection mode, and free users receive the rule on 27 November Wordfence, Nov . The server rule above works today and costs nothing.

Keep auto-updates on for core security releases. The risk this bug exposed is real, but a site that waits a week to update spends that week fully exposed to whatever the release fixed. WordPress 7.1.4 alone fixed a long list of other flaws, from stored cross-site scripting to unpublished Customizer drafts that strangers could read WordPress.org 2026 .

06 If you run fifty sites, not one

Agencies and managed service providers face the same bug at a larger scale, and with one extra problem. Attackers polled small groups of sites for hours. A fleet that updates on a schedule, all at once, gives them a predictable minute to aim at. Three steps make the next one of these routine. MSPs that want the testing done under their own brand can use our white-label partner programme.

  • Know every site and its version. Keep one list of every WordPress install you manage, with its version and who can update it. Include the client sites you built years ago and no longer bill for.
  • Ship the block once. Put the /wp-content/upgrade/ rule in your server template or your host’s control panel, so every new site starts with it.
  • Check the logs fleet-wide. Run the access-log search from chapter 4 across every site for 28 October onwards. One grep across a log store is faster than fifty logins.

An attacker needs one site you forgot to update and the right ten seconds. You can find that site first. Your free external exposure audit shows every website under your name that answers on the internet, which WordPress version each one runs, and whether its upgrade folder, admin login and installer files can be reached from outside. You get the list ranked by what to fix first. Get your free audit.

Questions readers ask

What is CVE-2026-119977?

CVE-2026-119977 is a WordPress core vulnerability in the update process. During a full core update, WordPress unpacks the new version into a folder under wp-content/upgrade/ that the web server can serve, and that copy includes the installer, setup-config.php. An attacker who requests the installer while the update is running can run code on the server without logging in. It affects WordPress 4.7 to 7.1.3 and is rated CVSS 8.1 by Wordfence, the CVE numbering authority.

Which WordPress versions fix CVE-2026-119977?

WordPress 7.1.4, released on 28 October 2026, and security releases for every branch back to 4.7: 7.0.8, 6.9.11, 6.8.12, 6.7.11, 6.6.11, 6.5.14, 6.4.14, 6.3.14, 6.2.15, 6.1.16, 6.0.18, 5.9.20, 5.8.19, 5.7.21, 5.6.23, 5.5.24, 5.4.25, 5.3.27, 5.2.30, 5.1.28, 5.0.31, 4.9.35, 4.8.34 and 4.7.39. Sites on WordPress 4.6 or older get no fix and must move to a supported version.

Is the WordPress upgrade-window vulnerability being exploited?

Yes. CISA added CVE-2026-119977 to its Known Exploited Vulnerabilities catalogue on 3 November 2026 and gave US federal agencies until 6 November to fix it. Wordfence saw the first attack request nine minutes after it deployed a firewall rule at 20:30 UTC on 28 October, and had blocked more than 240,000 attempts by early November, with over 74,000 on 30 October alone. Those are blocked requests. No public report so far names a site that was taken over.

If my WordPress site updates automatically, am I safe?

Your site is now patched, but the update to 7.1.4 ran the old, vulnerable update process one last time. Wordfence and the researcher both say so. If attackers were polling your site at that moment, the window was open for a few seconds. Check your web server logs for requests to PHP files under /wp-content/upgrade/ around the time your site updated, and check that wp-config.php still points at your own database.

How do I protect WordPress from upgrade-window attacks?

Update to 7.1.4 or the fixed release for your branch. Then block all web access to /wp-content/upgrade/ at the web server, for example with location ^~ /wp-content/upgrade/ { deny all; } in nginx or a rewrite rule in the site’s root .htaccess on Apache. WordPress never needs visitors to reach that folder. A security plugin that runs inside WordPress cannot block this attack on its own, because the staged installer does not load your WordPress.

References

Sources

  1. WordPress.org. “WordPress 7.1.4 Security Release.” 28 October 2026. wordpress.org
  2. CISA. Known Exploited Vulnerabilities catalog: CVE-2026-119977 added 3 November 2026, due 6 November 2026. cisa.gov
  3. Wordfence. “WordPress Core 4.7.0 – 7.1.3: Unauthenticated Upgrade-Window Staged-Installer Remote Code Execution” (CVE-2026-119977). Wordfence Intelligence. wordfence.com
  4. Wordfence. “WordPress 7.1.4 Patches Unauthenticated Upgrade-Window RCE; Exploitation Attempts Detected After Release.” 28 October 2026. wordfence.com
  5. Wordfence. “Attackers Actively Probing for Upgrade-Window RCE Vulnerability in WordPress Core.” November 2026. wordfence.com
  6. Patchstack (Dave Jong). “WordPress 7.1.4 Security Release.” 28 October 2026. patchstack.com
  7. Picus Security (Umut Bayram). “CVE-2026-119977: When Updating WordPress Becomes the Vulnerability.” November 2026. picussecurity.com
  8. NIST National Vulnerability Database. CVE-2026-119977. nvd.nist.gov