WordPress Upgrade Flaw CVE-2026-119977 Is Being Targeted: What Is Affected and How to Fix It on Each Platform

WordPress CVE-2026-119977 abuses a gap during core updates and affects 4.7 through 7.1.3. The US agency CISA has added it to its catalog of known exploited vulnerabilities. WordPress 7.1.4 and branch releases shipped on 28 October with 22 fixes in all. We cover blocking access before you update, steps per platform, notes for Japanese and Chinese packages, and how to check for compromise.
Key Points
- WordPress: Update to 7.1.4 or your branch's fixed release. CVE-2026-119977 is remote code execution through a gap during core updates, and it affects 4.7 through 7.1.3
- Exploitation: CISA added it to KEV on 3 November, and Wordfence has blocked more than 240,000 attempts. As of 6 November, we found no public report of a specific compromise
- Japanese and Chinese packages: Japanese packages use a complete package even for same-branch updates. The latest official Simplified Chinese build is still 7.1, an affected version
- Before updating: Block outside access to
wp-content/upgrade/at the web server and confirm a 403, then update. If you cannot set this up quickly, do not delay the update - After updating: Confirm the version, and check
wp-content/upgrade/for leftovers, your access logs and your administrator accounts
About This Article
This article reflects WordPress announcements, CVE, NVD, CISA, Wordfence and information from each OS and service as of 23:30 Japan time on 6 November 2026. Availability changes over time, so check the latest information through the official links at the end before you start.
Severity figures differ by publisher. We state whose rating each one is.
The blocking rules and commands come from vendor documents and source code, some of them written by us, and none has been tested on a live server. Always confirm the result after applying them.
First: Are You Affected?
Check the Version
- In the admin screen, open Dashboard > Updates
- With WP-CLI:
wp core version --extra - Without WP-CLI:
grep "wp_version =" wp-includes/version.php - For many sites on one server (adjust the paths):
find /var/www /home -type f -path '*/wp-includes/version.php' -exec grep -H "wp_version =" {} + - To look up WordPress.org's status list (change the version):
curl -s https://api.wordpress.org/core/stable-check/1.0/ | grep -E '"7\.1\.3" *:'.insecuremeans unfixed,outdatedmeans a fixed older branch andlatestmeans the newest release
Fixed Versions
- Fixed releases: 7.1.4, 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, 4.7.39
- Release date: All on 28 October 2026. The 7.1.4 post says older-branch fixes are in progress, but each branch's version page shows the same date
- Target: WordPress actively supports only the latest release. Older-branch fixes are a courtesy, so 7.1.4 is the target
- 4.6 and older: No security updates. The CVE record starts at 4.7, but Picus says 2.7 through 4.6 share the behavior, so being outside the CVE range does not mean safe
Which Package an Update Uses
CVE and CISA describe updates that use a complete package. The package a site receives depends on its language and the type of update. The results below come from simulated requests to the WordPress update API on 6 November, not from observing real sites.
- Sites on the Japanese package: Dashboard and automatic updates are both offered the complete Japanese package, even within a branch
- English package with the site set to Japanese: The Dashboard uses the complete Japanese package and automatic updates use the English partial package
- English package, same branch: Usually a partial package. It appears not to include the installer, but its contents were not verified. If core files are edited or missing, the Dashboard and WP-CLI move to a larger package
- Updates across branches: Usually packages such as
no-content. Picus says these are also affected, while the CVE names only complete packages - Chinese sites: The Dashboard is offered the English 7.1.4 package (details below). On 6.8 and older, automatic updates are also offered a complete Chinese package of the branch fix
Do not treat a partial package as safe. Where you can, block access first in every case.
CVE-2026-119977: A Flaw in the Update Window
What Happened
- The flaw: During an update, WordPress unpacks new files into a working directory under
wp-content/upgrade/. Before the fix, the installer in that directory could be reachable from outside during this time - Impact: An unauthenticated attacker could run code on the server. Before the fix, a
wp-config.phpcreated in the working directory was copied over the livewp-config.php, which gave a route to pointing the site at an attacker's database - Conditions (Wordfence): All of these are needed: an update with a package containing the installer, public access to the working directory, a guessed or discovered path, and finishing before cleanup. The window lasted seconds in Wordfence's testing
- Guessing the path: In Picus's breakdown, paths on 5.9 through 7.1.3 are predictable, while 4.7 through 5.8 add six random characters, so the path must leak first
- Failed updates: If a failed update leaves the working directory behind, it may be attacked with no race at all (Imunify360)
- The fix: The working directory name gains 16 random characters,
wp-content/upgrade/index.phpis kept, and awp-config.phpin the working directory is no longer copied
The update to a fixed release still runs the old updater one last time. Vendors differ on how risky this update is, but Wordfence advises updating soon rather than postponing it.
Why Severity Ratings Differ
- Wordfence (CNA): CVSS 3.1 8.1 (High). NVD shows this score too
- WordPress: Low, with no CVSS score
- Red Hat: Important
- CISA SSVC: Exploitation active, automatable no, technical impact total
- How to read this: The impact is large if an attack succeeds, but success is difficult, and the ratings weigh these differently. Wordfence says exploitation was very hard in its testing, and Patchstack would not call it practical, while Picus, which reported the flaw, says it built a working exploit chain. Given the CISA listing, however, do not lower the priority of updating
Exploitation Status (as of 6 November)
- CISA KEV: Added on 3 November. The deadline for US federal agencies is 6 November. Use in ransomware is listed as unknown
- Wordfence telemetry: More than 240,000 attempts blocked from 28 October up to its 5 November post, with a peak of more than 74,000 on 30 October. Most were automated repeat requests, and blocked attempts are not compromises
- Actual harm: We found no primary source describing a specific compromise. CISA has not published attack details
- Proof-of-concept code: Public GitHub repositories describe themselves as proofs of concept, but they have not been validated. Do not run code you cannot verify
- Japan: JPCERT/CC has issued no alert, though its 5 November Weekly Report covers the flaw. We also found no IPA alert, and no public report of victims in Japan
Other Main Fixes
WordPress 7.1.4 fixes 22 issues in all. As of 6 November, CVE-2026-119977 is the only one we could confirm has a CVE.
- GHSA-83c2-c4pc-wmp3 (High from WordPress): Stored XSS and denial of service in the Interactivity API. Needs Contributor or above and affects 6.4 and later
- GHSA-p2r6-rwjp-phv3 (Medium, Wordfence 5.3): Unauthenticated visitors can see unpublished Customizer changes. Affects 4.9 and later
- GHSA-9vrg-x932-q57q (Medium, Wordfence 6.4): Stored XSS in the Customizer. Needs Contributor or above and runs when an administrator opens the preview. Affects 5.0 and later
- GHSA-j255-3x8q-7q7g (Medium, Wordfence 6.4): Stored XSS in blocks such as Comments Pagination. Needs Contributor or above and affects 5.9 and later
- Others: Fixes also cover the Categories block, the Image and Playlist blocks, Script Modules, Notes, the personal data erasure screen and the multisite users screens
- Root certificates: The bundled certificates (
composer/ca-bundle1.6.0) were also updated - Gutenberg plugin: 24.3 and later include the fixes. For 7.2 beta, use Beta 4
Earlier fixes matter too. CVE-2026-87902 was fixed in 7.1.2 and its branch releases (7.0.6, 6.9.9, 6.8.10 and so on down to 4.7.37), and CVE-2026-63030 in 7.0.2 and 6.9.5. Older releases on those branches lack these fixes too. Both are in CISA KEV.
Most Exposed Setups
- Sites on the Japanese package with automatic updates: Unattended updates use a complete package as well
- Sites that cannot block at the web server: A firewall running inside WordPress cannot stop this, because the staged copy does not load the site's plugins (Patchstack). Wordfence's own firewall needs Extended Protection for this, and its rule reaches the Free tier only on 27 November
- Sites left after a failed update: The working directory may still be there
- Sites with automatic updates stopped: The fix never arrives and they stay on the old version
- Sites with several authors: Most of the other 21 issues need a Contributor account or above
Fix, Step 1: Block Outside Access Before Updating
Wordfence's author recommends this block for operators who can apply it quickly, but warns others not to delay updating to work out how. The block is temporary and does not fix the other 21 issues.
- nginx: Add
location ^~ /wp-content/upgrade/ { return 403; }to theserverblock, then runnginx -tandnginx -s reload - Apache virtual host: Add these three lines (adjust the path)
<Directory "/var/www/html/wp-content/upgrade">Require all denied</Directory>- Applying the Apache change: Run
apachectl configtest, thenapachectl -k graceful - .htaccess on shared hosting: In the
.htaccessfile in the WordPress folder, add these two lines above# BEGIN WordPress RewriteEngine OnRewriteRule ^wp-content/upgrade/ - [F]- OpenLiteSpeed: Use the
RewriteRuleform above, enable automatic loading of.htaccessand restart - Caddy: Add
respond /wp-content/upgrade/* 403to the site block, then runsudo systemctl reload caddy - IIS: Add
<add sequence="/wp-content/upgrade/" />to<denyUrlSequences>inweb.config. The response is 404 rather than 403, logged as 404.5 - Bitnami VMs:
.htaccessmay have no effect. Add the<Directory>form above to/opt/bitnami/apache/conf/vhosts/htaccess/wordpress-htaccess.confwith the path/opt/bitnami/wordpress/wp-content/upgrade, then runsudo /opt/bitnami/ctlscript.sh restart apache
- Paths: Sites in a subdirectory must add that prefix to the nginx and Caddy rules. The working directory sits under
WP_CONTENT_DIR, so on Bedrock it is/app/upgrade/ - Do not place files inside the folder: An
.htaccessorindex.phpinsidewp-content/upgrade/does not help, because the unfixed updater deletes it - Confirm: Run
curl -I https://example.com/wp-content/upgrade/probe.phpand expect 403. An Apache<Directory>rule may return 404 if the folder does not exist, and that result proves nothing. A<Directory>rule also does not apply whereProxyPassMatchsends PHP to PHP-FPM. In that setup, use<Location "/wp-content/upgrade/">,Require all deniedand</Location>, adding any subdirectory prefix
Fix, Step 2: Update
- Back up files and the database
- Apply the block above and confirm the result
- Update. In the admin screen use Dashboard > Updates. With WP-CLI, use
wp core update --minorto stay on your branch, orwp core updatefor the latest release followed bywp core update-db(wp core update-db --networkon multisite) - Confirm the version
- WP-CLI notes:
--versionand--localeforce a complete package. Do not use--force, which can downgrade a newer install - Database: A same-branch update needs no database step
- Manual update: The official steps are to back up, deactivate plugins, unpack the package, delete old files while keeping
wp-config.php,wp-contentand similar, upload the new files and visit/wp-admin/ - Minimum PHP: 7.1.4 and 7.0.8 need PHP 7.4, branches 6.6 to 6.9 need 7.2.24, 6.3 to 6.5 need 7.0, 5.2 to 6.2 need 5.6.20, and 4.7 to 5.1 need 5.2.4
- 4.6 and older: We recommend replacing files by hand with a supported release rather than using the old updater
- PHP itself: Updating WordPress does not fix PHP. See this article for the October PHP fixes
Sites Where Automatic Updates Do Not Arrive
The 7.1.4 post says sites that support background updates will update automatically, but it does not mention forced updates. Always check.
- Open Tools > Site Health in the admin screen and read the background updates result
- Check your settings:
grep -nE "DISALLOW_FILE_MODS|AUTOMATIC_UPDATER_DISABLED|WP_AUTO_UPDATE_CORE|DISABLE_WP_CRON" wp-config.php - If
.git,.svn,.hgor.bzrexists in the WordPress folder or a parent folder, automatic updates stop - Check for a recorded failure:
wp option get auto_core_update_failed --format=json(on multisite,wp site option get auto_core_update_failed --format=json) - Sites with
DISABLE_WP_CRONset and no system cron do not run automatic updates
Notes for Chinese Packages
- New installs:
https://cn.wordpress.org/latest-zh_CN.zipis 7.1, an affected version. Do not use it for a public site. Start fromhttps://downloads.wordpress.org/release/wordpress-7.1.4.zipand choose Chinese as the site language (our suggestion) - Existing sites: After blocking, update from Dashboard > Updates. As of 6 November, the API offers the English 7.1.4 package
- Versions with no build: There is no Simplified Chinese build for 7.1.1 and later, 7.0.5 and later, or 6.9.8 and later. Builds exist for 6.8.12 and earlier
- WP-CLI: Use
wp core update --minororwp core update, without--version=7.1.4 - Checksums: Where no Simplified Chinese list exists, use
wp core verify-checksums --locale=en_US. Leftover Chinese files may show mismatches - Traditional Chinese: The newest build is 7.0.8, and there is no 7.1 branch. However,
https://tw.wordpress.org/latest-zh_TW.zipstill serves 7.0.4, an affected version, so do not use it
Fixed Versions and Steps per OS and Environment
- Debian 13:
6.8.12+dfsg1-0+deb13u1(DSA-6596-1). Runsudo apt updateandsudo apt install --only-upgrade wordpress, then confirm withdpkg-query -W wordpress - Debian forky and sid:
7.1.4+dfsg1-1 - Debian 12:
6.1.9+dfsg1-0+deb12u1is unfixed as of 6 November. We suggest moving to Debian 13 or to a fixed upstream release. Debian 11 and older are also unfixed - Ubuntu: The archive's
wordpressis jammy5.8.3, noble6.4.3and resolute6.7.2, and we found no fixed version. Ubuntu's CVE page could not be read, so its status is unconfirmed. Check withapt-cache policy wordpress, and for public sites we suggest moving to a fixed upstream release - Fedora: Fedora Rawhide (
fc46) and Fedora 45 have7.1.4-1in stable.6.9.11-1for Fedora 44 and 43 is still in testing as of 6 November. Ifsudo dnf upgrade --refresh wordpressbrings nothing, add--enablerepo=updates-testing - RHEL family (EPEL): Red Hat does not ship WordPress. EPEL fixes are in testing as of 6 November. Update with
sudo dnf upgrade --refresh --enablerepo=epel-testing wordpress - Arch Linux:
wordpress 7.1.4-1. Runsudo pacman -Syu - Gentoo:
www-apps/wordpressoffers 7.1.4, 7.0.8, 6.9.11, 6.8.12, 6.7.11, 6.6.11, 6.5.14 and 6.4.14, all with testing keywords - FreeBSD:
www/wordpressis 7.1.4 on main, but the 2026Q4 quarterly branch is 7.1.2 and unfixed. VuXML has no WordPress entry, sopkg auditwill not flag it - Official Docker image:
wordpress:7.1.4andwordpress:latestare fixed. Changing the image does not update an existing volume, so check withdocker exec <container> grep wp_version wp-includes/version.phpand update inside the site.wordpress:7.0,wordpress:6.9andwordpress:6.8are no longer updated and remain vulnerable - Bitnami container:
bitnami/wordpress:latestis 7.1.4 on Photon. The Helm chart default is an old version, so set the image explicitly.bitnamilegacy/wordpressis no longer updated - Composer and Bedrock:
roots/wordpresshas 7.1.4. Bedrock turns off automatic updates by default, so runcomposer require roots/wordpress -W, check thatcomposer.lockshows 7.1.4 or later, and deploy - 1Panel: The app moved to 7.1.4, but a site on its volume may not have changed. In the app folder, check
grep "wp_version =" data/wp-includes/version.php, and update inside the site if it is old - Softaculous: The list still includes older unfixed versions. Choose only fixed releases for new installs
- WP Toolkit (cPanel, Plesk): Check each site's version and automatic update setting
- AWS Lightsail: Updating existing instances is the customer's job. Take a snapshot, block access, then update. From 19 November, the Bitnami WordPress blueprint can no longer be chosen for new instances
- Azure App Service: Minor auto-updates are on by default, but confirm the version in
wp-admin - Pantheon: The fix is available, but it reaches Live only after you run Apply Updates on the dashboard's Code tab and deploy through Test and Live
- WP Engine: Its general policy is to apply security releases early, but we found no statement on 7.1.4
- Kinsta and WordPress.com: We found no statement on this round. Check the version and contact the provider if it is not fixed
- Windows and macOS: There is no official server package.
brew upgrade wp-cliupdates the CLI only, not your site's WordPress
Japanese Shared Hosting
- ConoHa WING: Posted a notice on 29 October and updated it on 30 October. New installs get 7.1.4. Existing sites update in sequence if auto-update is on, and otherwise need a manual update. The notice's line about no exploitation reports predates the CISA listing
- Onamae.com Rental Server: Posted a notice on 29 October. Existing sites update in sequence if auto-update is on, and otherwise need a manual update. Its line about no exploitation reports also predates the CISA listing
- Lolipop!: The news list read on 6 November ends at 24 October, before this release, so it shows nothing about this round
- Xserver, Shin Rental Server, Star Server, Sakura Rental Server, mixhost and KAGOYA: We saw no notice on this round in the news lists read on 6 November. The lists cover different periods, and we could not confirm whether server-side measures exist
Do not assume your provider has handled this. Check the version in Dashboard > Updates.
What to Check After Updating
- Version: Compare each site with the fixed list, even if automatic updates are on
- Whether the fix is in place:
grep -n get_working_dir_name wp-admin/includes/class-wp-upgrader.phpprints a line on the fixed updater - PHP cache: With
opcache.validate_timestamps=0, reload PHP-FPM or Apache after updating by WP-CLI, package or hand.php -ion the command line may differ from the web settings - Leftover files: Run
find wp-content/upgrade -name "*.php" | sort. A clean fixed site shows onlyindex.phpor nothing. Investigatewp-config.phpor any other PHP file - Cleaning up: Confirm no update is running (
core_updater.lockandauto_updater.lockare not set), then delete everything exceptindex.php. Leavewp-content/upgrade-temp-backup/alone - Access logs: Search for requests to PHP in the working directory with a command such as
grep -E 'wp-content/upgrade/.*\.php' /var/log/nginx/access.log*. Adjust the path and usezgrepfor compressed logs. Your ownprobe.phptest from the block check will also appear. A clean log does not prove a site is safe - Administrators: Check for unknown accounts with
wp user list --role=administrator --format=csv - Plugins: Check for unknown plugins and tampering with
wp plugin listandwp plugin verify-checksums --all - Core files: Run
wp core verify-checksums --include-root(WP-CLI 2.8.0 or later). This does not cover plugins or uploads - Database target: Run
grep -nE "DB_(NAME|USER|HOST)" wp-config.phpand confirm it shows your own database. This command does not print the password - If you suspect compromise: Isolate the site and preserve logs. Restore from a trusted backup, and change database, administrator and API credentials and the
wp-config.phpkeys
Official Sources
- WordPress: WordPress 7.1.4 announcement
- WordPress: 7.1.4 details
- WordPress: GHSA-4w3m-c66w-69mg
- WordPress: Fix commit
- WordPress: Manual upgrade steps
- WordPress: If your site was hacked
- WP-CLI: wp core update
- WP-CLI: wp core verify-checksums
- NVD: CVE-2026-119977
- CISA: Known Exploited Vulnerabilities Catalog
- Red Hat: CVE-2026-119977
- JPCERT/CC: Weekly Report 2026-11-05 (Japanese)
- IPA: 2026 security alerts (Japanese)
- Wordfence: 7.1.4 security release
- Wordfence: Observed exploitation attempts
- Wordfence: Weekly vulnerability report
- Patchstack: 7.1.4 analysis
- Picus Security: CVE-2026-119977 analysis
- Imunify360: 7.1.4 analysis
- Ostorlab: CVE-2026-119977 analysis
- cn.wordpress.org: Chinese release list
- Debian: CVE-2026-119977
- Debian: DSA-6596-1
- Fedora: wordpress package
- Arch Linux: wordpress package
- Gentoo: www-apps/wordpress
- FreeBSD Ports: www/wordpress
- Docker: Official image list
- Bitnami: WordPress container
- Bitnami: .htaccess configuration
- Roots: Bedrock and Composer
- 1Panel: WordPress app
- Softaculous: WordPress
- AWS: Lightsail Bitnami blueprints
- Microsoft: App Service auto-updates
- Pantheon: Core updates
- WP Engine: WordPress update policy
- ConoHa WING: Notice (Japanese)
- Onamae.com: Notice (Japanese)
- Xserver: News (Japanese)
- Shin Rental Server: News (Japanese)
- Star Server: News (Japanese)
- SAKURA internet: Announcements (Japanese)
- mixhost: News (Japanese)
- KAGOYA: News (Japanese)
- Lolipop!: News (Japanese)
- Apache: mod_rewrite
- nginx: location
- OpenLiteSpeed: Rewrite rules
- Microsoft: denyUrlSequences
- Caddy: Caddyfile directives
Disclaimer
This article was compiled by Two Sheep Co., Ltd. from public information available on 6 November 2026 and does not guarantee the behavior or safety of any product. Always check the latest information from each provider before you start. Company and product names are trademarks or registered trademarks of their respective owners. Companies are named as sources or subjects of information, and their mention does not indicate any business relationship with Two Sheep.
If you need on-site work at a data center, such as a server restart, console work or equipment replacement, please contact us about our Remote Hands service.