Published October 27, 2026 | Version 1.0

Proof-Carrying Triage: Refuting AI-Generated Vulnerability Reports with Certificates a Maintainer Can Check

Authors/Creators

Description

Volunteer maintainers of critical open-source software are being buried under plausible but false vulnerability reports produced with large language models. The reports that cause the most harm are not lazy fabrications: they cite real functions, files, and lines, and defeat both repository-grounding checks and text classifiers. We ask what signal still separates these grounded reports from genuine ones, and show the answer is refutation: rather than scoring how a report looks, we try to prove its central claim impossible against the program. We formalize an incoming report as a claim (a decision point, a branch outcome, and a predicate asserted to hold there), compute the path condition to that decision point from GCC GIMPLE in SSA form, and ask a solver whether the claimed predicate can still hold. When it cannot, we return the unsatisfiable core as a certificate: a minimal set of guards in the maintainer's own code that make the report impossible, re-checkable by any SMT solver without trusting our tool. We never compute an input, so the pipeline produces no exploit. We validate with a differential oracle built from real fix commits. On 684 disclosed curl HackerOne reports and 41 compiled releases we report: every method that scales by surface features collapses on grounded reports; precision buys soundness; and that precision cannot be mined from prose, which motivates a claim-carrying report format under which the same checker is sound. We prove a soundness theorem and make every refutation a proof-carrying SMT certificate. We release the defense and the labeled benchmark, but not the means to generate grounded slop.

Files

Proof_Carrying_Triage.pdf

Files (477.9 kB)

Name Size
md5:529e534c97cdc3a91d148254ebad9237
477.9 kB Preview Download

Additional details

Related works

Is supplemented by
Software: https://github.com/stillnotadam/quash (URL)