Knowdit

Knowdit (Knowledge + Audit) is an LLM-based auditing framework that rigorously reveals high severity vulnerabilities. On our evaluation, Knowdit is the only tool exploiting all vulnerabilities leading to severe asset loss.
This repo serves as the artifact of our paper. Please report any issue you find in using Knowdit.
Install
or
git clone https://github.com/abortfuzz/knowdit
cd knowdit
cargo build --release
or we also have releases available.
Instructions
Overall
In general, Knowdit summarizes Semantic-Vulnerability Links from historical audit projects and saves them to a Historical Database. Therefore, for Knowdit to scan any project, you have to "train" such a database firstly.
For given projects under auditing, Knowdit repeatedly fetches such links from the Historical Database, which you could imagine such links as checklists, and tries to concretize the links on the new projects to test if the links suggest vulnerabilities. Then, it spins up foundry to verify the vulnerability really exists and uses a LLM based reflector to verdict if the exploit is false positive or not.
Configure an LLM
In most cases, Knowdit needs a LLM to work. In general, all of our evaluation and testing is based on OpenAI models, like gpt-5.1, gpt-5-mini, gpt-5.4-mini and gpt-5.5. We do not offer any guarantee for performance for other models, while our underlying library llmy indeed supports a wide range of providers.
The most straightforward way to configure a LLM endpoint:
OPENAI_API_URL=...
OPENAI_API_MODEL=gpt-5.4
Optionally, you can setup a billing cap for your tasks:
OPENAI_BILLING_CAP=50
This ensures that Knowdit only uses no more than 50 USD worth of tokens.
llmy also supports saving all raw conversations by:
LLM_DEBUG=debug-conversation.sqlite3
Read llmy for how to dump the conversations from the database.
Configure forge
For various reasons, knowdit currently relies on a customized forge. Though the canonical forge might work, we do not offer any guarantee.
On Linux, if docker exists, knowdit will automatically pull a docker image for fuzzing while in other cases, please download a copy of forge here.
Train a Historical Database
The knowdit cli contains several helpers to train a Historical Database. Please note Knowdit does not require the projects to build for the training purpose.
For code4rena projects, learn it by:
For other general projects, learn it by:
Please note the Historcal Database could be saved in any relational database like mysql and sqlite3, as long as it is supported by sea-orm.
Let us know if you would like more project layout to be supported.
Audit a New Project
Once the Historical Database is prepared, you could scan a project by using our predefined workflow:
DATABASE_URL=...
For advanced usages, we provide standalone commands for each stage of Knowdit:
> ./target/release/knowdit
)
)
)
Contact
Interested in any research collaboration? Would like to beat Knowdit in your paper? Let me know.
Cite