# 2026 年 AI 模型安全最佳工具

> 客观盘点 2026 年保护 AI 模型和 LLM 应用的开源工具，按用途分组，列出维护方、许可证、局限，以及网络控制所处的位置。

FireAI Security & Research Team (HisnLabs) · Published 2026-09-30
Canonical: https://hisnlabs.com/zh/blog/2026-ai-moxing-anquan-gongju

AI 模型安全不是一门单一学科，而是六项工作，每项都有各自的工具：扫描模型文件、确立来源、探查模型弱点、在运行时加以防护、审查其周边的智能体工具，以及限制宿主应用可以连接的位置。本文由 FireAI 的开发者 HisnLabs 整理，涵盖其代码仓库或文档于 2026 年 9 月 30 日查阅过的开源工具。许可证、维护方和状态均按一手资料的说法列出，且不对工具进行排名，因为这些工作之间并不存在竞争。

## 范围与方法

只有在能够打开其官方仓库或文档、确认其许可证并检查其维护状态（已归档或活跃，以及发布页面所示的最新发布日期）的情况下，工具才会被收录。下文提到的版本均为查阅时的最新版本。本文不包含任何性能测量：资料来源没有提供可比的检测结果，本文也不作此类声称。商业平台不在讨论之列，除非讨论对象是其中的开源组件。

