AI Agent 浪潮之下,Skills(技能)生态正在成为大模型落地的核心载体。社区开发者贡献的各类技能快速膨胀,让 Agent 的能力边界不断拓宽,但随之而来的安全问题也逐渐暴露:恶意技能植入后门、硬编码凭证泄露、依赖供应链投毒、提示词注入…… 每一个环节都可能成为攻击者的突破口

近期火山引擎 AI 安全团队发布了 SkillScan—— 一套面向智能体技能包的全链路安全检测方案,覆盖技能从开发、分发到运行的完整生命周期。本文将从技术视角完整拆解这套方案的风险模型、检测体系与落地实践,看看字节是如何为 Skills 生态构建系统性安全防线的。

一、技能安全风险全景:五大攻击面全梳理

技能安全并非单点问题,而是贯穿包体文件、声明配置、代码实现、网络运行、依赖供应链的全链路风险。攻击者可以在技能生命周期的任意环节植入危害,从解压时的目录穿越,到运行时的数据窃取,再到供应链层面的投毒攻击。SkillScan 将所有风险归纳为五大类,形成了完整的风险视图。

1.1 包体文件合规风险

技能包通常以压缩包形式分发,解压环节本身就存在基础安全隐患。攻击者可以在包体结构上做手脚,在技能被加载前就触发危害。

  • 核心攻击向量
    • 恶意文件植入:在包内塞入可执行二进制文件、后门程序,运行时直接触发恶意行为;
    • 硬编码凭证:将 API Key、内网 Token、数据库密码直接写入配置文件,一旦泄露可被直接利用;
    • 资源耗尽攻击:放置超高压缩比文件或超大文件,触发解压炸弹,导致服务拒绝服务;
    • 目录穿越:构造包含 ../ 的恶意压缩包路径,解压时覆盖系统关键文件实现任意写入。
  • 潜在影响:本地文件包含漏洞、敏感信息泄露、系统资源耗尽、任意文件覆盖、内容合规风险。

1.2 声明层安全风险

skill.md 等声明文件是技能的 “说明书”,定义了功能描述、使用方式与依赖关系,也是大模型读取技能信息的入口。攻击者可以在声明文本中植入攻击载荷,诱导大模型执行非预期操作。

  • 核心攻击向量
    • 提示词注入:在功能描述、示例代码中嵌入恶意指令,大模型读取声明内容时被诱导绕过系统提示、执行恶意操作;
    • 敏感行为声明:明示或暗示技能具备本地文件访问、系统命令执行等高权限能力,存在被滥用风险;
    • 高风险依赖声明:在依赖项中引入已知漏洞组件或恶意库,通过供应链传递危害。
  • 潜在影响:大模型提示词泄露、系统指令被绕过、技能行为偏离预期、供应链攻击。

1.3 代码层安全风险

代码是技能逻辑的核心载体,也是最常见的风险入口。无论是恶意开发者植入的后门,还是不规范编码引入的漏洞,都可能直接造成严重危害。

  • 核心攻击向量
    • 恶意代码植入:直接实现反向 Shell、数据窃取、文件加密勒索等恶意功能;
    • 危险函数调用:滥用 eval()exec()subprocess 等执行类函数,若输入可控则引发命令注入;
    • 敏感路径访问:尝试读取 ~/.ssh//etc/passwd、容器环境变量等系统敏感信息;
    • 容器逃逸尝试:通过特权操作、内核漏洞利用等方式突破容器隔离边界。
  • 潜在影响:远程代码执行、用户隐私泄露、容器逃逸、权限提升、供应链攻击。

1.4 网络与资源安全风险

技能运行时的网络行为与资源消耗,直接关系到宿主平台的稳定性与数据安全。恶意技能可能通过网络外发窃取的数据,或通过资源耗尽攻击影响多租户环境。

  • 核心攻击向量
    • 明文通信:使用 HTTP 协议传输数据,易被中间人攻击窃取或篡改;
    • 恶意 C2 连接:硬编码恶意服务器地址,建立反向 Shell 或数据外发通道,具备心跳保活、指令交互等 C2 特征;
    • 资源耗尽:通过无限循环、递归调用、内存泄漏等方式,耗尽宿主的 CPU、内存与磁盘资源。
  • 潜在影响:数据泄露、远程被控、拒绝服务、平台多租户相互干扰。

1.5 开源合规与供应链风险

