CyRisk Security Advisory: php2shell (CVE-2026-109618 & CVE-2026-109619)

October 21, 2026

CyRisk Security Advisory: Brotli Decoder Flaw “Node2Shell” (CVE-2026-111497)

by CyRisk

    Published November 9, 2026

    Summary

    A critical flaw in Google’s Brotli decompression library lets an attacker corrupt a server’s memory and potentially run code on it. The attacker only has to get the server to decompress specially crafted Brotli data. The flaw is nicknamed “Node2Shell”, “HTTP2Shell” and “Broccoli2Shell”, and it is rated Critical (CVSS v4.0 9.2). On October 27, 2026, CISA added it to its catalog of vulnerabilities being actively exploited. Public exploit code is available.

    Update now. Brotli versions 1.0.3 through 1.2.0 are affected. Fixes are available for:

    • Node.js
    • Bun
    • .NET
    • Envoy
    • Istio
    • the Python Brotli packages

    Who is affected

    Brotli is built into many runtimes and servers. You are affected if an internet-facing system meets both of these conditions:

    • it runs an affected version below;
    • it decompresses Brotli data that an outsider can influence.
    • Node.js. Brotli is bundled in every release.
      • Affected: 22.x below 22.23.4, 24.x below 24.22.1 and 26.x below 26.12.1.
      • Node.js 18 and 20 are end of life and will not be fixed.
      • This covers websites and APIs built on Next.js, Express, Nuxt and similar frameworks.
      • Two common ways to be exposed: Node’s built-in fetch() decompresses Brotli responses automatically, so a server that fetches content from other sites is exposed; and a server that accepts Brotli-compressed request bodies is exposed too.
    • Bun: below 1.4.4.
    • .NET (ASP.NET Core):
      • Affected: 8.0.0 – 8.0.32, 9.0.0 – 9.0.21, 10.0.0 – 10.0.13, and .NET 11 previews before RC3.
      • You are exposed only if one of these applies:
        • Brotli request decompression is turned on;
        • HttpClient automatic Brotli decompression is turned on;
        • the application passes untrusted data to BrotliStream or BrotliDecoder.
      • Both decompression features are off by default.
      • .NET Framework is not affected. Unsupported versions such as .NET 6 get no fix.
    • Envoy: below 1.36.12, 1.37.8, 1.38.6 and 1.39.3, and only when a Brotli decompressor is configured.
    • Istio: 1.29.0 – 1.29.8, 1.30.0 – 1.30.5 and 1.31.0 – 1.31.1, and only when Brotli decompression is enabled (for example through an EnvoyFilter). Istio 1.29 is end of life.
    • Python: brotli 1.0.3 – 1.2.0 and brotlicffi below 1.2.1.0. HTTP libraries such as requests and urllib3 decode Brotli responses automatically when either package is installed.
    • Other software that bundles Brotli, such as Linux libbrotli packages or the Go brotli library before 1.2.7: check with your vendor.

    How to check if you’re affected

    Check the version that actually serves traffic. That means on the server or inside the container, not on a developer’s laptop.

    • Node.js:
      • Run node -v.
      • For containers, check what the base image tag resolves to.
      • On managed platforms (serverless functions, hosted web apps), check the configured Node.js runtime and confirm the provider has rolled out the patched release. Redeploy if needed.
    • Bun: run bun --version.
    • .NET:
      • Run dotnet --list-runtimes and check Microsoft.NETCore.App and Microsoft.AspNetCore.App.
      • Self-contained and NativeAOT applications carry their own runtime, so check the version they were published with.
    • Envoy: run envoy --version, and search your configuration for a decompressor filter using the Brotli library.
    • Istio: run istioctl version, and look for EnvoyFilters that enable Brotli decompression.
    • Python: run pip show brotli brotlicffi.
    • Linux packages: check libbrotli1 (Debian/Ubuntu) or brotli (Red Hat) against your distribution’s security tracker.

    If a provider hosts or manages the system for you, ask them in writing to confirm they have deployed the fix.

    Immediate actions

    1. Inventory internet-facing systems running the software above. Start with servers that fetch content from third-party sites or accept compressed uploads.
    2. Update to a fixed release:
    SoftwareUpdate to
    Node.js22.23.4, 24.22.1 or 26.12.1 (move off 18 and 20)
    Bun1.4.4
    .NET8.0.33, 9.0.22 or 10.0.14 (.NET 11: RC3)
    Envoy1.36.12, 1.37.8, 1.38.6, 1.39.3 or 1.40.0
    Istio1.30.6 or 1.31.2 (1.29.9 is the final 1.29 release)
    Pythonbrotli 1.2.1, brotlicffi 1.2.1.0
    Google Brotli library1.0.10, 1.1.1 or 1.2.1
    1. Rebuild and redeploy:
      • Rebuild container images on patched base images and redeploy them.
      • Republish self-contained and NativeAOT .NET applications. Updating the shared runtime alone does not fix them.
    2. Restart services so the new runtime is loaded.
    3. Re-check the running version after the restart.

    If you can’t patch right away

    Until updates are in place, stop affected systems from decompressing Brotli data from untrusted sources:

    • At your WAF, load balancer or reverse proxy: reject requests with Content-Encoding: br unless you need them.
    • Servers that fetch remote content: limit which outside sites they can reach.
    • .NET: do these only if you already use the features:
      • remove the br provider from ASP.NET Core request decompression;
      • remove Brotli from HttpClient’s AutomaticDecompression setting.
    • Envoy and Istio: remove the Brotli decompressor filter or EnvoyFilter.
    • Systems you can’t patch: put them behind a VPN or IP allowlist, or take them offline.

    None of these replace patching.

    Verify and detect

    • Confirm the running version after every update, using the checks above.
    • Watch for signs of attempted exploitation:
      • Node.js, Bun, .NET or Envoy processes crashing with memory errors (segmentation faults), especially around requests or responses with Content-Encoding: br;
      • shells or download tools started by web server processes;
      • unexpected outbound connections;
      • new or changed files in application directories.
    • If you see any of these, isolate the system, preserve its logs, and contact your incident response provider or cyber insurer.

    References

    This advisory reflects information available as of November 6, 2026, and will be updated as details change. It is general guidance and not a substitute for advice from your IT provider or security vendor.

    Leave a Reply