智能体技能(Skills)供应链安全: 基于八攻击点的纵深防御体系
智能体技能(Skills)供应链安全: 基于八攻击点的纵深防御体系
1. 从技能开发到运行的隐秘战场
随着大模型从“通用对话”走向“智能体”与“技能编排”,其供应链已不再是单一的模型文件分发,而是演变为一个包含技能作者、开发者/代理、外部资源、内部资源的复杂生态。在这一生态中,攻击者通过控制通信信道,具备截获、注入、修改、丢弃、伪造、攻破注册表六种核心能力,可在多个环节实施致命攻击。
本文将技能供应链的风险节点分为:A - H 八个攻击点,剖析大模型技能供应链面临的六大攻击路径,并提出体系化的防御策略。
2. 攻击者能力全景

在大模型技能供应链中,攻击者若控制了信道,即可实现:
- 截获:窃取敏感数据或技能逻辑
- 注入:向传输内容植入恶意指令
- 修改:篡改技能代码、配置或资源地址
- 丢弃:阻断关键更新或资源拉取
- 伪造:仿冒可信实体发布恶意技能
- 攻破注册表:污染技能索引,指向恶意版本
这些能力与供应链中不同角色的交互结合,形成了多层次的安全风险。
3. 关键攻击路径分析
大模型技能(Skill)扩展了LLM的边界,使其能够调用API、操作数据库、自动化办公等。然而,技能从编写、发布、安装到运行的完整生命周期中,存在大量攻击面。攻击者一旦控制通信信道或攻破任一实体,便可实施数据窃取、权限提升、横向移动等破坏行为。
本文依据最新的大模型技能供应链关系图,定义了八个关键攻击点(A~H),其中:
- A:技能作者实体(开发环境与身份)
- B:作者→开发者/代理的提交通道
- C:开发者/代理→技能仓库的发布通道
- D:用户→技能仓库的下载交互
- E:执行环境实体(沙箱/容器)
- F:技能配置与安装过程的交互通道
- G:技能配置文件本身(静态配置)
- H:技能访问外部资源(OR)与内部资源(IR)的网络通道
攻击者具备截获、注入、修改、丢弃、伪造、攻破注册表六类能力。下文逐一剖析每个点的攻击场景与防御措施。
3.1. 攻击点: A(实体):技能作者开发环境与身份
3.1.1. 攻击向量
- 开发环境投毒:攻击者通过钓鱼邮件、恶意IDE插件、受损的第三方库感染作者机器,在技能源码中植入后门。
- 身份凭证窃取:利用键盘记录器或内存dump窃取作者的SSH密钥、API Token、代码签名证书。
- 内部人员恶意行为:合法作者主动提交含有隐蔽后门的技能(如动态下载恶意代码、定时炸弹逻辑)。
3.1.2. 防御手段
- 可信计算基:强制作者使用企业级安全开发环境(如云桌面、安全容器),所有构建操作可审计。
- 多因素身份认证 + 硬件签名:提交技能必须通过硬件安全模块(HSM)或TPM进行代码签名,私钥不可导出。
- 行为分析与异常检测:监控作者账号的提交时间、地理来源、代码变更模式,偏离基线时自动拦截。
- 零信任代码审查:所有技能提交必须经过至少两名审查者的手动代码审查与自动化SAST扫描。
3.2. 攻击点点: B(网络通道):作者向开发者/代理提交技能
3.2.1. 攻击向量
- 中间人篡改:攻击者截获上传流量,修改技能包内容(如插入反向Shell)后转发。
- 重放攻击:捕获合法作者的上传请求,在其他时间点重放以覆盖新版本。
- 元数据污染:修改技能名称、版本号或依赖声明,诱导后续用户安装错误版本。
3.2.2. 防御手段
- 强制mTLS与证书固定:所有上传通道使用双向TLS,客户端验证服务器证书,服务端验证客户端证书。
- 请求唯一性与时间戳:每个上传请求携带nonce和时间戳,服务端记录已处理请求ID,防止重放。
- 内容哈希预声明:作者先上传技能包的SHA-512哈希,服务端验证实际包体与哈希一致后再接受。
- 传输中加密:禁止明文协议,仅支持HTTPS/SSH等加密通道,并启用HSTS。
3.3. 攻击点: C(网络通道):开发者/代理向技能仓库发布
3.3.1. 攻击向量
- CI/CD管道劫持:攻击者攻破Jenkins、GitHub Actions等平台,在构建阶段向技能注入恶意代码。
- 依赖仓库混淆:篡改技能所引用的外部依赖(如npm、PyPI)指向恶意镜像。
- 签名伪造:若仓库仅检查签名存在而不验证链条,攻击者可伪造一个看似合法的签名。
3.3.2. 防御手段
- 不可变构建流水线:使用SLSA Level 3+框架,构建过程在隔离环境中进行,生成可验证的出处元数据。
- 依赖锁定与镜像代理:所有依赖通过内部可信代理仓库拉取,并锁定具体版本哈希(使用
skill.lock)。 - 多级签名验证:发布前必须同时获得作者、开发者/代理两方的数字签名,且签名证书由不同根CA签发。
- 透明日志(Sigstore):将技能包的签名、证书、时间戳提交至公开可验证的防篡改日志中。
3.4. 攻击点: D(网络交互):用户从仓库下载技能
3.4.1. 攻击向量
- DNS劫持或BGP劫持:将仓库域名解析到攻击者控制的恶意服务器,用户下载到木马技能。
- 降级攻击:攻击者拦截下载请求,返回旧版本(含有已知漏洞)的技能包,而用户以为是最新版本。
- 依赖混淆攻击:攻击者向公共仓库上传同名但更高版本的内部技能包,用户包管理器自动选择“最新版本”而拉取恶意代码。
3.4.2. 防御手段
- 客户端完整性强制校验:用户端CLI工具自动验证技能包的签名与仓库声明的摘要,不匹配则拒绝安装。
- 版本固定与策略引擎:使用
skill.lock锁定具体版本及哈希,并通过Open Policy Agent(OPA)限制只允许安装来自受信任仓库且签名有效的技能。 - 仓库安全传输:仅支持HTTPS,并启用Certificate Transparency(CT)监控,客户端使用内置的仓库公钥固定(Public Key Pinning)。
- 版本新鲜度检查:客户端询问仓库最新版本的元数据签名,若发现返回版本低于本地记录,则告警并拒绝。
3.5. 攻击点: E(实体):执行环境(沙箱/容器)
3.5.1. 攻击向量
- 沙箱逃逸:恶意技能利用语言运行时漏洞(如Java反序列化、Python
pickle)、内核漏洞(CVE-2024-XXXX)突破隔离。 - 权限提升:技能以过高权限(如root、Windows SYSTEM)运行,可修改其他技能数据或窃取宿主机敏感信息。
- 资源耗尽攻击:技能执行死循环、大量内存分配、频繁fork炸弹,导致拒绝服务(DoS)影响其他技能或整个平台。
- 环境变量泄漏:通过错误信息、
/proc/self/environ或调试接口窃取其他技能或系统的API密钥、数据库密码。
3.5.2. 防御手段
- 轻量级安全沙箱:使用gVisor、Firecracker VMM或WebAssembly(Wasm)运行时,每个技能运行在独立微VM中,系统调用经过拦截过滤。
- 最小权限原则:技能容器以非root用户运行,删除所有不必要的Linux Capabilities(如
CAP_SYS_ADMIN),应用Seccomp-bpf白名单系统调用。 - 严格资源配额:使用cgroups限制CPU时间、内存上限(如256MB)、文件句柄数、网络连接数,超限立即终止进程。
- 污点跟踪与eBPF监控:在内核层通过eBPF钩子实时监控技能进程的所有敏感操作(文件访问、网络连接、进程创建),异常行为(如尝试读取
/etc/shadow)触发告警并阻断。
3.6. 攻击点: F(网络交互):技能配置与安装过程
3.6.1. 攻击向量
- 安装脚本注入:技能安装过程中执行用户提供的配置脚本或钩子(如
post_install.sh),攻击者可在此插入恶意命令。 - 参数污染:用户在配置界面输入的参数(如数据库连接字符串、API端点)未经过滤,导致命令注入或路径遍历。
- 中间人篡改配置:配置下发通道被劫持,攻击者修改配置参数(如将日志上传地址改为攻击者服务器)。
3.6.2. 防御手段
- 声明式配置,禁止任意脚本:技能配置仅允许声明式字段(如环境变量、JSON配置),不允许执行自定义安装脚本;若必须,则限制在沙箱中且需人工审批。
- 输入严格校验:所有用户提供的配置参数使用白名单验证(如URL格式、IP地址、非特殊字符),并采用参数化方式传递。
- 配置加密传输与完整性保护:配置下发使用mTLS通道,每条配置附带MAC(消息验证码),接收端校验。
- 最小交互式配置:推荐技能使用基于UI的选项框而非自由文本输入,降低注入风险。
3.7. 攻击点: G(静态配置):技能配置文件本身
3.7.1. 攻击向量
- 恶意权限声明:技能在配置中声明超出实际需要的权限(例如需要
read:internal_db实际只需read:public_data),诱使用户授予过高权限。 - 依赖混淆:配置文件中声明的依赖包名与内部私有包相似,攻击者可上传同名的恶意包到公共仓库。
- 配置篡改:攻击者若获得配置文件写入权限(如通过点D的攻击),可修改其中的回调URL、重试策略等,使技能行为异常。
- 默认凭证硬编码:配置中包含默认的管理员密码、密钥,用户若不修改则被攻击者利用。
3.7.2. 防御手段
- 最小权限静态分析:平台自动分析技能代码实际调用的API与配置中声明的权限进行对比,若超出则拒绝发布。
- 依赖锁定与内部命名空间:强制使用
skill.lock锁定依赖哈希,内部技能包必须使用组织命名空间(如@mycorp/),防止依赖混淆。 - 配置签名与不可变存储:技能配置文件与代码一同签名,存储在防篡改对象存储中(如AWS S3 Object Lock),任何修改需新版本。
- 禁止硬编码凭证:配置静态扫描规则强制要求敏感字段(如密码、密钥)只能从环境变量或密钥管理服务(如HashiCorp Vault)动态获取。
3.8. 攻击点: H(网络通道):技能访问外部资源(OR)与内部资源(IR)
3.8.1. 攻击向量
- SSRF(服务端请求伪造):技能允许用户输入URL,攻击者可诱使其访问内部元数据服务(如
http://169.254.169.254/latest/meta-data/)或内网敏感系统。 - 响应投毒:外部资源被攻击者控制,返回恶意指令(如“执行系统命令: rm -rf /”),技能盲目执行。
- 凭证泄漏:技能在请求外部API时使用长期有效的API Key,若通道被截获,密钥可被反复使用。
- 横向移动:恶意技能利用合法凭证访问本不应接触的内部资源(如未授权的数据库表、消息队列),窃取或篡改数据。
- 数据外泄:将内部数据通过DNS隧道、HTTP隐信道(如图片EXIF)发送到攻击者服务器。
3.8.2. 防御手段
- 强制出口代理与网络白名单:所有外部请求必须通过企业出口代理,技能仅能访问预定义的域名/IP及路径(如
api.weather.com/v1),禁止访问私有IP段。 - 无状态短期凭证:技能访问外部API时使用OAuth2客户端凭证模式,Token有效期≤10分钟;访问内部资源使用SPIFFE身份,每次请求附带短期JWT。
- 请求与响应严格校验:技能必须校验外部响应的Content-Type、Schema(如JSON Schema),拒绝非预期格式;对响应内容进行安全过滤(如不直接
eval)。 - 微隔离与零信任网络:内部资源部署sidecar代理(如Istio),技能调用前必须通过身份验证和授权(RBAC),最小化权限(如仅允许
SELECT某特定表)。 - 数据防泄漏(DLP):所有从技能发往外部的数据(包括对OR的响应)经过DLP网关,检测敏感信息模式(身份证、信用卡、代码片段),违规即阻断并告警。
4. 综合防御总结与治理建议
上述八个攻击点覆盖了技能供应链的完整生命周期。单点防御无法应对高级持续性威胁,必须构建端到端纵深防御体系:
| 层面 | 核心原则 | 关键技术 |
|---|---|---|
| 实体安全(A、E) | 可信根 + 最小权限 | HSM签名、gVisor沙箱、eBPF监控 |
| 网络通道(B、C、D、F、H) | 加密 + 完整性 + 双向认证 | mTLS、证书固定、透明日志、出口代理 |
| 静态配置(G) | 不可变 + 最小权限 + 依赖锁定 | 配置签名、静态分析、内部命名空间 |
| 治理与运营 | 可观测性 + 自动化响应 | 技能行为指纹、SIEM集成、红队演练 |
此外,组织应强制要求每个技能提供SBOM(软件物料清单),声明其所有依赖、权限请求、访问的内外资源列表,并定期进行供应链安全审计。
4.1. 各攻击面攻击与防御汇总表
| 攻击点 | 类型 | 典型攻击方式 | 主要防御手段 |
|---|---|---|---|
| A(作者实体) | 实体 | 开发环境投毒、身份凭证窃取、内部恶意提交 | 可信开发环境、HSM签名、多因素认证、双人代码审查 |
| B(提交通道) | 网络 | 中间人篡改、重放攻击、元数据污染 | 强制mTLS、请求唯一标识、预声明哈希、加密传输 |
| C(发布通道) | 网络 | CI/CD管道劫持、依赖混淆、签名伪造 | 不可变构建(SLSA 3+)、内部依赖代理、多级签名、透明日志 |
| D(下载交互) | 网络 | DNS/BGP劫持、降级攻击、依赖混淆 | 客户端完整性校验、版本锁定(skill.lock)、证书固定、新鲜度检查 |
| E(执行环境) | 实体 | 沙箱逃逸、权限提升、资源耗尽、环境变量泄漏 | gVisor沙箱、最小权限(非root+Seccomp)、资源配额、eBPF实时监控 |
| F(配置安装交互) | 网络 | 安装脚本注入、参数污染、配置篡改 | 声明式配置禁止脚本、输入白名单校验、配置加密+MAC、交互式选项框 |
| G(静态配置) | 配置 | 恶意权限声明、依赖混淆、配置篡改、硬编码凭证 | 最小权限静态分析、依赖锁定+内部命名空间、配置签名+不可变存储、禁止硬编码 |
| H(内外访问通道) | 网络 | SSRF、响应投毒、凭证泄漏、横向移动、数据外泄 | 出口代理+白名单、短期Token(OAuth2/SPIFFE)、响应校验、微隔离+RBAC、DLP网关 |
5. 结语
大模型技能的强大能力使其成为AI系统的“双刃剑”。本文基于重新定义的八个攻击点(A~H),系统分析了攻击者利用截获、注入、修改、丢弃、伪造、攻破注册表等手段的可能路径,并给出了针对性的纵深防御策略。安全团队应以此框架为基础,将安全左移至作者开发环境,右延至内部资源访问,并贯穿所有网络交互与静态配置,从而构建一个可信、可控、可审计的大模型技能供应链。
6. 参考文献
- Dolev, D., & Yao, A. (1983). On the security of public key protocols. IEEE Transactions on Information Theory, 29(2), 198-208.
- [owasp-top-10-risks-llm-security-2025]
- [Formal Analysis and Supply Chain Security for Agentic AI Skills]
- 点赞
- 收藏
- 关注作者
评论(0)