22 comments

  • netsharc 5 hours ago
    Well, whoever picked the name HTTP2Shell certainly didn't use any intelligence, artificial or genuine.

    It's so meaningless, broad and undescriptive of the actual issue. No it probably doesn't affect an HTTP server with nothing else behind it, so why is HTTP being blasted?

    You might as well call it Exploit Pro Max...

    • Rapzid 1 hour ago
      I think we've all seen where an LLM names a session, issue, or PR based on its early understanding and fails update it later.

      AI isn't being asked to review the title, and it doesn't have experience or think, so of course it's not going to flag it.

      No human reviews anything anymore so of course they aren't going to catch it.

      Edit: AI for as good as it is at "writing" is terrible at writing and particularly at naming things. I had an AI name a client OpenAICompatibleEmbeddingClient. "Brooooo.. I think "compatible" is implied, who names stuff like that?!"

    • CharlieDigital 5 hours ago
      Feels like the goal was sensationalism.
    • cowlevel 1 hour ago
      Actually it does, if the server is willing to decompress POST bodies.
      • croes 1 hour ago
        Brotli bodies, so Brotli2Shell
    • rererereferred 1 hour ago
      Just call it CVE-2026-111497. More accurate and much easier to remember and to talk about with your boss.
      • N19PEDL2 1 hour ago
        Or EUVD-2026-108169.
    • reddozen 4 hours ago
      The author clearly used super intelligence.
    • techpression 4 hours ago
      I immediately thought HTTP/2 was having a bad day somehow. Might I suggest Software2Shell to be less confusing.
      • CharlieDigital 4 hours ago
        Specifically Brotli2Shell
        • photios 3 hours ago
          google2shell would have been nice :D
          • anilakar 3 hours ago
            Alt-tabbing from browser to terminal and back has always felt exhausting. Nice.
          • devsda 2 hours ago
            With ad served malware, this wouldn't be the first time though :)
    • groundzeros2015 2 hours ago
      All these names are silly. It's just marketing.
      • sigmarule 1 hour ago
        There are levels of silliness, and this has achieved a new one.
  • pimterry 3 hours ago
    Much prefer the Broccoli2Shell name & site (for the same vuln): https://broccoli2shell.com/. For starters, I'm pretty sure you can hit this without HTTP if you do any manual Brotli decoding, HTTP just happens to be the most common case that comes up.
  • Rapzid 3 hours ago
    > reported it as unauthenticated remote code execution that works in both directions

    > but it wasn't recognized as a security issue at the time and no release shipped with the fix until now

    I'm always getting my dangerous RCE bugs mixed up with my harmless RCE bugs.

    I'm curious how this was reported and fixed back in Feb but nobody recognized the importance. A case of AI automation and nobody at the wheel?

  • bawolff 3 hours ago
    To me, the surprising part is how many of these implement brotli compression of request (not just response) bodies, given how obscure a feature that is.

    In any case all this sensationalism is starting to get annoying. Patch your stuff and move on.

    Edit: actually, between all the sensationalism, its hard to tell from the article how many of these actually support brotli compressed request bodies in common configs vs some other use of brotli (which is bad but nowhere near as critical)

    • ArcHound 3 hours ago
      I think the issue is that the servers "silently" support brotli. Then nobody uses it, but the attacker can still abuse the feature.

      So as a hotfix I block this on my reverse proxy.

      • bawolff 3 hours ago
        But is that actually true?

        It seems like node supports it with body parser enabled.

        But im having trouble finding any docs suggesting anything else supports it on inbound requests.

        Obviously there are other scenarios where it is exploitable, but it is a much less severe vuln if the attacker must first force the program to make an outbound request to a server of its chosing rather than just connect to a vulnerable server.

        • Rapzid 1 hour ago
          Asp.Net adds Brotli support if you "UseRequestDecompression" or "UseResponseCompression".

          DotNet, however, has it's own C# Brotli implementation.

      • AlienRobot 54 minutes ago
        I wonder if we'll see more of this thanks to AI. Extremely complex features that nobody uses and that were easy to add, which incidentally tremendously expand the attack surface. One would hope that maintainer would be wise to avoid that, but for how long?
      • bflesch 57 minutes ago
        Cloudflare has this amazing feature where it accepts compressed payloads and forwards them to unsuspecting backends. Can be weaponized in many ways.
  • nairboon 4 hours ago
    Brotli2Shell seems to be a more appropriate name for this.
    • mkl 3 hours ago
      Not when you're prioritising sensationalism over accuracy. Everyone's heard of HTTP, but hardly anyone's heard of brotli.
      • brazukadev 2 hours ago
        call it GoogleBrotli2Shell then.
  • semiquaver 1 hour ago
    Let’s say I have a node.js app behind an Amazon elastic load balancer which terminates TLS. My understanding is that in nearly all configurations, my app would be unaffected because the ELB would handle decompression. Is that generally correct?
    • chrismorgan 16 minutes ago
      I don’t know about that specific software, but I would be surprised if it decoded message bodies, which is entirely unrelated to TLS termination and shouldd be entirely unrelated to routing. So I would expect you would still be vulnerable.
    • aleaph 29 minutes ago
      Yep, I don't think too many people are exposing their python/node servers directly, it should be always behind a proxy or a fancy cloud LB.

      Apache and nginx don't handle brotli out of the box.

    • thisisauserid 25 minutes ago
      [dead]
  • flyingjoe 4 hours ago
    A few month ago, everyone was advising to use cool-downs in your package upgrades. Now we're constantly overriding those because security incidents will be exploited immediately. Guess that's just how it's gonna be from now on.
    • medler 4 hours ago
      It used to be a flex to say you deploy daily but it’s going to become a necessity just to keep up with the vulns
  • cowsandmilk 4 hours ago
    Article claims OpenAI found this in February, but I don’t think that’s correct. I think Google made a change to the Brotli source code in February that fixes the issue, but hadn’t realized it was a security issue and therefore hadn’t cut a release.
    • Rapzid 3 hours ago
      Yeah that doesn't make a lot of sense that they reported it but also nobody knew it was a security issue..

      Maybe an LLM just happened to do one of those "while I'm here" fixes in Feb and because nobody reviews anything anymore..

      "Fixed reading too many bytes."

      LGTM!

      Edit: I was close! "Detect and report invalid stream earlier." Could have been a person.

  • anttihaapala 39 minutes ago
    I had to check all of our Python deployments and installation BOMs and was quite relieved - turns out that none actually installed brotli libraries. HTTP libraries like httpx, requests and frameworks consider them optional and autodetect their presence.
  • tetha 5 hours ago
    Well at least we know about it while or before the giant patch effort for everything else goes on. Just put it onto the pile.

    Who turned on hard mode this week?

    • loloquwowndueo 4 hours ago
      Nah man. We were on casual mode all along. This is the new normal.
  • upofadown 4 hours ago
    An example of the cost of added complexity I suppose. Brotli is much more complicated than the gzip/deflate it replaces. ... and of course we still have to expose gzip to attack as well.

    Every time you add something you lose something...

  • skeledrew 3 hours ago
    I've just been pointing a Claude Code at these things as they pop up. A great time to not have to worry about chasing all these things manually.
  • est 5 hours ago
    wtf Python is also effected. https://pypi.org/project/brotli/ not sure about shell
    • Incipient 4 hours ago
      Side point from going to pypi:

      > Security notice: Upgrade certifi, pip, and uv in response to CA certificate incident

      Blimey PIP is affected? That's bad. I feel like that should have been bigger news?

      • skeledrew 3 hours ago
        Because pip uses it's own certificate bundle, so even if you fix the system itself pip still needs its own upgrade to handle the eMudhra episode.
        • tetha 2 hours ago
          And strictly speaking you cannot trust the pip upgrade of pip with the vulnerable cert in the trust store due to certifi, which you also cannot upgrade safely with pip for the same reason. All of these are at one out of two compromises from being MITM'd during the upgrade.

          So strictly we have to burn everything python to the ground and reinstall entirely.

        • steve1977 44 minutes ago
          Python certificate handling is a hot mess, even by Python standards.
      • murderfs 4 hours ago
        Pretty sure that's the eMudhra "private key is 4" issue.
  • jgalt212 3 hours ago
    How may web servers only serve brotli?

    How many clients only accept brotli?

    • michaelbuckbee 3 hours ago
      Well it's negotiated, right?

      So say you run a SaaS that allows for something like letting people set their Avatar from an image URL which gets downloaded.

      As an attacker I setup a new server that serves only brotli and then submit that URL to the SaaS.

      • cowlevel 1 hour ago
        Just send a POST with Content-Encoding:br to any URL and hope it gets decided before the URL route is checked.
      • jgalt212 3 hours ago
        > So say you run a SaaS that allows for something like letting people set their Avatar from an image URL which gets downloaded.

        That's a clever example, but why would you do that? The avatar should be a static resource. As such, I'd only provide an upload file dialog.

        • thephyber 2 hours ago
          Gravitar was super popular for a year or two.

          Quit being overly pedantic about how contrived the example is and struggle with the underlying fact that the compression type is negotiated between the client and server. If the compression happens on the HTTP request (as some of the comments here suggest), then the server must use that compression method or it fails to read the body of the request.

        • ceejayoz 1 hour ago
          Lots of apps will, for example, bring in your Google avatar (i.e. they fetch its URL for ingestion) as a default avatar if you use them for SSO. Slack included, IIRC.
  • rfgplk 1 hour ago
    As I've mentioned numerous times at this point, relying on third party code is a massive liability (supply chain attacks/sloppy code). My hand rolled brotli implementation is not only faster than libbrotli but also immune to this vulnerability (yes, I checked). Roll your own code people.
    • ethin 46 minutes ago
      Would you also apply this to cryptography or, well, really any security library? Because I hope the answer will be no...
  • perching_aix 2 hours ago
    git for windows is vulnerable even in its latest release (2.56.0.windows.3), careful pulling repos over https from random ass servers (prolly uncommon but hey). they already merged the fix on the repo, it's just in a snapshot build only; should prolly arrive on Monday (2.56.0.windows.4).

    also affects codex (gui), which ships its own git, could be more of a problem there, when the LLMs get quirky at night. still unlikely to be a problem though.

    speaking of, update codex (and wipe its cache at ~/.cache/codex-runtimes), ships its own node. update python.

    stuff like wireshark and imhex remain vulnerable, even on their latest repo commits, which may or may not be spicy.

    also Microsoft 365 Copilot still has its own unpatched brotlidec.dll from Oct 7, if anyone uses that. no fix available for that one afaik, not sure about how it can be made to access the vulnerable decoder.

    • andersonpico 1 hour ago
      why is this downvoted? are any of those not accurate?
      • hiitsmyaccount 17 minutes ago
        Because a local software vuln is much less scary, less exploitable, and more common than an exploit like PHP2Shell, which requires basically no effort to exploit a large chunk of publicly exposed webservers. Basically, local vulns have been a thing forever and GP is off topic.
  • TacticalCoder 4 hours ago
    I really don't understand how so many different things are affected by the same brotli bug/exploit.

    I even read the patch for the C code (patch which, btw, seems a bit hacky to me with isSafe? methods added and whatnots but YMMV: now I understand things had to be patched in a hurry but this patch really looks like "lipstick on a buffer overflowing C pig" to me).

    What's the link between Python / Node / C++ / libbrotli / Envoy / Bun: are those some all using the same C brotli encoder/decoder?

    Can someone who knows more explain why all those are vulnerable?

    > As for unaffected software, Apache’s standard mod_brotli does not decode Brotli

    Because this one only encodes and doesn't decode and the bug is in the decoder? (for I take it mod_brotli, with such a name, still does something brotli related and isn't, say, a TOTP token generator nor a SAT solver?).

    I mean overall, sheesh: could we get better explanation / better writeups when such big fuckups happen?

    • Rapzid 3 hours ago
      Yes. All these language runtimes compile against common libraries. Compression libs are one of the most common common libraries that platforms like node, ruby, dotnet, python, and etc need to compile.

      Google provides the Brotli implementation. Package maintainers slurp that up and create ie libbrotli-dev. When you compile node it uses that for brotli support.

    • thephyber 2 hours ago
      Brotli was a library released by the Google team that developed it. There weren't lots of independent implementations; they were all from the same source code.
      • rfgplk 1 hour ago
        Or you can roll your own and not rely on the literal disaster that Google developed. Brotli is trivial to implement.
  • chelseahermes 2 hours ago
    [flagged]
  • Zestymarble45 5 hours ago
    [flagged]
  • davedx 4 hours ago
    Honestly it's time to get rid of C as a language used where security is a factor. Enough already. Why the hell is a lib like brotli that processes public general internet traffic, and maintained by google, not in rust?
    • thephyber 2 hours ago
      Security is a factor everywhere. And C is everywhere. There's not going to be a "rewrite everything in Rust" project until after there is some legit penalty for selling / offering software in C that could be more secure in another language.

      I think Mozilla got it right when they abandoned the effort to rewrite the entire browser in Rust and instead focused on analysis of which modules needed priority rewrites. If a module has historically had zero memory-related bugs, then there are other higher priority things to spend time on.

      That said, Google Project Zero should have had Brotli on their radar. Hopefully they still have people and resources.

    • doublerabbit 4 hours ago
      Because these applications were created long before Rust existed.

      There is a cost to conversion.

      • Gigachad 4 hours ago
        Brotil was actually created post rust, but before rust took off.
      • davedx 4 hours ago
        It's not even an application it's a compression library
  • austin-cheney 2 hours ago
    Why are we still so reliant on HTTP? HTTP came out in 1990 (36 years ago) and the most common version of HTTP still in use, 1.1 (RFC2616), came out in 1999 (27 years ago)?

    Yes, I know HTTP 2 and 3 and SSE are attempts to make it faster and more parallel, but its still slow. Its slow because its unidirectional with a full round trip and by default its a new socket per each message. Yes, I know the real reason HTTP became and remains popular is because its sessionless... in theory. Still, there are better options available. You can do so much more with a full duplex channel.

    • singpolyma3 2 hours ago
      We don't need new versions of http or SMTP because they're already simple and great and they're dumb protocols so there's not much you could ever add

      If you want something else you can take your pick based on need from dozens of other options

      • cowlevel 1 hour ago
        HTTP 1 is full of parser differential vulnerabilities, which 2 fixes. That is probably its biggest flaw.

        SMTP is too chatty - it uses too many round trips for efficient transfer across the internet. It can take several seconds just to get to the point of sending the email data. It also duplicates information between the SMTP envelope and the email body which creates vulnerabilities when they don't match.

        For APIs that don't have to work in a browser I suggest JSON lines over TCP, or over TLS.

        • rfgplk 1 hour ago
          Most header parsing bugs that affect HTTP1.1 can also affect 2+3. Not in the same style but there are quite a few overlapping ones.
    • cowlevel 1 hour ago
      "by default its a new socket for each message" is misinformation - keepalive is the default since HTTP 1.1 (1999).
    • rfgplk 1 hour ago
      Agreed. The issue with all these archaic standards is that they were rolled decades ago back when certain practices were either outright not being employed OR that hardware wasn't fast enough. Ironically, HTTP itself is a literal nightmare to parse (performance wise) on top of having like... ten? distinct vulnerability classes. The world desperately needs new standards.
      • cowlevel 1 hour ago
        Just open a TCP socket and send JSON messages. Or if you want a bit more efficiency, fixed-format binary messages, but remember to include a version number.
        • rfgplk 1 hour ago
          For custom server implementations, agreed. But the web still depends on HTTP and we sadly need the major infra providers to agree on a new standard otherwise HTTP isn't going anywhere