KyleBucksot/basilisk

GitHub: KyleBucksot/basilisk

一款针对大语言模型的自动化 prompt 注入安全测试工具,支持对抗性 payload 注入、启发式评分、变异绕过检测以及 CI/CD 流水线集成。

Stars: 0 | Forks: 0

# basilisk [![ci](https://static.pigsec.cn/wp-content/uploads/repos/cas/99/993938d8ce5e902ccfb9d6747725c320d855dea3235ed9a304cedf0d94c9321f.svg)](https://github.com/KyleBucksot/basilisk/actions/workflows/ci.yml) [![python](https://img.shields.io/badge/python-3.11%2B-blue)](https://www.python.org/) [![license](https://img.shields.io/badge/license-MIT-green)](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, 大语言模型, 安全规则引擎, 提示注入, 无后门, 逆向工具, 集群管理