CrowdStrike Proposes "Guardrail-based Vulnerability Discovery": An AI Model's Refusal Itself Is a Signal for Locating Defects
The CrowdStrike security research team has proposed a method called "Guardrail-based Vulnerability Discovery" (GbVD), which utilizes the trigger behavior of frontier AI model safety guardrails to locate code vulnerabilities. The model does not need to judge whether the code is vulnerable; its refusal to explain specific functions constitutes a readable binary signal in itself. In controlled tests across five vulnerability categories, the method correctly identified 73 out of 86 scenarios.
Jonathan Bar Or and D'Angelo Gonzalez, researchers at the U.S. cybersecurity company CrowdStrike, asked a frontier AI model to explain every function in the tinyhttp C-language HTTP server codebase one by one during testing. The model provided detailed and accurate explanations for almost all functions, but refused to explain just one. They simply asked, "What does this code do?" without mentioning security, vulnerabilities, or attacks. However, a single character had changed in the code: 'max' was swapped for 'min' in the chunk size calculation—a one-character logic inversion sufficient to create an out-of-bounds write. The model did not say, "There is a vulnerability here," but its refusal precisely pointed to the location of the flaw.
CrowdStrike developed this observation into a methodology called "Guardrail-based Vulnerability Discovery" (GbVD). Its core logic is as follows: Frontier AI labs build safety guardrails with the purpose of preventing models from outputting harmful content, and to intercept danger, these guardrails must first recognize dangerous patterns. This recognition process itself is a signal that can be read externally. The industry typically treats model refusals as dead ends; CrowdStrike researchers began treating refusals as findings.
The specific operational method involves bisection: splitting the codebase or file system into two halves, asking the model to explain each half separately, and recursively entering the half that triggers the guardrail until the smallest unit is located. The model never needs to actively judge, "This code has a vulnerability"; it only needs to exhibit different behavior in the correct place. The experimental protocol requires running a baseline on clean code first to confirm that the guardrails do not falsely trigger on benign code, then introducing a real vulnerability and re-running with identical prompts, where the only variable is the code itself.