Three large studies published in the first quarter of this year — from GitHub Security Lab, Snyk Labs and Semgrep Research — converge on the same finding: ML-enhanced static analysis catches a class of malicious-maintainer supply-chain backdoors that traditional pattern- based SAST routinely waves through. The surprise is not that ML helps — everyone expected that — but that the improvements are concentrated in exactly the samples that matter most.
What ML sees that rules miss
Classic SAST fires on taint flows and signature patterns. Backdoors introduced by a trusted maintainer almost never match a known signature by definition: they are hand-crafted, often obfuscated via deliberate naming collisions, and often gated by a build-time flag that only triggers in production. The GitHub team’s approach — embed the code diff, compare against a learned model of “normal behavioural change for this maintainer” — flagged the xz-utils style backdoor at diff time in 92% of a synthetic test set, versus 14% for a leading rule-based scanner.
The false-positive problem
ML approaches are not a free lunch. Semgrep’s paper honestly documents a 3-5% false- positive rate on benign refactors, which matters enormously at scale. The vendors converging on a hybrid approach — rules-first, ML as a reviewer of last resort — seem to be taking the right lesson.
For practitioners
If you run a SAST programme, add one item to your Q3 roadmap: evaluate an ML-assisted second scan on your highest-risk open-source dependencies. Start with build tools and cryptographic primitives. The signal-to-noise ratio improves sharply once you restrict the surface to packages you would notice if compromised.