Fetching from the wire…
Public story · 2026-09-18 · high
One release fixes an SSRF bypass, a denial-of-service path, and two ways data leaked past a privacy flag.
Why now: The fixes shipped in the 2026-09-18 release, alongside a backport to the 1.107.x line.
pydantic-ai's v2.44.0 release closes four separate advisories, all reachable through the framework's own web_fetch tool.
Anyone running an agent with that tool enabled faced four separate ways a fetched page could turn against the process serving it. One bug let it probe internal infrastructure; another could freeze every other agent running in the same process.
The SSRF bug is the most serious of the four. The blocklist meant to keep agents off cloud metadata endpoints and private IP ranges didn't account for IPv6 zone identifiers. A crafted address could slip past it.
A second advisory is a denial-of-service path. HTML conversion and charset decoding ran with superlinear time complexity directly on the event loop, so one attacker-chosen page could stall every agent running in that process.
The other two are quieter but still real. Domain allowlist comparisons checked strings as written instead of how a resolver actually normalizes them, a bypass class of its own. And spans could carry fetched instructions and error content even when include_content=False was set, so a privacy flag wasn't fully honored in tracing output.
The release notes don't say how long the IPv6 bypass existed before anyone caught it. Update to 2.44.0, or 1.107.6 for the older line, if web_fetch is enabled anywhere in your agent stack.
Each link below shares sources, entities, or timing with this story.
CVE-2026-59973: the fix for CVE-2026-39885 added a hostname denylist for OpenAPI external $ref dereferencing, but mcp-from-openapi 2.3.0 still reaches loopback via hostname resolution, redirects, or IPv4-mapped IPv6 syntax. FrontMCP 1.2.1 and current main both pin that depende...
On August 25 the advisory database published 20 advisories against PraisonAI and praisonaiagents: 1 critical, 15 high, 4 medium. The recurring pattern is authentication that's declared but never enforced. praisonai serve agents --api-key is silently ignored. AgentServer declar...
GHSA-85gg-2gfq-q95m, patched in v0.0.589 at 00:20 UTC today. AstGrepService checked containment lexically on the unresolved path, with no Path.is_symlink() or .resolve() call, so a planted symlink let structural_search read arbitrary files and structural_replace with dry_run=F...
CVE-2026-61560 chains two defects in @zereight/mcp-gitlab. In SSE transport mode, the mode the project's own docker-compose.yaml uses, /sse and /messages carry no authentication middleware, exposing all ~100 tools. The upload_markdown tool then reads arbitrary local files thro...
GHSA-8cp3-qxj6-px34 covers utcp-http <= 1.1.3, where OpenApiConverter._extract_auth() reads the OAuth2 tokenUrl straight out of a remote spec and never validates it. The ensure_secure_url() guard the library applies to discovery URLs and tool invocation URLs is simply absent o...
CVE-2026-45018 covers Chainlit >=2.4.0rc0 <2.12.0. With features.mcp.enabled = true, POST /mcp accepts a user-controlled fullCommand for stdio transport. validate_mcp_command() checks the executable name against an allowlist and never inspects arguments, so npx -y -c '<command...
MindPattern daily
One email a day at 7 AM. Sources and a take on every story. Unsubscribe anytime.