KyleBucksot/basilisk
GitHub: KyleBucksot/basilisk
一款针对大语言模型的自动化 prompt 注入安全测试工具,支持对抗性 payload 注入、启发式评分、变异绕过检测以及 CI/CD 流水线集成。
Stars: 0 | Forks: 0
# basilisk
[](https://github.com/KyleBucksot/basilisk/actions/workflows/ci.yml)
[](https://www.python.org/)
[](LICENSE)
[最新的内部测试报告](https://kylebucksot.github.io/basilisk/reports/latest/report.html) — basilisk 每周以及每次推送时都会扫描自身,渲染后的报告会发布在这里。
针对 LLM 的自主 prompt 注入测试工具。将其指向任何
兼容 OpenAI 的 endpoint,它就会运行一系列对抗性 payload,
使用复合启发式算法对响应进行评分(可选择由
llm-as-judge 提供支持),并生成 markdown、json、csv、sarif 或
html 格式的报告。
## 安装
```
pip install basilisk
# 或从 source 构建:
pip install git+https://github.com/KyleBucksot/basilisk
```
## 快速开始
```
basilisk scan https://api.openai.com/v1 \
--model gpt-4o-mini \
--api-key $OPENAI_API_KEY \
--output results.json
basilisk report results.json --format markdown --output report.md
```
## 命令
| 命令 | 用途 |
|---------|---------|
| `scan` | 针对目标模型运行 payload |
| `report` | 将结果渲染为 markdown / json / csv / sarif / html |
| `blog` | 根据结果生成适配 Jekyll 的研究文章 |
| `diff` | 比较两次运行以检查回归和修复 |
| `compare` | 按注入成功率对 N 次运行进行排名(排行榜) |
| `bypass` | 显示绕过了拦截原始 payload 的 filter 的变异 |
| `mutate` | 预览 payload 变异(base64、leetspeak 等) |
| `payloads` | 列出或验证 payload 目录 |
运行 `basilisk --help` 查看相关 flag。
## 针对托管模型进行测试
basilisk 可以与任何兼容 OpenAI 的 endpoint 通信。
```
# openrouter
basilisk scan https://openrouter.ai/api/v1 \
--model meta-llama/llama-3.1-70b-instruct \
--api-key $OPENROUTER_API_KEY
# groq
basilisk scan https://api.groq.com/openai/v1 \
--model llama-3.1-8b-instant \
--api-key $GROQ_API_KEY
```
在你的 env 中设置 `BASILISK_API_KEY` 即可跳过 `--api-key`。
## llm-as-judge
regex 启发式算法会遗漏微妙的违规顺从。添加一个低成本的 judge 模型来
对每个响应重新评分 —— 判定结果与启发式算法按 60/40 的比例混合。
```
basilisk scan https://api.openai.com/v1 --model gpt-4o \
--judge-url https://api.groq.com/openai/v1 \
--judge-model llama-3.1-8b-instant \
--judge-api-key $GROQ_API_KEY
```
## CI 集成
```
basilisk scan $URL --model $MODEL --ci --fail-on high --output results.json
```
`--ci` 会打印出简洁的 json 摘要;`--fail-on {low,medium,high}` 会在发现结果
超过阈值时以非零状态退出。`diff --fail-on-regression`
可以根据 baseline 对 PR 进行拦截。
### GitHub Action
即插即用的复合 action —— 在 PR 时执行扫描,将 sarif 上传到 code scanning,
发布幂等的 PR 评论,并在出现新发现时拦截合并:
```
# .github/workflows/basilisk.yml
name: basilisk
on: pull_request
permissions:
contents: read
security-events: write
pull-requests: write
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: KyleBucksot/basilisk@v1
with:
target-url: https://api.openai.com/v1
model: gpt-4o-mini
api-key: ${{ secrets.OPENAI_API_KEY }}
fail-on: high
baseline: .basilisk-baseline.json # optional
```
将已接受的发现快照存入 baseline,这样拦截机制仅会在
*新*的回归发生时触发:
```
basilisk baseline results.json -o .basilisk-baseline.json
```
严重程度升级会绕过抑制机制 —— 如果之前为 medium 的
发现现在变成了 high,即使它已在 baseline 中也会被显示出来。
## 变异与绕过检测
```
basilisk scan $URL --model $MODEL --mutations base64,leetspeak --output r.json
basilisk bypass r.json
```
展示那些在规范格式下被拦截,但在
经过机械混淆后成功的 payload —— 这是基于 token 而非基于意图过滤的强烈信号。
## 本地迭代
用于开发和 CI 时,在本地运行一个小型模型(ollama、llama.cpp、
vllm) —— 反馈快,无 API 费用,且使用相同的代码路径。
## 开发
```
uv sync --dev
uv run pytest
uv run ruff check .
uv run basilisk --help
```
## 许可证
MIT。详见 [LICENSE](LICENSE)。
标签:AI安全, Chat Copilot, DLL 劫持, LNA, Petitpotam, Python, 大语言模型, 安全规则引擎, 提示注入, 无后门, 逆向工具, 集群管理