Update: Node2Shell becomes HTTP2Shell — Python HTTP libs exposed

One Brotli flaw (CVE-2026-111497, CVSS 9.2) reaches requests, httpx, aiohttp and Scrapy without an explicit import — and scanners still don't flag it.

Nowline OCT 24 4:00 PM banner

Top AI stories from the last hour

Top AI stories from the last hour

Copy markdown

  • Your Python HTTP stack is in the blast radius

    The Node.js Brotli RCE is the same CVE in Python: Brotli ≤1.2.0 and brotlicffi 1.2.0.x, pulled in automatically by urllib3/requests, httpx (brotli extra), aiohttp and Scrapy. You don't have to import Brotli to be exposed. Upgrade to Brotli ≥1.2.1 and brotlicffi ≥1.2.1.0.

  • Scanners are blind to it right now

    As of Oct 23, pip-audit, Dependabot and Safety don't flag the affected PyPI packages — the advisory databases haven't mapped CVE-2026-111497 onto Brotli/brotlicffi yet. A clean audit run means nothing here; check the lockfile and transitive deps by hand.

  • A hostile server can hit your client, not just the reverse

    Exposure is bidirectional: a malicious server can exploit any client that accepts a Brotli-compressed response. If your agent fetches URLs it doesn't control, strip br from Accept-Encoding and reject br responses until you've patched — changing Accept-Encoding alone isn't enough.

  • The patch matrix spans the whole stack

    Fixed builds are out: Node 22.23.4 / 24.22.1 / 26.12.1, Bun 1.4.4, Envoy 1.40.0 (+1.39.3/1.38.6/1.37.8), Istio 1.29.9/1.30.6/1.31.2, and curl built against libbrotli 1.2.1. Rebuild container images and lockfiles — bumping the top-level dep isn't enough.

  • Reported since February, shipped as a plain bug

    Per Aikido, the root cause was quietly fixed in Brotli source back in February after OpenAI reported it, but was never tagged as security, so no release carried the fix until now. It's an out-of-bounds write in DecodeBlockTypeAndLength(), Brotli 1.0.3–1.2.0, all platforms, CVSS 9.2.