关于 secure-ai
secure-ai 是面向构建 LLM 应用的安全技能,提供从输入隔离到输出校验的防护模式。内容涵盖 Agent、MCP 工具和 AI 供应链,并参考 OWASP 与 NIST 框架。
主要功能
- 01提示注入防护与输入隔离
- 02模型输出校验与过滤
- 03Agent 最小权限与人工审批
- 04MCP 工具白名单和校验
- 05模型来源与供应链审查
适用场景
- 01审查 LLM 应用的提示注入风险
- 02校验模型输出后再用于下游操作
- 03限制 Agent 和 MCP 工具权限
- 04盘点模型、数据集及依赖来源
MCP 相关
介绍如何保护 MCP 工具集成,包括工具白名单、输入输出校验和最小权限控制。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ oakoss/ agent-skills --skill secure-ai安装后在 Claude Code 中输入/secure-ai确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/agentic-security-zero-trust.mdoutput-validation.mdprompt-injection-defense.mdsecure-server-actions.mdsecurity-audit-protocols.mdsupply-chain-mcp.md详细介绍
安全 AI
概述
通过多层防御、结构隔离和零信任编排来保护 AI 集成层。涵盖提示词注入防御、模型输出验证、Agent 安全、服务端操作安全、供应链完整性、MCP 工具安全,以及与大模型交互的应用所需的审计协议。
符合 OWASP《2025 年大模型应用十大风险》和 NIST AI 风险管理框架(AI RMF 1.0)。针对 OWASP 大模型十大风险,提供全面覆盖和具体的防御模式。
适用场景: 保护由大模型驱动的功能,防范提示词注入;在将模型输出用于下游之前进行验证和清理;为自主 Agent 实现零信任;强化 AI 端点的服务端操作;保护 MCP 工具集成;管理 AI 供应链风险;审计 AI 访问模式。
不适用场景: 不含 AI 组件的通用 Web 应用安全、仅涉及前端的安全问题、不涉及 AI 的 API 加固,以及不涉及 AI 的基本身份验证或授权。
快速参考
| 模式 | 方法 | 要点 |
|---|---|---|
| 结构隔离 | 分离系统和用户消息角色 | 切勿在同一个字符串中混合指令和用户数据 |
| 输入边界 | 使用标记分隔用户数据 | 帮助模型识别不可信数据的起止位置 |
| 守护模型 | 使用快速分类器预扫描输入 | 在主推理模型处理前检测注入模式 |
| 输出验证 | 将大模型输出视为不可信输入 | 使用上下文感知编码、参数化查询、CSP 标头 |
| 最小权限 | 为每个子任务设置基于能力的范围 | Agent 只能使用当前工作所需的工具 |
| 人机协同 | 破坏性操作须经人工批准 | 涉及财务或数据更改的事件需要审批 |
| 非人类身份 | 基于 OIDC 的 Agent 身份验证 | 确保每个 Agent 的身份可验证,并定期轮换密钥 |
| 仅限服务端的 AI 逻辑 | 所有 AI 代码均使用 server-only 导入 | 密钥和推理逻辑绝不会泄漏到客户端包中 |
| 输入验证 | 对所有面向 AI 的服务端操作使用 Zod 模式 | 切勿将原始用户输入传递给 AI 服务 |
| 速率限制 | 通过 Redis 设置按用户/IP 计算的令牌预算 | 防止 AI 端点遭受拒付攻击 |
| 流内容清理 | 过滤 AI 输出流中的敏感字符串 | 在内容到达客户端前移除内部 ID 和机密信息 |
| MCP 工具安全 | 将工具加入允许列表,并验证输入/输出 | 将 MCP 服务视为不可信对象,并强制执行最小权限 |
| 供应链完整性 | 验证模型来源,并维护 AI-BOM | 使用校验和追踪模型、数据集和依赖项 |
| 机密管理 | 使用环境变量,并在 CI 中扫描泄漏 | 在 CI 中使用 gitleaks,防止机密信息被提交 |
核心安全原则
- 隔离是绝对的 —— 用户数据绝不能被视为系统指令
- 大模型输出不可信 —— 在下游使用之前,将所有模型响应视为可能带有恶意的输入
- Agent 遵循最小权限原则 —— 仅授予当前子任务所需的工具,并在完成后撤销权限
- 销毁操作须经人工验证 —— 破坏性或不可逆的操作需要人工签名
- 客户端中不得包含机密 —— 所有 AI 逻辑和密钥都必须位于仅限服务端的环境中
- 秉持对抗性思维 —— 假定用户和 Agent 都会试图绕过规则
- 纵深防御 —— 分层设置防御措施,确保绕过某一层不会危及系统
- 验证供应链 —— 验证所有模型、数据集和 AI 工具的来源和完整性
OWASP LLM Top 10(2025)覆盖情况
| OWASP 风险 | 参考内容 |
|---|---|
| LLM01 提示词注入 | 提示词注入防护 |
| LLM02 敏感信息泄露 | 安全服务器操作(流式内容清理、输出过滤) |
| LLM03 供应链 | 供应链与 MCP 安全 |
| LLM04 数据和模型投毒 | 供应链与 MCP 安全 |
| LLM05 不当输出处理 | 输出验证与编码 |
| LLM06 过度代理 | Agent 式零信任安全(最小权限、人工介入) |
| LLM07 系统提示词泄露 | 提示词注入防护(不可提取的提示词) |
| LLM08 向量和嵌入弱点 | 输出验证与编码(RAG 清理) |
| LLM09 错误信息 | 输出验证与编码(语义过滤) |
| LLM10 无限制消耗 | 安全服务器操作(速率限制、令牌预算) |
常见错误
| 错误 | 正确做法 |
|---|---|
| 在同一提示词字段中混合用户输入和系统指令 | 使用结构化隔离,通过不同的系统和用户消息角色区分二者 |
| 信任大模型输出,并将其直接传入 exec、eval 或 SQL | 将所有模型输出视为不可信;使用参数化查询和上下文感知编码 |
| 为 Agent 开放对所有任务的无限制工具访问 | 使用基于能力的范围,仅授予每个子任务所需的工具 |
| 使用静态 API 密钥对 AI 服务进行身份验证 | 使用 OIDC,并采用动态密钥轮换和短期令牌 |
| 加载第三方模型时不检查其来源 | 验证模型校验和,使用签名制品,并维护 AI-BOM |
| 未经验证便授予 MCP 服务广泛权限 | 将 MCP 工具加入允许列表,验证所有输入和输出,并对敏感操作强制执行人工审批 |
| 直接将原始用户输入传递给 AI 服务 | 在进行 AI 处理前,使用 Zod 架构验证所有输入 |
| 不经输出过滤便流式传输 AI 响应 | 在敏感字符串到达客户端之前,从流中清除这些字符串 |
关键框架
- OWASP Top 10 for LLM Applications 2025 -- LLM 漏洞分类的行业标准
- NIST AI Risk Management Framework (AI RMF 1.0) -- 用于 AI 风险管理的四项功能框架(治理、映射、测量、管理)
- NIST Cybersecurity Framework Profile for AI (NISTIR 8596) -- 安全采用 AI 的指南
- OWASP MCP Security Cheat Sheet -- 保护第三方 MCP 服务集成的实用指南
- CycloneDX 1.6 / SPDX 3.0 -- 支持 AI 物料清单(ML-BOM)的标准
委派
- 扫描代码库中的提示词注入漏洞:使用
ExploreAgent 搜索流入系统提示词的用户数据和未经验证的输入 - 实现零信任 Agent 编排:使用
TaskAgent 添加身份验证、沙盒和人工审批关卡 - 审计模型输出处理:使用
ExploreAgent 查找传入 exec、eval、SQL,或未经清理便渲染为 HTML 的 LLM 输出 - 审查 MCP 工具配置:使用
ExploreAgent 检查 MCP 服务权限、工具允许列表和身份验证设置 - 设计安全的 AI 集成架构:使用
PlanAgent 梳理信任边界、Agent 范围和审计要求 - 评估供应链风险:使用
ExploreAgent 根据溯源记录清点第三方模型、数据集和 MCP 服务 - 设置安全监控:使用
TaskAgent 配置审计日志记录、异常检测和事件响应警报
对于通用应用安全(OWASP Top 10、身份验证模式、安全标头、输入验证),请使用
application-securityskill。对于数据库层安全(RLS 策略、审计跟踪、Postgres 加固),请使用database-securityskill。
参考资料
- 提示词注入防御 -- 多层隔离、守护模型、输入边界、间接注入
- 输出验证与编码 -- 零信任输出处理、上下文感知编码、RAG 清理
- Agent 零信任安全 -- 非人类身份、资源隔离、异常检测
- 安全的服务器操作 -- 仅限服务器的模式、输入验证、速率限制、流安全
- 供应链与 MCP 安全 -- 模型溯源、AI-BOM、MCP 工具加固、数据投毒防御
- 安全审计协议 -- 监控 Agent 行为、合规检查清单、事件响应
评论
支持 Markdown