Fetching from the wire…
Public story · 2026-09-11 · high
Bandit and Semgrep missed weak random number generation and password hashing that researchers then exploited for real in Docker.
Why now: The paper posted its findings as of September 11, 2026.
Researchers ran 1,355 Python code samples through Bandit and Semgrep, then layered on LLM-based reasoning about CWE categories. Then they tried to exploit what was left, inside Docker containers, according to a paper posted to arXiv.
Of the 654 samples that came back clean from both scanners, 95 still had a working exploit. That's 14.53%, or roughly one in seven, for anyone treating a green SAST check as a merge gate.
Weak random number generation (CWE-338) and weak password hashing (CWE-916) showed up repeatedly among the confirmed exploits. Neither Bandit nor Semgrep flagged either category. Both are bugs that look fine at the syntax level: the code calls a hashing function, it just calls the wrong one, or calls random where it needed secrets.
Static scanners pattern-match against known-bad function calls and syntax shapes. They don't reason about whether a specific RNG or hash choice is sound for the context it's used in. An LLM given the same code and asked to reason about CWE categories caught more of it. The researchers then proved the gap wasn't theoretical by exploiting the samples directly.
The paper doesn't say whether adding an LLM reasoning pass before merge would have caught all 95 exploits or just some of them. What it does establish is where the blind spot sits: crypto and randomness choices, not the syntax patterns Bandit and Semgrep were built to catch.
Each link below shares sources, entities, or timing with this story.
After 20+ years maintaining Paint.NET, Rick Brewster concluded WINE's Direct2D would never be complete enough for what he needed, so the app now carries its own from-scratch reverse-engineered Direct2D implementation. He puts it at 180,000 lines against 700,000 for the rest of...
Two thirds. Not two thirds of a contrived jailbreak set. Two thirds of realistic malicious issue requests, against the exact three tools most of the people reading this run daily. Ankur Singh, Jinqiu Yang, and Tse-Hsun Chen built IssueTrojanBench across four attack categories...
CCP announced the migration covering code that has run on Stackless 2.7 since 2010. The approach is to run futurize across the codebase and then manually review roughly 20,000 places where Python 2 and 3 behavior diverges, including integer division (Simon Willison). No comple...
The first major version bump of his widely-used Python/CLI SQLite toolkit lands built-in schema migrations and savepoint-based nested transactions on June 21. If you lean on sqlite-utils as glue in data or LLM pipelines, migrations kill the hand-rolled ALTER scripts you've bee...
Three separate Anthropic changes over about two weeks point the same direction, and none of them announced themselves as a strategy. Claude Code 2.1.238 added claude self-hosted-runner --defer-shutdown-max-min, which keeps serving attached sessions on SIGTERM, parks whatever's...
| Project | Stars | What It Does | Why It Matters | |---------|-------|-------------|----------------| | Worktrunk | 2.7K | Rust CLI for Git worktrees with AI agents | Auto-squash/rebase/merge, LLM commit messages, build cache sharing. From PRQL creator. | | Timber | 545 | Com...
MindPattern daily
One email a day at 7 AM. Sources and a take on every story. Unsubscribe anytime.