An error is not proof: verifying an exploitable SQL injection
Your scanner flags “possible SQL injection,” you paste a single quote, the database throws an error — and out goes the finding. But a reflected error, a boolean blip, or a five-second delay each has an innocent explanation, and none of them alone proves an attacker can read a row they shouldn’t. A practitioner’s guide to telling a real, exploitable SQL injection from noise: the differential proof for error-based, UNION, boolean-blind, time-blind and out-of-band cases, scoped to a benign value you chose rather than real data; the unauthenticated Metabase flaw (CVE-2026-72898, CVSS 10.0) CISA added to its Known Exploited catalog after it was exploited as a zero-day to take over admin; the traps (second-order injection, a WAF block mistaken for a fix, “the ORM protects us”); and the parameterized-query fix that actually closes it.
Read article →