A threat called "http2shell" is circulating in developer and security circles. It was flagged in a post from Aikido Security (seen via a Nitter mirror) and picked up on the Hacker News front page, where it drew 126 points and 68 comments. It's described as an evolving remote code execution (RCE) problem affecting Node, Python, and potentially other HTTP/2 implementations.
This guide won't pretend to know more than is public. The details are still developing, and I can't give you a patch version number or a confirmed list of affected libraries. What it will give you is a calm, step-by-step way to find out whether you're exposed and what to do while the facts settle.
What http2shell is, in plain English
HTTP/2 is the newer version of the protocol that web servers and browsers use to talk to each other. Many services use it by default, often without anyone choosing it deliberately.
Remote code execution means an attacker can make someone else's server run commands the attacker chose, without having a login. It's among the most serious categories of software flaw because it can hand over control of the machine.
Per the report, http2shell is a bug in how HTTP/2 is parsed or handled, and it shows up across more than one ecosystem. The takeaway: this may not be one bad library you can swap out. It may be a class of problem that appears wherever HTTP/2 is implemented.
Step 1: Work out whether you run anything with HTTP/2
If you're not a developer, this step is a question for whoever runs your website or app. If you are, check yourself.
- List every service that accepts web traffic: APIs, web apps, internal tools, admin panels.
- For each, note the runtime (Node, Python, or something else) and whether HTTP/2 is turned on.
- Note what sits in front of it. A load balancer, CDN, or reverse proxy may be the thing speaking HTTP/2 to the internet, which changes where the risk lives.
A quick test from a terminal on a machine with curl installed: run curl -I --http2 https://your-site.example and look at the first line of the response. If it starts with HTTP/2, that endpoint negotiated HTTP/2. Replace the address with your own.
Step 2: Record your versions
You can't judge a patch without knowing what you run. Write down:
- Your Node version (
node --version) - Your Python version (
python --versionorpython3 --version) - Any HTTP/2-capable server or framework libraries in your dependency files (
package.json,package-lock.json,requirements.txt,poetry.lock) - The version of any proxy or gateway in front of your app
Keep this list somewhere shared. When fixed versions are announced, you'll compare against it in minutes instead of hunting.
Step 3: Find the authoritative advisories
Because the situation is evolving, rely on primary sources rather than social posts alone, including this article. Check:
- The original Aikido Security post and the discussion linked from Hacker News
- The security pages or release notes for Node and Python
- The advisories for each HTTP/2-capable library or server in your list
- Your hosting or CDN provider's status and security notices
Look for three things: which versions are affected, which are fixed, and whether a workaround is offered.
Step 4: Reduce exposure while you wait
I can't confirm that any specific setting fully blocks http2shell, so treat these as sensible hygiene, not a guaranteed fix. Check each against official guidance first.
- Know your choke points. If a managed proxy or CDN terminates HTTP/2 for you, ask the provider whether it's affected and patched.
- Limit what's public. Internal tools and admin panels that don't need to face the internet shouldn't.
- Run with least privilege. If a process is compromised, a low-privilege account limits the damage. Avoid running services as root.
- Turn on logging. Unusual requests or unexpected crashes are the sort of thing you'll want records of.
If an advisory says disabling HTTP/2 is an acceptable workaround, weigh that trade-off. It may cost some performance, but it's usually reversible.
Step 5: Patch and verify
When fixed releases appear:
- Update in a test environment first.
- Run your normal tests and confirm the app starts and serves traffic.
- Deploy to production, ideally in stages.
- Rebuild container images, not just the host. An old base image can quietly keep the vulnerable version.
- Re-run your version check to confirm what's actually running.
Also check transitive dependencies. Your code may not import an HTTP/2 library directly, but something you rely on might. npm ls and pip list (or pip show for a given package) help trace this. Many teams also use dependency scanners to flag affected packages automatically.
If you're not a developer
You don't need to panic or touch any code. If you use a service run by someone else, the useful move is simple: watch for security notices from the companies you rely on, keep your apps and devices updated, and use unique passwords with two-factor authentication. If you run a small site through a hosting company, send them a short message asking whether they're aware of http2shell and whether their systems are covered.
What we don't know yet
Based on the reporting available, the full scope is unclear: the complete list of affected products, exact versions, and whether attackers are using it in the wild. Treat claims that go beyond those facts with caution, in either direction. "Evolving" means today's picture may change.
Your best move right now: spend fifteen minutes building the inventory of services, runtimes, and versions from Steps 1 and 2. When the advisories land, that list is what turns a vague worry into a quick, confident fix.