back to top
HomeTechA Critical Bug in a 325M-Download Package Put Millions of AI Agents...

A Critical Bug in a 325M-Download Package Put Millions of AI Agents at Risk

- Advertisement -

One character. That’s what it took to bypass authentication on millions of servers running AI agents, MCP tools, and the infrastructure connecting them to user data, email accounts, databases, and in some cases industrial equipment.

The vulnerability, now tracked as CVE-2026-48710 and nicknamed BadHost, was found in Starlette, an open-source framework downloaded around 325 million times every week. If you’re building AI infrastructure in Python, there’s a good chance something in your stack depends on it.

Starlette is the foundation FastAPI is built on, and FastAPI is what a significant portion of the Python AI tooling ecosystem runs on.

Researchers say the official severity score doesn’t fully capture how dangerous the bug actually is. A patch was released Friday in Starlette 1.0.1, but vulnerable versions are still running in production systems right now.

Why AI agent infrastructure is the worst place for this bug to live

MCP servers are what allow AI agents to connect to external systems. Email accounts, calendars, user databases, third party services. To make those connections work, MCP servers store credentials for each one.

That makes them exactly the kind of target an attacker wants to reach. BadHost made reaching them straightforward. Starlette reconstructs requested URLs using the HTTP Host header without validating what that header actually contains. Inject a crafted value into that header and authentication logic built on Starlette’s request.url object approves access it shouldn’t. One character in the wrong place and the door opens.

The vulnerability affects not just direct Starlette deployments but every package that depends on it. FastAPI, vLLM, LiteLLM, Text Generation Inference, and a long list of OpenAI-compatible shim proxies all inherited the problem. If you’re building anything in the Python AI ecosystem there’s a reasonable chance something in your stack was affected.

What was actually sitting exposed

X41 D-Sec ran a scanner to see what was already reachable.

Clinical trial databases at biopharma companies. Full mailbox access, read, send, delete, at email and SaaS providers. SSH access to industrial devices through bastion hosts. Live personal identity data at identity verification firms. Hiring pipeline data and candidate PII at HR platforms. Subscriber lists with the ability to send mass email campaigns. AWS topology maps and distributed traces at cloud monitoring services. Nutrition logs and financial subscriptions at personal health and finance apps.

Researchers found actual systems, running in production, connected to actual data, reachable through a single malformed HTTP header. The most uncomfortable entry on that list is the industrial one. SSH access to devices via bastion host means remote code execution on physical infrastructure.

Nobody knows how long these systems were exposed before the patch landed. BadHost wasn’t a zero-day that surfaced and got fixed in 48 hours. Starlette has been widely deployed for years.

You May Like: 6 Open Source Developer Tools Worth Switching to

How it actually works

You don’t need to understand HTTP internals to grasp why this is bad. Its actually straightforward.

When your browser or an AI agent makes a request to a server, it sends along a Host header telling the server which domain it’s talking to. Starlette uses that header to reconstruct the full URL of the request. The problem is it never checks whether the Host header contains a valid value.

So an attacker sends a request with a crafted Host header, something that injects an extra path component into the reconstructed URL. The routing system, which decides what you’re allowed to access, looks at the actual request path and sees nothing wrong. But the authentication middleware, which decides whether you’re allowed in at all, looks at the reconstructed URL and gets confused. It thinks you’re requesting something you’re authorized for. You’re not. You’re in anyway.

One character. One inconsistency between how routing and authentication interpret the same request. That’s the whole vulnerability. It’s the kind of bug that’s embarrassing in retrospect precisely because it’s so simple. The researchers at X41 D-Sec found it while looking at vLLM, not Starlette directly. Which means it was hiding in the foundation while everyone was looking at the walls.

You May Like: Best AI Coding Models for Consumer Hardware

What to do right now

The fix exists. Starlette 1.0.1 was released Friday and patches the issue. If you’re running anything in the Python AI ecosystem, that’s the first thing to check.

The harder problem is dependency chains. You might not be running Starlette directly but if you’re using FastAPI, vLLM, LiteLLM, or most OpenAI-compatible proxy setups, you’re running Starlette underneath. Check your full dependency tree.

X41 D-Sec and Nemesis built a public scanner that checks whether a given server is still running a vulnerable version. Run it before assuming your stack is clean just because you updated the top-level package.

If you’re behind a properly configured firewall the exposure is significantly reduced, BadHost works most effectively against systems that aren’t. But most MCP servers and agent harnesses aren’t designed with the assumption that the network perimeter is the only defense. They shouldn’t have to be.

The uncomfortable reality is that the AI agent ecosystem was built fast, on top of tools that weren’t originally designed for the kind of sensitive access MCP servers now routinely handle. BadHost is a reminder that the security assumptions made into that infrastructure deserve more scrutiny than they’ve been getting. This one got patched. The next one might not surface as cleanly.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

YOU MAY ALSO LIKE
DuckDuckGo Installs Jumped 30% as Frustration With Google’s AI Search Grew

DuckDuckGo Installs Jumped 30% as Frustration With Google’s AI Search Grew

3
People on Reddit are calling it something beyond enshittification. One user put it simply: "Google basically just ruined the old ten blue links era." Another said Google is "abusing its status as infrastructure to weasel its AI into consumers' day-to-day." That's the actual audience reaction. The week after Google announced it was replacing its traditional search results with an AI agent that answers queries, executes tasks, and runs background monitoring, DuckDuckGo saw US app installs jump 18.1% week over week on average. It peaked at 30.5% on May 25. On iOS the numbers were sharper, week over week growth hit 33% on average and peaked at 69.9%. The company also said growth held through the Memorial Day weekend, when it usually sees a dip. DuckDuckGo has been stuck at around 2% of the US search market for years. One Google I/O announcement moved its install numbers more than anything DuckDuckGo has done on its own.
Microsoft and Uber Say AI Coding Tools Are Becoming More Expensive Than Human Workers

Microsoft and Uber Are Running Into an AI Cost Problem

0
The pitch was impressive. AI tools would make developers faster, reduce headcount costs, and pay for themselves many times over. Companies that moved early would have a structural advantage over those that waited. Microsoft believed it. So did Uber. Both pushed hard on AI coding tool adoption across their engineering teams. Both are now dealing with same problem: the faster their employees embraced the tools, the faster the bills grew. In some cases those bills have started exceeding what the same work would have cost with human labor. The problem is what happens to the economics when thousands of employees use something that charges per unit of thought.
Anthropic claude mythos 1 perparation for calude code and security

Anthropic Says Mythos Isn’t Public Yet. ‘Mythos 1’ Keeps Appearing Anyway.

0
On Friday, Anthropic said Claude Mythos would remain restricted. The company was clear about it: stronger safeguards were needed before any general release, and for now the model would stay limited to roughly 40 selected organizations through Project Glasswing. The next day, users started seeing "Mythos 1" inside Claude Code. The model appeared in the UI briefly, with a preview label reading "claude-mythos-1-preview," then disappeared again. TestingCatalog found new strings in the source code: "Access to the Claude Mythos model in Claude Code and Claude Security." Screenshots circulated on X. Then the traces were gone.

Don’t miss any Tech Story

Subscribe To Firethering NewsLetter

You Can Unsubscribe Anytime! Read more in our privacy policy