各类别按照模型在项目中流转的顺序排列：下载文件、核查来源、测试模型、在防护下部署、连接工具，以及运行它的应用访问网络。由 OWASP GenAI Security Project 维护的 [OWASP Top 10 for Large Language Model Applications](https://owasp.org/www-project-top-10-for-large-language-model-applications/) 是第三至第五类中应用层风险的通用共享词汇。

## 1. 模型文件扫描

许多模型文件使用 Python 的 pickle 格式序列化，而这种格式在加载时可以执行代码。Hugging Face 的文档指出，加载 pickle“意味着代码可能被执行”，并列出 `GLOBAL`、`STACK_GLOBAL` 和 `REDUCE` 这几个操作码为构成威胁的操作码。[Hugging Face: Pickle scanning](https://huggingface.co/docs/hub/security-pickle) 扫描器在不加载文件的情况下读取其指令，并标记危险的导入。

### ModelScan

[ModelScan](https://github.com/protectai/modelscan) 由 Protect AI 维护，采用 Apache-2.0 许可证。它扫描基于 pickle 的格式（PyTorch、scikit-learn、XGBoost、joblib、cloudpickle）、TensorFlow SavedModel 以及 Keras H5 和 V3 文件，按严重程度对发现进行排序，并以适合 CI 流水线的退出码结束。其页面上的最新版本是 2026 年 2 月 18 日的 v0.8.8，仓库在 2026 年 9 月 28 日仍有活动。可将它用作下载的模型进入构建之前的一道关卡。局限：README 说明其采用基于特征的检测，可能产生误报和漏报，发现结果需要人工复核。

### picklescan

[picklescan](https://github.com/mmaitre314/picklescan) 是一款采用 MIT 许可证的扫描器，由个人账户 mmaitre314 维护。Hugging Face 的文档将 picklescan 列为其为 Hub 开发的工具之一。最新版本是 2026 年 7 月 1 日的 v1.0.5。它可以扫描 pickle 文件、PyTorch 归档和 ZIP 容器，可扫描本地路径、URL 或 Hugging Face 模型。适合在脚本中做快速检查。局限：它按模式匹配危险操作，因此新颖的技术可能漏过，而且它只报告发现，不会将其移除。

### fickling

[fickling](https://github.com/trailofbits/fickling) 出自 Trail of Bits，采用 LGPL-3.0 许可证。它被描述为面向 pickle 的反编译器、静态分析器和字节码重写器。它可以把 pickle 反编译为可读的 Python，通过静态分析检查安全性，并在加载不安全文件之前抛出错误。最新版本是 2026 年 6 月 26 日的 v0.1.12。当需要理解而不只是标记某个发现时，可以使用它。局限：它是针对 pickle 的分析工具，不涵盖 ModelScan 能读取的其他格式；其许可条款也不同于其他扫描器的宽松许可证。

### Hugging Face Hub 扫描与 safetensors

Hub 会用 ClamAV 以及 pickle 导入扫描来检查每个推送的文件，后者会列出每个 pickle 文件中的导入并突出显示可疑项。[Hugging Face: file scanning](https://huggingface.co/docs/hub/security-malware) 它还会在公开仓库上显示第三方扫描器 Protect AI Guardian 的结果。[Hugging Face: Protect AI](https://huggingface.co/docs/hub/security-protectai) 按 Hugging Face 自己的说法，局限在于：pickle 扫描并非万无一失，其列表是尽力维护的，判断什么是安全的仍是用户自己的责任。结构性的替代方案是 [safetensors](https://github.com/huggingface/safetensors)，这是由 Hugging Face 维护的 Apache-2.0 格式，存储张量时不含可执行内容。它消除了权重文件的 pickle 风险，但不能说明权重本身是否可信。

## 2. 模型来源、签名与指纹

扫描回答的是加载某个文件是否危险，来源回答的是谁生成了它以及此后它是否被改动过。这两个问题需要不同的工具。

### Sigstore model-transparency

[model-transparency](https://github.com/sigstore/model-transparency) 是 Sigstore 组织下的 Apache-2.0 项目，用于对机器学习模型进行签名和验证。它可以通过 Sigstore 签名，也可以使用密钥、证书或 PKCS #11 设备签名，并生成一个包含 DSSE 信封和 in-toto 声明的捆绑包。其最新版本是 2025 年 10 月 10 日的 v1.1.1，2026 年 9 月仍有提交。可以用它让使用者验证自己手中的文件正是发布者签名的那些文件。局限：文档说明它支持对文件和文件分片进行哈希，而不支持单个张量；有效的签名证明的是来源和完整性，而不是模型安全。Hugging Face 对签名提交也作了同样的区分：签名提交保证的是“文件的来源”，而不是文件安全。

### AI 与 ML 物料清单

由 OWASP 基金会和 Ecma International TC54 维护的 [CycloneDX](https://github.com/CycloneDX/specification) 将机器学习物料清单（ML-BOM）列为其支持的 BOM 类型之一。其最新版本 1.7 发布于 2025 年 10 月 21 日，其模式文件采用 Apache-2.0 许可证。[SPDX 3.0 AI profile](https://spdx.dev/learn/areas-of-interest/ai/) 可以在一份相互关联的记录中描述模型、数据集和提示词等 AI 组件。两者都可以用来记录一个产品包含哪些模型、数据集和版本，而这正是事件响应首先需要的信息。局限：BOM 记录的是作者的声明，两种格式都不会验证这些声明。

### 指纹与水印研究工具

[Instructional Fingerprinting](https://github.com/cnut1648/Model-Fingerprint) 是一篇学术论文（[arXiv 2401.12255](https://arxiv.org/abs/2401.12255)）的代码，它在语言模型中嵌入指纹，使所有者日后可以测试另一个模型是否由其派生。这是采用 MIT 许可证的研究代码，仓库最后一次更新是在 2024 年 7 月。[MarkLLM](https://github.com/THU-BPM/MarkLLM) 出自 THU-BPM 团队，是一个为 LLM 生成文本添加水印的 Apache-2.0 工具包，作为 EMNLP 2024 演示发表。两者回答的问题不同：前者标记模型，后者标记模型的输出。可以用它们研究归属问题，而不应作为生产环境的控制措施。局限：两者都是研究成果，都不能替代对分发文件进行签名。

> FireAI 是 HisnLabs 开发的 macOS 设备端防火墙，它不扫描模型文件，也不对其签名，而是控制 Mac 上哪个 App 连接到哪里。提供 17 天试用。 [Download FireAI for Mac](https://hisnlabs.com/en/download)

## 3. LLM 红队测试与漏洞扫描

这些工具向模型或应用发送对抗性输入，并记录其响应方式。它们测试的是行为，而不是文件。

### garak

[garak](https://github.com/NVIDIA/garak) 是由 NVIDIA 维护的 Apache-2.0 LLM 漏洞扫描器。其 README 称，它检查“能否让 LLM 以我们不希望的方式失效”，提供针对提示注入、数据泄露、幻觉、有害内容和越狱的探针，每个探针都配有一个检测器。最新版本是 2026 年 9 月 9 日的 v0.17.0。可将它用作对模型端点的广泛基线扫描。局限：它需要目标的 API 访问权限或本地部署，部分探针资源消耗较大，README 还说明其对视觉模型的支持有限，部分探针处于原型阶段。

### PyRIT

[PyRIT](https://github.com/microsoft/PyRIT) 是一个采用 MIT 许可证的框架，被描述为专为安全专业人员和工程师识别生成式 AI 系统风险而构建。它由微软维护，最新版本是 2026 年 9 月 4 日的 v1.1.0。此前位于 Azure 组织下的仓库已于 2026 年 3 月 27 日归档，并指向微软组织下的仓库，因此指向旧地址的链接打开的是只读副本。它适合愿意编写代码的团队开展脚本化、多轮次的红队测试。局限：它是一个框架，而不是一条命令即可运行的扫描器。

### promptfoo

[promptfoo](https://github.com/promptfoo/promptfoo) 是一款采用 MIT 许可证的命令行工具和库，用于评估 LLM 应用以及红队测试和漏洞扫描，支持 CI 集成。最新版本是 2026 年 9 月 18 日的 0.123.1。其 README 写道：“Promptfoo is now part of OpenAI. Promptfoo remains open source and MIT licensed.”（Promptfoo 现已成为 OpenAI 的一部分，仍然开源并采用 MIT 许可证。）可以用它把提示测试和对抗性检查纳入构建流程。局限：结果取决于所配置的提供方和评判模型，大多数提供方需要 API 密钥。所有权的变更是一项治理事实，在为受监管工作选择工具时值得注意。

### Giskard

[Giskard](https://github.com/Giskard-AI/giskard-oss) 是 Giskard-AI 组织推出的 Apache-2.0 Python 库。其第 3 版有两个被描述为稳定的组件：giskard-checks，一个使用场景和 LLM 评判的测试框架；giskard-scan，一个针对智能体漏洞的扫描器。可以用它测试智能体和检索增强系统。局限：第 3 版需要 Python 3.12 或更高版本，而覆盖表格数据和传统机器学习扫描的第 2 版已不再积极维护。

## 4. 运行时护栏与提示注入检测

护栏位于请求路径中，在应用运行时对输入和输出进行分类或约束。

### Llama Guard、Prompt Guard 与 LlamaFirewall

Meta 的 [Purple Llama](https://github.com/meta-llama/PurpleLlama) 项目汇集了面向开放模型的防护措施。Llama Guard 是一系列输入和输出审核模型。Prompt Guard 2 被描述为针对直接提示注入尝试的轻量级分类器，LlamaFirewall 则将其与一个对齐检查扫描器和一个面向智能体的代码扫描器结合起来。根据该项目的许可证表，模型以 Llama Community Licences 分发，而 Code Shield 和评估工具等其他组件采用 MIT 许可证。Hugging Face 上的模型需要申请访问。在可以接受在模型前放置一个小型分类器的场景下可使用它们。局限：分类器能减少看起来像已知模式的尝试，但无法消除这一类攻击。

### NeMo Guardrails

[NeMo Guardrails](https://github.com/NVIDIA-NeMo/Guardrails) 是 NVIDIA 推出的 Apache-2.0 工具包，用于为 LLM 应用添加可编程护栏，使用一种名为 Colang 的建模语言控制对话流程。最新版本是 2026 年 9 月 16 日的 v0.24.1。可以用它约束话题、格式和对话路径。局限：护栏是开发者编写的策略，其覆盖范围只取决于开发者事先预见到了什么。

### Rebuff 与 LLM Guard（均已归档）

[Rebuff](https://github.com/protectai/rebuff) 是一个可自我强化的提示注入检测器，结合了启发式规则、LLM 检查、存储过往攻击的向量库以及金丝雀令牌，已于 2025 年 5 月 16 日归档。其 README 说明它只是一个原型，无法完全防御提示注入。[LLM Guard](https://github.com/protectai/llm-guard) 是同一维护方推出的、采用 MIT 许可证的输入和输出扫描器工具包，已于 2026 年 7 月归档。两者仍可供参考阅读。它们说明了一个实际问题：检测器项目可能失去维护者，因此护栏应当是可替换的。

## 5. 智能体与 MCP 安全扫描器

智能体会添加工具，而工具描述是模型会读取的文本。这一组扫描器检查这些工具及其配置。

### Snyk Agent Scan

[Agent Scan](https://github.com/snyk/agent-scan)（原名 MCP-Scan）是由 Snyk 维护的 Apache-2.0 扫描器。它能发现机器上的智能体组件，包括 Claude、Cursor、VS Code 和 GitHub Copilot 等客户端中的 MCP 服务器和技能，并检查其中的提示注入、工具投毒及相关问题。最新版本是 2026 年 9 月 29 日的 v0.6.8。可以用它审查一台开发机器上安装了什么。局限：README 说明它目前不接受外部贡献，并且存在两条输出格式不同的发布线。

### Cisco MCP Scanner

[MCP Scanner](https://github.com/cisco-ai-defense/mcp-scanner) 是 Cisco AI Defense 推出的 Apache-2.0 工具。它使用三种可单独或组合运行的引擎分析 MCP 工具、提示、资源和依赖项：YARA 规则、LLM 分析和 Cisco AI Defense API。最新版本是 2026 年 8 月 28 日的 4.8.4。可以在采用某个服务器之前用它进行检查。局限：LLM 和 API 引擎需要外部凭据，而且对服务器描述的扫描几乎无法说明其代码在更新后会做什么。

## 6. 网络控制所处的位置

上述工具检查的是文件、模型、提示和配置，没有一个会决定哪个应用可以连接到哪台服务器。这是出站控制的职责，而它之所以重要，是因为前几节中的风险最终都汇聚到网络上：被篡改的模型运行时、被投毒的工具或被注入的智能体，都必须连接到某个目的地才能外泄数据或接收指令。

HisnLabs 开发的 FireAI 是一款面向 macOS 的出站防火墙。它作为 Apple Network Extension 内容过滤器运行，通过代码签名识别每个 App，并可以对每个目的地选择允许、拦截或询问，[按 App、域名或地址设置规则](https://hisnlabs.com/zh/docs/per-app-rules)。应用到 Mac 上的 AI 工作中，这意味着推理服务器、编程智能体或 MCP 客户端可以被限制在其任务所需的目的地，而新的目的地会触发一次决定。[过滤器文档](https://hisnlabs.com/zh/docs/how-the-network-filter-works)说明了 FireAI 能看到的内容：App 身份、远程主机或地址、端口和协议。

FireAI 不扫描模型文件、不验证签名、不对模型进行红队测试，也不对提示进行分类。它不读取加密连接的内容，因此当合法请求和被注入的请求都发往同一个已允许的目的地时，它无法区分两者。它是上述工具的补充，不能替代其中任何一个。

## 对比

| 工具 | 用途 | 维护方 | 许可证 | 2026 年 9 月 30 日所见状态 |
| --- | --- | --- | --- | --- |
| ModelScan | 模型文件扫描 | Protect AI | Apache-2.0 | 活跃，v0.8.8 |
| picklescan | Pickle 扫描 | mmaitre314 | MIT | 活跃，v1.0.5 |
| fickling | Pickle 分析 | Trail of Bits | LGPL-3.0 | 活跃，v0.1.12 |
| safetensors | 安全的权重格式 | Hugging Face | Apache-2.0 | 活跃 |
| model-transparency | 模型签名 | Sigstore | Apache-2.0 | 活跃，v1.1.1 |
| CycloneDX | ML-BOM 规范 | OWASP、Ecma TC54 | Apache-2.0（模式文件） | 活跃，1.7 |
| Instructional Fingerprinting | 模型指纹（研究） | 论文作者 | MIT | 最后更新于 2024 年 7 月 |
| MarkLLM | 文本水印（研究） | THU-BPM | Apache-2.0 | 活跃 |
| garak | 漏洞扫描 | NVIDIA | Apache-2.0 | 活跃，v0.17.0 |
| PyRIT | 红队测试框架 | Microsoft | MIT | 活跃，v1.1.0 |
| promptfoo | 评估与红队测试 | Promptfoo（OpenAI 旗下） | MIT | 活跃，0.123.1 |
| Giskard v3 | 智能体测试与扫描 | Giskard-AI | Apache-2.0 | 活跃；v2 已停止维护 |
| Llama Guard、Prompt Guard | 防护模型 | Meta | Llama Community Licences | 模型发布于 2025 年 4 月 |
| NeMo Guardrails | 可编程护栏 | NVIDIA | Apache-2.0 | 活跃，v0.24.1 |
| Rebuff、LLM Guard | 注入检测 | Protect AI | Apache-2.0、MIT | 已归档 |
| Agent Scan | 智能体与 MCP 扫描 | Snyk | Apache-2.0 | 活跃，v0.6.8 |
| MCP Scanner | MCP 服务器扫描 | Cisco AI Defense | Apache-2.0 | 活跃，4.8.4 |
| FireAI | macOS 上按 App 的出站控制 | HisnLabs | 商业软件 | 不扫描模型 |

*来源：各项目的仓库或文档，查阅于 2026 年 9 月 30 日。状态反映的是仓库页面，而非质量评价。*

## 局限

- 没有哪一个工具能覆盖全部六项工作。文件扫描结果干净并不能说明模型的行为，签名不能说明安全性，红队扫描也不能说明文件的内容。
- 扫描器和防护措施都是检测器。正如 ModelScan、picklescan 和 Rebuff 的文档各自承认的那样，它们可能漏掉新颖的技术，其覆盖范围也会随攻击的变化而变化。
- 维护情况参差不齐。本文列出的检测器项目中有两个已归档，一个工具已易主，一个由个人维护，一个研究仓库自 2024 年以来未再更新。在基于某个项目进行构建之前，请先检查其状态。
- 本文仅限于具有可查阅一手资料的开源工具，不包括商业平台，也不比较检测结果，因为资料来源没有给出可比数据。
- 许可证信息读取自仓库页面和许可证表。在再分发之前请自行核实，尤其是 Llama Community Licences 和 fickling 的 LGPL 条款。
- 网络层看到的是连接，而不是含义。已被允许的目的地仍然可能从受攻击的模型运行时接收数据。

## FireAI 和 HisnLabs 在其中扮演的角色

扫描模型、签名模型、测试模型，然后再决定它所在的 App 可以连接到哪里。

FireAI 是 HisnLabs 自己的产品：一款直接在 Mac 上运行的 AI 防火墙。它用通俗易懂的语言显示你的应用建立的每一个连接，并让你决定哪些数据可以离开你的 Mac——它的 AI 在本地运行，因此你的流量永远不会发送给我们或任何其他人。HisnLabs 的安全研究团队负责让这些判断保持准确：归类哪些域名只是普通的遥测、哪些属于真正的服务，追踪连接背后的国家和网络，并用真实的流量模式训练设备端模型（FireAI Pilot 功能）——这一切都不会离开你的 Mac。

你可以阅读它背后的技术决策，或试用 FireAI 17 天：[HisnLabs 出品的 FireAI](https://hisnlabs.com/zh/download)。

## Sources

- [GitHub: protectai/modelscan (Apache-2.0)](https://github.com/protectai/modelscan)
- [GitHub: mmaitre314/picklescan (MIT)](https://github.com/mmaitre314/picklescan)
- [GitHub: trailofbits/fickling (LGPL-3.0)](https://github.com/trailofbits/fickling)
- [Hugging Face Hub docs: Pickle scanning](https://huggingface.co/docs/hub/security-pickle)
- [Hugging Face Hub docs: Malware scanning](https://huggingface.co/docs/hub/security-malware)
- [Hugging Face Hub docs: Third-party scanner, Protect AI](https://huggingface.co/docs/hub/security-protectai)
- [GitHub: huggingface/safetensors (Apache-2.0)](https://github.com/huggingface/safetensors)
- [GitHub: sigstore/model-transparency (Apache-2.0)](https://github.com/sigstore/model-transparency)
- [GitHub: CycloneDX/specification (schemas Apache-2.0, ML-BOM)](https://github.com/CycloneDX/specification)
- [SPDX: AI profile](https://spdx.dev/learn/areas-of-interest/ai/)
- [GitHub: cnut1648/Model-Fingerprint, Instructional Fingerprinting (MIT)](https://github.com/cnut1648/Model-Fingerprint)
- [arXiv 2401.12255: Instructional Fingerprinting of Large Language Models](https://arxiv.org/abs/2401.12255)
- [GitHub: THU-BPM/MarkLLM (Apache-2.0)](https://github.com/THU-BPM/MarkLLM)
- [GitHub: NVIDIA/garak (Apache-2.0)](https://github.com/NVIDIA/garak)
- [GitHub: microsoft/PyRIT (MIT)](https://github.com/microsoft/PyRIT)
- [GitHub: promptfoo/promptfoo (MIT)](https://github.com/promptfoo/promptfoo)
- [GitHub: Giskard-AI/giskard-oss (Apache-2.0)](https://github.com/Giskard-AI/giskard-oss)
- [GitHub: meta-llama/PurpleLlama (Llama Guard, Prompt Guard, LlamaFirewall)](https://github.com/meta-llama/PurpleLlama)
- [GitHub: NVIDIA-NeMo/Guardrails (Apache-2.0)](https://github.com/NVIDIA-NeMo/Guardrails)
- [GitHub: protectai/rebuff (archived)](https://github.com/protectai/rebuff)
- [GitHub: protectai/llm-guard (archived)](https://github.com/protectai/llm-guard)
- [GitHub: snyk/agent-scan, formerly MCP-Scan (Apache-2.0)](https://github.com/snyk/agent-scan)
- [GitHub: cisco-ai-defense/mcp-scanner (Apache-2.0)](https://github.com/cisco-ai-defense/mcp-scanner)
- [OWASP Top 10 for Large Language Model Applications](https://owasp.org/www-project-top-10-for-large-language-model-applications/)
- [FireAI docs: How FireAI watches your Mac’s connections](https://hisnlabs.com/en/docs/how-the-network-filter-works)
- [FireAI docs: Rules](https://hisnlabs.com/en/docs/per-app-rules)
