由 AISLE 提供的极简 LLM 驱动的零日漏洞扫描器。

仅为演示目的的研究原型。 这是一个简单的单文件工具,能够检测真实的零日漏洞。请注意,这是一个原型,偏向于 C/C++ 内存安全漏洞,并且会产生误报。我们本着开放研究的精神原样分享它——请留意其中可能存在的尖锐问题。
Nano-analyzer 是一个简单的单文件 Python 扫描器,它将源代码通过一个三阶段 LLM 流水线处理:
结果以 Markdown 和 JSON 文件保存,供人工审查。
这是一个 v0.1 原型。请注意以下几点:
rg) 用于分类时的 grep 查找csearch/cindex) 用于大型仓库的快速 grepgit clone https://github.com/weareaisle/nano-analyzer.git
cd nano-analyzer
# No dependency installation needed. Run directly:
python3 scan.py --help
将您的 API 密钥设置为环境变量:
# For OpenAI models (model names without a slash, e.g. "gpt-5.4-nano"):
export OPENAI_API_KEY=sk-...
# For OpenRouter models (model names with a slash, e.g. "qwen/qwen3-32b"):
export OPENROUTER_API_KEY=sk-or-...
扫描器根据模型名称决定使用哪个密钥:如果名称包含 /,则通过 OpenRouter 路由;否则直接使用 OpenAI API。
# Scan a single file
python3 scan.py ./path/to/file.c
# Scan a directory recursively
python3 scan.py ./path/to/src/
# Use a different model
python3 scan.py ./src --model gpt-5.4
# Control parallelism
python3 scan.py ./src --parallel 30
# Point triage grep at the full repo root (useful when scanning a subdirectory)
python3 scan.py ./lib/crypto/ --repo-dir ./
# Only surface high-confidence findings
python3 scan.py ./src --min-confidence 0.7
# More triage rounds for higher accuracy (default: 5)
python3 scan.py ./src --triage-rounds 7
结果保存到 ~/nano-analyzer-results/<timestamp>/(或 --output-dir):
<timestamp>/
├── summary.json # 机器可读的扫描摘要
├── summary.md # 人类可读的扫描摘要
├── <filename>.md # 每个文件的原始扫描输出
├── <filename>.context.md # 每个文件的上下文简报
├── <filename>.json # 每个文件的完整结果数据
├── triages/ # 详细的分类推理过程
│ └── T0001_<file>_<title>.md
├── findings/ # 通过分类的发现
│ └── VULN-001_<file>.md
├── triage.json # 所有分类判定结果
└── triage_survivors.md # 已验证发现的摘要
当扫描发现中或以上严重性的问题时,分类流程启动:
通过分类的发现会写入 findings/ 目录,并附带完整的推理链。
此工具为研究原型。它不能替代专业安全审计、人工代码审查或成熟的静态分析工具。请勿将其作为唯一的安全评估手段。使用风险自负。
Apache 许可证 2.0
| 标志 | 默认值 | 描述 |
|---|
path | (必填) | 要扫描的文件或目录 |
--model | gpt-5.4-nano | 所有阶段(上下文、扫描、分类)使用的模型 |
--parallel | 50 | 最大并发扫描 API 调用数 |
--triage-threshold | medium | 对此严重级别或以上的发现进行分类 |
--triage-rounds | 5 | 每个发现的分类轮数 |
--triage-parallel | 50 | 最大并发分类 API 调用数 |
--max-connections | parallel + triage-parallel | API 调用总数上限 |
--min-confidence | 0.0 | 仅显示置信度高于此值的发现(0.0–1.0) |
--project | 目录名 | 分类提示中使用的项目名称 |
--repo-dir | 自动 | 用于 grep 查找的仓库根目录(自动:文件为父目录,文件夹为扫描目录) |
--output-dir | ~/nano-analyzer-results/<timestamp>/ | 结果保存位置 |
--max-chars | 200,000 | 跳过大于此值的文件 |
--verbose-triage | 关闭 | 显示每轮分类进度 |