智能体技能(Skills)供应链安全: 基于八攻击点的纵深防御体系

举报
Uncle_Tom 发表于 2026/04/02 15:06:24 2026/04/02
【摘要】 大模型技能的强大能力使其成为AI系统的“双刃剑”。本文基于重新定义的八个攻击点(A~H),系统分析了攻击者利用截获、注入、修改、丢弃、伪造、攻破注册表等手段的可能路径,并给出了针对性的纵深防御策略。安全团队应以此框架为基础,将安全左移至作者开发环境,右延至内部资源访问,并贯穿所有网络交互与静态配置,从而构建一个可信、可控、可审计的大模型技能供应链。

智能体技能(Skills)供应链安全: 基于八攻击点的纵深防御体系

1. 从技能开发到运行的隐秘战场

随着大模型从“通用对话”走向“智能体”与“技能编排”,其供应链已不再是单一的模型文件分发,而是演变为一个包含技能作者、开发者/代理、外部资源、内部资源的复杂生态。在这一生态中,攻击者通过控制通信信道,具备截获、注入、修改、丢弃、伪造、攻破注册表六种核心能力,可在多个环节实施致命攻击。

本文将技能供应链的风险节点分为:A - H 八个攻击点,剖析大模型技能供应链面临的六大攻击路径,并提出体系化的防御策略。

2. 攻击者能力全景

在大模型技能供应链中,攻击者若控制了信道,即可实现:

  1. 截获:窃取敏感数据或技能逻辑
  2. 注入:向传输内容植入恶意指令
  3. 修改:篡改技能代码、配置或资源地址
  4. 丢弃:阻断关键更新或资源拉取
  5. 伪造:仿冒可信实体发布恶意技能
  6. 攻破注册表:污染技能索引,指向恶意版本

这些能力与供应链中不同角色的交互结合,形成了多层次的安全风险。

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]
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。