Fetching from the wire…
Top 5 · 2026-05-08 · source-backed
A large-scale study on arXiv found that 36-56% of LLM coding tasks contain at least one known CVE in specified dependencies. Not in the generated code itself. In the packages the model tells you to install.
The numbers get worse. 62-75% of those CVEs are rated Critical or High severity. In 72-91% of cases, the vulnerability was publicly disclosed before the model's training cutoff. The models knew, or should have known, these versions were compromised. They recommended them anyway.
The killer finding: all models converge on the same small set of risky dependency versions. This isn't random error. It's systemic bias baked into training data. The models learned which versions appear most frequently in tutorials, Stack Overflow answers, and README files, and those happen to be the versions people were using when the vulnerabilities existed.
This hits the vibe coding community's biggest blind spot. The workflow is: describe what you want, get working code, ship it. The code passes tests. The app runs. Everything looks fine. But under the hood, you've installed a dependency version with a known critical vulnerability because the LLM suggested it and you didn't question it.
I've caught this in my own projects. Claude suggested a specific version of a package that had a known SSRF vulnerability patched two minor versions later. The code worked perfectly. The vulnerability was silent until I checked.
What to do about it: treat every AI-suggested dependency version as untrusted input. Run pip audit or npm audit after every AI-generated requirements change. Pin to latest patched versions, not the versions the model suggests. If you're using Dependabot or Renovate, make sure they run against AI-generated lockfiles too. The code quality revolution doesn't matter if the foundation is compromised.
Each link below shares sources, entities, or timing with this story.
Claude uses MCP / Shared entities / What happened next
Linked by a graph relationship (Claude uses MCP); both cover CLAUDE, CVE, LLM, README; picks up the CLAUDE thread on 2026-07-15.
Claude uses MCP / Shared entities / Same source domain / Earlier coverage / Tension
Linked by a graph relationship (Claude uses MCP); both cover CLAUDE, LLM, SSRF; reported by the same outlet (arxiv.org).
Simon Willison uses Claude / Shared entities / Same source domain / Shared topic / What happened next / Tension
Linked by a graph relationship (Simon Willison uses Claude); both cover CVE, SSRF; reported by the same outlet (arxiv.org).
Claude benchmarked against Codex / Shared entities / Same source domain / What happened next
Linked by a graph relationship (Claude benchmarked against Codex); both cover CLAUDE, CVE, LLM; reported by the same outlet (arxiv.org).
Cursor supports Claude / Shared entity: LLM / Same source domain / Shared topic / What happened next
Linked by a graph relationship (Cursor supports Claude); both cover LLM; reported by the same outlet (arxiv.org).
Anthropic released Claude / Shared entities / Shared topic / What happened next / Tension
Linked by a graph relationship (Anthropic released Claude); both cover Claude, CVE; overlapping topics (against, code, model).
Claude uses MCP / Shared entities / Shared topic / Earlier coverage
Linked by a graph relationship (Claude uses MCP); both cover Claude, Critical, LLM; overlapping topics (code, critical).
Claude benchmarked against Codex / Shared entities / Same source domain / Shared topic / Earlier coverage / Tension
Linked by a graph relationship (Claude benchmarked against Codex); both cover CLAUDE, README; reported by the same outlet (arxiv.org).