技能普遍依赖大量开源组件,供应链是最容易被忽视、也最容易造成规模化影响的攻击面。

  • 核心攻击向量
    • 许可证不合规:引入 GPL 等强传染性许可证组件,可能导致技能代码被迫开源,引发法律风险;
    • 已知漏洞组件:使用存在 CVE 漏洞的依赖版本,攻击者可通过漏洞间接攻击;
    • 依赖投毒:污染开源仓库的包版本,通过传递依赖将恶意代码引入运行环境;
    • 威胁情报匹配:技能作者、包体哈希与已知威胁情报库中的恶意实体匹配。
  • 潜在影响:许可证合规纠纷、已知漏洞被利用、供应链投毒攻击。

二、SkillScan 安全保障体系:分层检测 + 场景化防护

针对上述五大风险领域,SkillScan 构建了多层次的检测能力体系,并且针对不同业务场景提供差异化的防护策略,而非一刀切的通用方案。

2.1 场景化防护:适配不同业务的安全需求

不同场景下技能的分发范围、威胁来源差异极大,SkillScan 为两类核心场景设计了针对性防护方案。

云上技能市场场景

面向公网用户分发的技能市场,攻击者来自外部,核心威胁是恶意技能上传、技能投毒与供应链攻击。 SkillScan 采用 “多层检测 + 持续运营” 策略:

  • 入口层:包体合规检查 + 内容安全检测,第一时间拦截明显恶意的压缩包与违规内容;
  • 内容层:声明层检测 + 代码静态分析 + 供应链检测,全面覆盖代码、声明、依赖全维度风险;
  • 运营层:威胁情报持续更新、误报漏报快速响应、高危技能即时下架,形成运营闭环。
内场技能共享场景

企业内部流转的技能生态,威胁主要来自内部恶意人员、已入侵账号与不合规使用。 SkillScan 在基础能力之上额外增强三类检测:

  • 内网敏感信息检测:识别代码、文档中的内网地址、内部系统名称等涉密信息;
  • 数据外发检测:重点监控向外部服务器传输数据的行为,防止内部数据泄露;
  • 权限合规检查:校验技能申请的权限与声明功能是否匹配,避免过度授权。

2.2 三层检测能力架构

SkillScan 将所有检测能力划分为三层,业务方可根据安全等级灵活选配。

  1. 基础检测层(默认开启) 覆盖绝大多数通用安全风险,是所有技能的安全基线。包含包体合规检查、声明层安全、代码恶意行为检测、网络连接风险、基础供应链威胁等核心能力,实现对技能安全的基础保障。

  2. 增强检测层(按需配置) 面向更高安全要求的场景,提供可灵活开关的增强能力。包括开源许可证合规检测、SCA 软件成分分析、内网敏感信息检测、数据外发专项检测等,满足企业级、合规类的防护需求。

  3. 运营保障层(持续迭代) 聚焦检测能力的持续有效性,包含威胁情报库实时更新、误报漏报人工处理、高危技能应急响应等运营动作,确保检测能力能对抗不断演化的攻击手法。

在此基础上,SkillScan 进一步将检测项划分为核心检测能力扩展检测能力两大矩阵,支撑业务方根据自身风险容忍度配置不同的准入阈值。

三、接入与落地:从准入到运营的完整闭环

3.1 四种灵活接入模式

SkillScan 提供了多形态的接入方式,适配不同部署环境与业务流程:

  • 云端 API 接入:通过 REST 接口调用检测服务,轻量化接入,无需本地部署,适合中小规模技能平台;
  • SDK 集成:将检测能力嵌入业务发布流程,实现技能上传、更新时自动卡点检测;
  • 私有化部署:针对内网高安全要求场景,支持完整能力本地部署,检测数据不出域;
  • 流水线插件:集成至 CI/CD 开发流水线,在代码提交阶段前置安全检测,实现安全左移。

3.2 安全准入红线:高风险项一票否决

为保障线上技能的基础安全,SkillScan 设定了明确的高风险准入规则,命中以下检测项的技能必须经过人工复核,确认存在风险则禁止上架:

  • 包体文件存在内容安全风险
  • skill.md 中存在提示词注入风险
  • 存在敏感行为声明且未通过安全评估
  • Python/JavaScript/Bash 代码存在已知恶意代码模式
  • 代码存在容器敏感信息收集或逃逸行为
  • 代码尝试访问文件系统敏感路径
  • 代码尝试建立反向 Shell 等具备 C2 特征的网络连接
  • 开源组件许可证存在严重合规风险

