On October 22, 2026, Google published CVE-2026-111497, a critical vulnerability in Brotli, one day after the Brotli project released fixed versions. The vulnerability has circulated under several unofficial names, including HTTP2Shell, Node2Shell, and Brotli2Shell. Despite the first name, the flaw does not involve the HTTP/2 protocol. It has a CVSS v4.0 score of 9.2 out of 10. A specially crafted Brotli stream can corrupt memory. If an attacker can make a vulnerable network-facing process decode it, the flaw can lead to unauthenticated remote code execution.
This is not a vulnerability in WordPress Core, a plugin, or a theme. However, WordPress can ask the server to retrieve data from other websites, and the server may use Brotli when it processes the response. A public proof of concept uses WordPress’s unauthenticated XML-RPC pingback feature to reach the vulnerable library.
The Wordfence Threat Intelligence team reproduced remote code execution in an isolated WordPress lab and tested how well the public exploit transferred between closely related server configurations. This article explains what we confirmed, what the test does and does not prove, and what WordPress site owners should do.
TL;DR
- Ask your hosting provider whether the Brotli library used by your site has been patched for CVE-2026-111497. Updating WordPress, a plugin, or a theme does not update this server-level library.
- Our lab testing confirmed unauthenticated remote code execution through WordPress. The public proof of concept repeatedly executed code in the PHP 8.3.36 server environment it was designed for. It did not execute after Brotli was patched.
- The current exploit depends on the server configuration. The same payload did not execute against PHP 8.3.35, although it crashed PHP in one vulnerable test environment. This shows that the public payload is not universal. Attackers may still be able to adapt it to commonly used server configurations, but we have not demonstrated remote adaptation to an arbitrary WordPress server.
- CISA lists CVE-2026-111497 as known exploited, but its public entry does not identify the affected application, attack route, or outcome. Sensor networks continue to record exploitation attempts, but the public reports we reviewed through November 2 do not document a successful production compromise or a compromise through WordPress.
What is Brotli, and what does it have to do with WordPress?
Brotli is a compression format and software library used to make web content smaller and faster to transfer. It is commonly supplied by the operating system, hosting platform, container image, web server, or another part of the software stack. Site owners may use it without ever seeing “Brotli” in the WordPress dashboard.
Brotli can be used for both incoming and outgoing web traffic. In the demonstrated WordPress attack, the dangerous data is not carried directly in the request sent to the site. Instead, WordPress makes an outbound request to an attacker-controlled server, and the vulnerable Brotli library processes the compressed response.
Because Brotli is installed and updated separately from WordPress, updating WordPress will not replace the affected library. The hosting provider or server administrator must install the relevant operating-system or platform update, then restart or redeploy any services that loaded the old library.
What the vulnerability does
CVE-2026-111497 is an out-of-bounds write in the Brotli decoder. In plain terms, a malicious compressed file can make the decoder write data outside the area of memory reserved for it. The result may be a crash, disclosure of information from memory, or remote code execution.
Google’s CVE record lists affected upstream versions on all platforms. However, simply finding Brotli on a server does not prove that the site is remotely exploitable; attacker-controlled compressed data must reach an affected decoder through the website or another exposed service.
The first fixed releases for Brotli’s maintained upstream branches are:
| Affected upstream versions | First fixed upstream release |
|---|---|
| 1.0.3 through 1.0.9 | 1.0.10 |
| 1.1.0 | 1.1.1 |
| 1.2.0 | 1.2.1 |
Linux and hosting vendors often backport security fixes without changing the main upstream version number. For example, Debian 13 fixed the issue in libbrotli1 1.1.0-2+deb13u1, even though the package still begins with 1.1.0. Check the complete package revision and the vendor’s security notice rather than comparing only the first three version numbers.
On October 27, 2026, CISA added CVE-2026-111497 to its Known Exploited Vulnerabilities catalog. Its public entry does not identify the affected application, victim, attack route, or outcome, and it does not say whether WordPress was involved.
How the demonstrated WordPress attack works
The public proof of concept uses a normal WordPress feature to make the site retrieve a malicious compressed response:
- An unauthenticated request calls the
pingback.pingmethod atxmlrpc.phpand supplies a source URL controlled by the attacker. - WordPress retrieves that URL to confirm that it links to a real post on the site.
- The attacker’s server returns a specially crafted response marked as Brotli-compressed.
- The vulnerable Brotli decoder corrupts memory. If the exploit matches the server’s software and memory layout, the attacker can run code with the permissions of the website’s PHP process.
The demonstrated route requires more than an affected library. The XML-RPC endpoint must be reachable, pingback.ping must be registered, the target post must accept pings, the server must be allowed to make the outbound request, and the affected Brotli decoder must be used by the HTTP client. As currently published, the exploit must also closely match the target’s PHP build, runtime environment, and memory layout.
xmlrpc.php is the trigger used by this proof of concept, not a requirement of the Brotli vulnerability itself. Other software can expose the same decoder to attacker-controlled compressed data. In our scoped review of stock WordPress Core, pingback.ping was the clear unauthenticated route that lets an attacker supply a public URL. The other candidate URL-fetching features we examined required authentication, additional permissions, or prior content control. Plugins and themes may add other routes.
What Wordfence testing found
We reproduced the public proof of concept in isolated containers using its exact target environment: WordPress 7.1.3 on Debian 13.7 with Apache 2.4.69, PHP 8.3.36 running as mod_php, and Debian’s vulnerable libbrotli1 1.1.0-2+b7 package. Standard operating-system memory randomization was enabled.
The unauthenticated request executed code in the vulnerable lab. After we updated only Brotli to Debian’s fixed package, the same sequence no longer executed code and the server remained healthy.
The same payload did not execute against PHP 8.3.35. In one vulnerable WordPress environment, it instead crashed the PHP worker. This shows that the PHP version alone does not predict the outcome: differences in the exact build and runtime can determine whether a payload executes code, causes a crash, or fails.
Attackers can often identify WordPress, PHP, the web server, XML-RPC availability, and some outbound request behavior remotely. Those clues could help them select a payload prepared for a common server image. However, ordinary web requests do not normally reveal the exact binary build or memory layout needed to adapt this payload to an arbitrary server, and we did not demonstrate that capability.
Our current assessment is that the public exploit is not a universal request. Targeted exploitation or reuse against sites that share the same server image remains plausible. That may make indiscriminate attacks less reliable, but confirmed code execution, observed attack attempts, and CISA’s catalog entry make patching urgent.
What is known about exploitation in the wild
Multiple security companies have observed malicious targeting. ELLIO captured an exploit attempt aimed at an official Node.js build, but the captured payload did not produce a shell in 50 replays against a matching vulnerable target. Previdian continues to observe exploitation attempts, including activity on November 2, and states that its telemetry does not show whether targets were vulnerable or whether the attempts succeeded. Check Point reported automated scanning and suspicious payloads, but not confirmed compromise.
Imperva and ELLIO separately demonstrated code execution against vulnerable Node.js builds in controlled labs. These results confirm that the vulnerability can be exploited beyond WordPress, but they are not evidence of production compromise. As of November 2, 2026, we found no independently reviewable public report documenting a successful production compromise or a compromise through the WordPress XML-RPC route. CISA’s public catalog entry does not disclose the affected application, attack route, or supporting incident details, so the absence of a public case does not mean that no exploitation has occurred.
How to check whether your site may be affected
The WordPress version shown in Tools > Site Health cannot answer this question. Brotli is normally outside WordPress and may be supplied by the host, operating system, container image, PHP stack, or another bundled component.
Managed-hosting customers should ask their provider:
Is the process serving my WordPress site using a Brotli decoder patched for CVE-2026-111497, and were all affected services restarted or redeployed after the update?
Technical administrators can use XML-RPC’s unauthenticated system.listMethods method to check whether pingback.ping is registered. That check is safe, but it proves only that the method is available—not that the site is exploitable. The post must also accept pings and the server must meet the other conditions described above. WordPress’s Settings > Discussion option for pingbacks changes the default for future posts; existing posts may retain their earlier setting.
A note for Wordfence users
Wordfence’s Disable XML-RPC authentication option does not disable unauthenticated pingbacks. WordPress documents that the similarly named xmlrpc_enabled filter also affects only methods that require authentication; it does not disable pingback.ping.
Changing XML-RPC or pingback behavior may disrupt legitimate integrations and removes only the demonstrated WordPress route. It does not repair the vulnerable Brotli library. Installing the vendor’s security update remains essential.
What WordPress site owners should do
- Managed-hosting customers: Ask the hosting provider to confirm that every Brotli copy used by the site contains the CVE-2026-111497 fix and that affected services were restarted or redeployed.
- Self-managed server administrators: Install the security update supplied by the operating-system or platform vendor. Compare the complete package revision, then restart Apache, PHP-FPM, or any other process that loaded the old library.
- Container users: Rebuild and redeploy from an updated base image. Restarting an existing container does not replace the vulnerable files inside it.
- CloudLinux and similar platform users: Check the vendor advisory carefully. A server may contain separate system, web-server, or bundled PHP copies of Brotli, and updating one copy may not update the others.
- Agencies and hosting providers: Review every production, staging, and legacy environment. Do not assume that one package check covers every PHP pool, container, or server image.
- Preserve logs and backups: Because public exploit details and observed attack attempts are available, and CISA lists the vulnerability as known exploited, retain available web-server, PHP, process, firewall, and outbound-network logs from before public disclosure through the time each environment was patched and restarted.
- Investigate unusual activity: If patching was delayed, look for unexpected XML-RPC pingback requests, unusual outbound connections, and PHP or web-server crashes and restarts. These signs are not proof by themselves, and their absence does not prove that exploitation did not occur.
If an investigation finds evidence of compromise, contain the affected system before rotating database credentials, API keys, WordPress salts, and other secrets available to the website. Routine secret rotation is not a substitute for patching, and it should follow a proper incident-response assessment.
Conclusion
CVE-2026-111497 is a critical vulnerability in Brotli, not WordPress, but WordPress can provide a path to the vulnerable decoder. Our lab testing confirmed unauthenticated code execution on an exact server environment. The current public payload is not universal, but matching payloads may be reusable across standardized server images, and attackers are already testing the vulnerability in the wild. Successful production compromise through WordPress has not been publicly established, but the available evidence supports treating the update as urgent.
Do not treat configuration dependence as a reason to delay. Install the fixed package or image supplied by the relevant vendor, restart or redeploy every affected service, and verify the complete package revision used by the website.
Wordfence Care and Wordfence Response customers can contact our incident response team if they believe a site may have been compromised. Wordfence Response provides 24/7/365 availability with a one-hour response time.
If you know someone who manages WordPress sites, please share this article and ask them to confirm that the Brotli library used by each site has been patched.
Sources
- Google CNA record for CVE-2026-111497
- Brotli 1.2.1 security release
- Upstream Brotli security fix
- CISA Known Exploited Vulnerabilities catalog entry
- Debian security tracker for CVE-2026-111497
- Ubuntu security notice USN-8956-1
- Amazon Linux security advisory ALAS2023-2026-3334
- CloudLinux Brotli advisory
- WordPress
pingback.pingimplementation - WordPress
xmlrpc_enableddocumentation - WordPress guidance for disabling trackbacks and pingbacks
- Public WordPress proof of concept for CVE-2026-111497
- Tenable overview of the HTTP2Shell, Brotli2Shell, and Node2Shell names
- ELLIO analysis of a captured exploit attempt and controlled Node.js exploitation
- Previdian CVE-2026-111497 attempt telemetry
- Check Point HTTP2Shell research and observed activity
- Imperva controlled Node2Shell exploitation research
The post HTTP2Shell: What the Critical Brotli Vulnerability Means for WordPress Sites appeared first on Wordfence.