Mantis Skills:用于构建安全审查工具集的可移植工具包(GitHub 仓库)
摘要
Mantis Skills 是 Google 推出的可移植工具包,用于通过 Coding Agents 构建安全审查工具集,可在多种代码库中实现自动化漏洞检测、复现和修复。
查看缓存全文
缓存时间: 2026/07/14 22:55
google/mantis 源代码:https://github.com/google/mantis # Mantis Skills:用于构建安全审查工具套件的便携式技能包
[!CAUTION] 请自行承担使用风险。务必极度小心。 本套件旨在 生成并执行自主生成的代码,这些代码可能不稳定或执行意外操作。 请仅在隔离、受限的环境中使用此套件。 切勿在能够访问生产系统、 敏感数据或内部网络的计算机上运行此套件。请参见“无人值守云部署“部分以了解强制性的加固要求。
[!IMPORTANT] 负责任的使用 AI 模型是非确定性的,可能产生幻觉发现或生成不正确的补丁。 在报告之前,所有发现必须经过安全专家的手动验证。 请勿将未经验证的 AI 生成报告批量提交给开源维护者。 无法自动重现漏洞并不一定意味着它是误报,成功的重现器也不能保证该漏洞在所有上下文中都可利用。请负责任地使用这些技能。
Mantis Skills 是一套解耦、顺序执行且专注于安全的技能包,专为与编码代理配合使用而设计。它旨在成为一个灵活的基础和起点,而非一套僵化的指令。您应根据组织特定的软件或硬件栈来调整、优化和扩展这些技能。例如,虽然默认技能会寻找通用安全问题、业务逻辑问题和授权漏洞,但它们也可以适用于:
- 硬件 / RTL 审查:审计寄存器传输级(RTL)设计(SystemVerilog、VHDL)的安全属性或逻辑错误。
- 基础设施即代码(IaC):分析云部署边界、Terraform 状态或 Kubernetes RBAC 配置中的权限提升路径。
- 数据与 ML 流水线:审计训练数据入口、模型序列化格式(例如 Pickle 漏洞)或数据科学笔记本与生产环境之间的边界约束。
- 编译后的二进制文件和固件(灰盒审计):将套件指向编译后的发布工件(使用
unblob、Ghidra、radare2、qemu或unicorn等工具),无需提供源代码。此模式的目的是模拟第三方安全研究人员,使您能够准确了解仅能访问发布二进制文件的对手可以发现哪些漏洞。 - 自定义测试环境:将默认的容器重现阶段替换为隔离的虚拟机、物理硬件测试台(通过 USB/串口)或自定义模拟器。
我们强烈建议使用 AI 迭代这些技能,并使用您的内部文档、编码标准和构建系统来增强威胁模型。我们还强烈建议根据您的环境和风险承受能力调整风险校准。有关保护 AI 系统的更多信息,请参阅 Google 的 Secure AI Framework (SAIF) (https://safety.google/safety/saif/)。
此套件使任何拥有代理编码工具的人都能够系统地审查、去重、验证、批评、重现和修补任何规模的代码库。它还具备持续学习循环功能,使套件能够在迭代运行中适应并避免冗余分析。最重要的是,尽管编排漏洞发现非常强大且有用,但在适当隔离的环境中使用它以防止影响生产系统更为重要。请参阅本指南后面的无人值守云部署注意事项。
架构与顺序流程
该流水线由十五个不同的组件(一个监督器和十四个执行阶段)组成,通过一个发现文件目录(workspace/findings/*.json)维护状态。整个过程的自主监督由顶层 /mantis_meta_agent 完成。
``mermaid graph TD Meta[“/mantis_meta_agent (Supervisor)”] subgraph “Continuous Review Loop” Hist[“/mantis_history (Optional)”] Sum[“/mantis_summarize (Optional)”] Arch[“/mantis_architecture”] TM[“/mantis_threat_model”] Plan[“/mantis_plan”] Res[“/mantis_researcher”] Ded[“/mantis_dedupe”] Rev[“/mantis_review”] Cri[“/mantis_critic”] Rep[“/mantis_reproduce”] Cha[“/mantis_chain”] Pat[“/mantis_patch”] Cal[“/mantis_calibrate”] Ref[“/mantis_reflect”] end FileHist[(“historical_learnings.jsonl”)] FileSum[(“mantis_summary.md”)] FileKB[/“workspace/kb/ (Markdown KB)”/] FilePlan[(“plan.json”)] FileFind[(“workspace/findings/*.json”)] FileLearn[(“learnings.jsonl”)]
Meta --> Hist
Hist --> Sum
Sum --> Arch
Arch --> TM
TM --> Plan
Plan --> Res
Res --> Ded
Ded --> Rev
Rev --> Cri
Cri --> Rep
Rep --> Cha
Cha --> Pat
Pat -.->|Re-attack Bypass Loop| Rep
Pat --> Cal
Cal --> Ref
Ref -.->|Next Loop Iteration| Arch
Hist -.->|Generates| FileHist
Hist -.->|Reads| FileSum
Sum -.->|Reads| FileHist
Sum -.->|Generates| FileSum
Arch -.->|Reads| FileHist
Arch -.->|Generates| FileKB
Arch -.->|Reads/Clears| FileLearn
TM -.->|Reads/Updates| FileKB
Plan -.->|Reads| FileKB
Plan -.->|Reads| FileSum
Plan -.->|Generates| FilePlan
Res -.->|Reads| FilePlan
Res -.->|Reads| FileKB
Res -.->|Creates| FileFind
Ded -.->|Reads| FileLearn
Ded -.->|Merges| FileFind
Rev -.->|Updates| FileFind
Cri -.->|Updates| FileFind
Rep -.->|Updates| FileFind
Cha -.->|Reads| FileKB
Cha -.->|Creates| FileFind
Pat -.->|Updates| FileFind
Cal -.->|Updates| FileFind
Ref -.->|Parses Trajectories & Appends| FileLearn
Cri -.->|Appends| FileLearn
Pat -.->|Appends| FileLearn
``
/mantis_meta_agent(监督器):一个持久化的顶层代理,负责启动持续循环、监控执行、处理错误、报告发现以及在循环之间归档workspace/findings/目录。/mantis_history(历史提取器):一个可选的预处理步骤,用于分析仓库的版本控制系统(VCS)历史,以提取过去的漏洞、安全修复和漏洞模式,并将发现保存到historical_learnings.jsonl。/mantis_summarize(摘要生成器):一个可选的预处理步骤,用于为每个目录生成mantis_summary.md,并从historical_learnings.jsonl读取过去的漏洞以丰富摘要,提供快速参考地图,以优化下游规划和研究。/mantis_architecture(知识库架构师):分析代码库并清空learnings.jsonl收件箱,以综合出一个持久化、相互关联的 Markdown 知识库(workspace/kb/),详细说明实体、数据流和历史漏洞类别。/mantis_threat_model(威胁建模器):评估知识库中定义的实体和架构,以建立或完善一份活的workspace/kb/THREAT_MODEL.md,重点关注信任边界和攻击者画像。/mantis_plan(策略师):扫描工作空间边界并读取知识库索引,将有针对性的审查策略输出到plan.json中,并注入特定的kb_references文件路径作为上下文。/mantis_researcher(研究员):执行逐文件的分类和深度安全缺陷审查,将热点问题作为独立的 JSON 文件输出到workspace/findings/。/mantis_dedupe(去重器):对基于索引的重复发现进行分组,合并记录并删除workspace/findings/中的冗余。/mantis_review(验证器):使用严格的实用性约束过滤误报,更新workspace/findings/.json中的状态。/mantis_critic(批评家):验证发布构建崩溃的可重现性(忽略调试/断言检查),更新workspace/findings/.json中的生产可行性,并将误报/不可行路径附加到learnings.jsonl。/mantis_reproduce(概念验证开发者):编写概念验证重现脚本(Repros)或原始 payload,在隔离环境(如 gVisor 或虚拟机)中执行,并更新workspace/findings/.json中的重现状态。/mantis_chain(漏洞链构建器):分析单个经过验证的发现和知识库原语,以识别并构建复杂的多步骤利用链,在workspace/findings/中创建新的“超级发现“。/mantis_patch(补丁生成器):生成并应用代码修复,在沙箱内运行补丁后验证测试,更新workspace/findings/.json中的补丁状态,并将日志附加到learnings.jsonl。/mantis_calibrate(风险校准器):根据影响、证据和可行性,为工作空间目录中的每个发现计算最终的数值 Mantis 风险评分(1-10),并将结果直接附加到每个workspace/findings/.json文件中。/mantis_reflect(反思器):解析当前轮次代理的执行轨迹,提取错误的假设、工具故障和成功之处,并将这些结构化的见解附加到learnings.jsonl收件箱中。
前提条件与设置
在执行任何技能之前,请确保您的本地 CLI 环境已完全配置:
-
已安装 Gemini CLI 或 Antigravity CLI。(其他 CLI 也应该可以。)
-
已安装并运行 Docker(本地“沙箱化“执行所需)。
-
已安装 gVisor (runsc) 并在 Docker 中注册(推荐):为了在执行不可信的 AI 生成的崩溃重现代码时增强安全性,请在您的 Docker 守护进程配置(
/etc/docker/daemon.json)中注册runsc运行时:json { "runtimes": { "runsc": { "path": "runsc" } } }重启 Docker 以应用:
sudo systemctl restart docker。 -
相关的云 SDK:如果在远程云沙箱(而非本地容器)中运行。
安装技能
您可以将这些技能全局安装(适用于所有项目)或本地安装到特定工作空间。您也可以向您的编码代理寻求帮助。
初学者指南与最佳实践
如果您是自动化 AI 辅助防御性安全审查的新手,请牢记以下建议:
1. “交互模式”(人在回路中)
- 是什么: 对于尚未准备部署完全无人值守、长时间运行流水线的用户或组织,您应该以“交互模式“运行流水线。
- 如何使用: 正常启动您的 CLI(例如,在终端中输入
agy或gemini)。然后,在交互式聊天 UI 的内部,逐个输入斜杠命令(例如/mantis_plan)。启动 CLI 时不要使用--yolo或--dangerously-skip-permissions标志。 - 为何重要: CLI 会在执行任何敏感命令之前暂停并提示您进行人工批准(尤其是当
/mantis_reproduce或/mantis_patch代理尝试运行 Docker 沙箱执行或写入文件时)。这使您可以检查 AI 打算运行的内容。要无需人工批准即可运行,您需要更强的边界来限制代理。
2. 加固安全与“不在主机运行“规则
- 为何重要: AI 模型有时会生成可能破坏主机的代码 payload。如果不先阅读脚本,请仅在沙箱内运行它们。
- Mantis 保护:
/mantis_reproduce和/mantis_patch技能被明确指示在隔离的容器环境中执行 payload,并禁用网络(例如--network none)。 - 免责声明: 虽然这些指令旨在保持隔离,但 AI 代理是非确定性的。如果本地环境允许,它们有时可能会尝试不安全的操作或绕过预期的约束。这些指令并不能绝对保证安全。始终优先在专用的隔离 VM(请参阅下面的 GCE 部分)中运行此套件,以提供一个 AI 无法逃脱的合理安全边界。
3. 模型选择与分层效率
为了最大化自动化流水线的速度和效率,您应该策略性地将正确的 AI 模型类别与特定任务配对。您不需要在每个阶段都使用最重、最先进的前沿模型:
- 第 1 层(分类与去重): 对于快速分类扫描(例如
/mantis_researcher的第 1 波)或聚类相似文本模式(/mantis_dedupe),选择快速的“flash“或“lite“级模型。这些任务不需要巨大的逻辑深度,只需要快速的文本解析,使您能够以零瓶颈并行化大规模文件扫描。避免使用那些功率过低以至于难以理解基本指令的模型,但也不要通过在此处过度分配智能而拖慢您的流水线。考虑允许规划器为给定的研究任务指定难度级别,以便将更简单的问题定向到更快的模型,同时允许一些更复杂的漏洞发现任务受益于最先进的前沿模型。 - 第 2 层(深度推理): 将您最强大、推理能力最强的旗舰模型保留给需要深度上下文和零样本问题解决的高度复杂阶段:
/mantis_reproduce(编写功能性崩溃重现器)和/mantis_patch(编写无副作用的代码库修复)。 - 提示: 对于非常大的仓库,配置您的计划
/mantis_plan以专注于特定的高风险子文件夹(例如src/crypto/或api/),以保持扫描聚焦且高效。尝试在流水线的不同部分使用不同级别的模型,以查看哪些有效,哪些无效。
4. 理解误报(“负过滤“规则)
- 预期什么: AI 扫描器可能过于热情。为了解决这个问题,
/mantis_review阶段运行一个严格的验证器,应用 12 条负向规则。(这 12 条规则绝不是一成不变的,但必须根据您的用例进行调整、重构,甚至拆分为一个单独的阶段。) - 低风险/加固风险并非误报: 有效的风险校准作为漏洞分类的第一步至关重要。在调整流水线时请注意,确保误报与当前低于风险承受能力阈值的东西之间的区别不会对您检测漏洞的能力产生负面影响。
- 实用主义: 基于 AI 的漏洞扫描(类似于旧的 SAST)可能会导致大量令人沮丧的误报。与旧的 SAST 不同,有一些方法可以在不创建高度复杂规则的情况下进行调整。尝试不同的方法,看看哪些有效,哪些无效,然后进行调整。
- 不要一下子打开所有水龙头: 如实用主义建议所述,运行一个小型扫描,分类几个项目,并将其反馈到构建您的扫描流水线中,这样效率要高得多。一次性扫描所有内容并报告所有潜在漏洞可能有效,但根据我们的经验,不太可能是采用这项新技术的最成功方式。
运行流水线(手动模式)
您可以从 活动 CLI 终端内部 顺序执行审查阶段。
-
从您的终端启动 CLI。
-
在交互式 UI 提示符中,按顺序输入技能:
``text
0. (可选)分析仓库的版本控制系统(VCS)历史并提取过去的漏洞
/mantis_history
1. (可选)生成 mantis_summary.md 目录地图
/mantis_summarize
2. 将代码库结构和历史学习综合到 Markdown 知识库中
/mantis_architecture
3. 基于知识库迭代开发项目的实时威胁模型
/mantis_threat_model
4. 映射目标外部边界并构建扫描路线图,注入知识库引用
/mantis_plan
5. 使用注入的上下文运行多线程/顺序安全缺陷扫描
/mantis_researcher
6. 合并重叠的文件 a
相似文章
@dani_avila7: NVIDIA 恰好构建了我保护 agent 技能所需的东西 https://github.com/nvidia/skillspector… 将其添加为 GitHub…
NVIDIA 发布了 SkillSpector,这是一个用于 AI agent 技能的开源安全扫描器,可在安装前检测提示注入和数据泄露等漏洞。
mukul975/Anthropic-Cybersecurity-Skills
一个开源仓库,包含754个为AI智能体设计的结构化网络安全技能,覆盖26个安全领域,并映射到多个行业框架,使智能体能够执行专家级别的安全分析。
@_mattata: Anthropic 发布了一个相当简洁的代码审计工具,用于识别具有潜在安全影响的漏洞。它…
Anthropic 发布了一个开源代码审计参考工具,用于使用 Claude 进行自主漏洞发现和修复,涵盖了 recon→find→triage→report→patch 流程,主要针对 C/C++ 内存漏洞。它是一个模板/参考实现,而非生产就绪产品,同时还提供名为 Claude Security 的托管选项。
SkillHarness:为计算机使用代理驾驭安全技能
SkillHarness 是一个框架,通过整合安全约束和自适应技能选择机制,使计算机使用代理能够在动态环境中安全地学习和执行技能,将不安全率降低了57.1%。
CodeMender 介绍:用于代码安全的 AI 代理
Google DeepMind 推出 CodeMender,一个 AI 代理,可以使用先进的推理和验证技术自动检测和修复代码安全漏洞。该系统在六个月内已向开源项目上游贡献了 72 个安全修复。