各业务方可在此基础上调整准入策略,设置不同风险等级的处置阈值。

3.3 实战落地:已覆盖多类技能生态

目前 SkillScan 已经在火山引擎内外多个技能平台落地,成为技能上架的默认安全关卡:

  • FindSkill 技能市场:所有上架技能默认通过 SkillScan 安全检测,为用户提供标准化安全保障;
  • CN-ClawHub 技能市场:平台全量技能均经过安全扫描,默认处于安全状态;
  • Arkclaw 技能市场:已通过扫描的技能会标记安全认证标识,引导用户优先选用安全技能。

除此之外,SkillScan 沉淀的恶意技能威胁情报也持续向监管部门报送,为整个智能体技能安全生态提供支撑。

四、开发者必看:技能安全开发 7 条最佳实践

安全检测是最后一道防线,更优的方案是从开发源头降低风险。结合 SkillScan 的检测维度,这里整理了 7 条可直接落地的安全开发原则。

原则一:最小权限,收缩攻击面

  • 只申请技能真正必需的权限与能力,避免过度授权;
  • 优先使用平台封装的安全 API,尽量避免直接调用 execsubprocess 等系统级执行工具;
  • 文件系统访问限制在指定工作目录内,禁止访问系统敏感路径;
  • 网络访问采用域名白名单机制,不使用通配符放行所有域名。

原则二:严格校验输入与输出

  • 对所有外部用户输入做格式、范围、长度校验,防止注入攻击;
  • 禁止将用户输入直接传入 evalsystem 等危险函数;
  • 输出到前端或下游系统时做编码转义,避免注入风险;
  • skill.md 等声明文件的动态内容做安全校验,防止提示词注入。

原则三:规范依赖管理,规避供应链风险

  • 只从官方源与可信渠道引入第三方库;
  • 使用 lock 文件锁定依赖版本,确保构建一致性;
  • 定期更新依赖版本,及时修复已知漏洞;
  • 尽量精简依赖项,移除不必要的依赖,缩小攻击面。

原则四:敏感信息零硬编码

  • 禁止在代码、配置文件、声明文档中硬编码密钥、密码、Token 等敏感信息;
  • 使用环境变量或密钥管理服务存储敏感配置;
  • 日志输出中对敏感信息做脱敏处理;
  • 不在公开文档中记录内部系统地址、架构等涉密信息。

原则五:保障网络通信安全

  • 所有对外网络请求优先使用 HTTPS 等加密协议,禁用明文 HTTP;
  • 只与可信、可溯源的服务器建立连接,避免访问不明域名;
  • 对外部 API 响应做格式与内容校验,防止恶意响应注入;
  • 限制网络请求频率,避免被滥用或造成资源耗尽。

原则六:发布前完成安全自测

  • 技能发布前执行完整的安全自测,覆盖异常输入、边界场景;
  • 使用 SkillScan 等自动化工具做前置扫描;
  • 敏感功能模块执行人工安全代码审查;
  • 技能上线后定期复检,及时发现新暴露的安全风险。

原则七:规范包体与声明

  • 打包时排除 .git 目录、临时文件、测试代码等冗余内容;
  • 非必要不包含可执行二进制文件,确有需要需提前做安全评估;
  • 避免使用符号链接,防止路径穿越风险;
  • 确保 skill.md 声明与实际代码功能一致,不隐瞒敏感行为。

写在最后

SkillScan 本质上是为 AI Agent 技能生态建立了一套标准化的安全基线。在 Agent 能力快速扩张的今天,安全不能成为生态发展的短板,也不能只靠事后补救。从开发阶段的安全左移,到发布环节的准入检测,再到运行态的持续运营,全链路防护体系才能真正守住技能生态的安全底线

对于开发者而言,遵循安全最佳实践、主动通过安全检测,既是对用户负责,也是技能生态健康发展的基础。而对于平台方,一套成熟的安全检测方案,更是技能市场规模化运营的前提。随着技能生态的持续繁荣,安全能力也会成为平台核心竞争力的重要组成部分。


互动话题:你们在开发、上架 AI 技能时遇到过哪些典型安全漏洞?平时会用自动化扫描工具做前置检测吗?我是阿宇,期待你的交流讨论^-^

本文参考:一文了解|SkillScan 智能体技能安全扫描最佳实践

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