Result object.
A result attaches structured information to the finding, including a name, description, severity, and optionally evidence with annotated decompiled code. This improves explainability and enables faster triage.
Creating a finding
The simplest way to return a finding is to call one of theresult methods with a table containing a name and a description:
result:high).
The name field typically contains a vulnerability identifier (e.g., a CVE ID), and description provides a short summary of the finding.
Severity levels
VulHunt provides a method for each severity level:| Method | Description |
|---|---|
result:none | Creates a vulnerability finding with no severity |
result:info | Creates a vulnerability finding with no severity (alias for result:none) |
result:unspecified | Creates a vulnerability finding with unspecified severity |
result:low | Creates a vulnerability finding with low severity |
result:medium | Creates a vulnerability finding with medium severity |
result:high | Creates a vulnerability finding with high severity |
result:critical | Creates a vulnerability finding with critical severity |
result:patch | Creates a finding indicating that a patch has been identified |
result:malware | Creates a finding indicating that malware has been identified |
Adding evidence
To help analysts understand where and why a vulnerability exists, you can attach evidence to the result. Evidence points to specific locations in the decompiled code and annotates them with explanatory messages. Theevidence field contains a functions table that maps function addresses to arrays of annotations.
The most common annotation is annotate:at, which marks a single address with a message:
context.caller.address selects the function to decompile and display, while annotate:at places the annotation at the call site address (context.caller.call_address).
Multiple annotations
You can attach multiple annotations to a single function to trace the flow of a vulnerability across different locations:annotate:at, VulHunt supports several other annotation types to provide richer context, such as annotate:prototype for function signatures, annotate:range for code ranges, and annotate:variable for variable declarations.
A complete list is available in the Annotations Reference.
Reporting patches
When a rule detects that a vulnerability has been patched, useresult:patch instead of a severity method:
Reporting malware
Similarly, useresult:malware to report malware indicators:
Additional fields
When running on the Binarly Transparency Platform (BTP), results can include additional metadata such as CVSS scores, CWE and MBC classifications, provenance information, advisories, and more. See the Result Reference for the full list of available fields.Fields marked as “BTP Only” in the reference are only relevant when executing rules on the Binarly Transparency Platform. They are ignored when running rules with the VulHunt CLI.