170万次恶意AI Skills攻击实战拆解:溯源、检测脚本、防护配置全方案
2026年Black Hat大会披露的skills.sh大规模投毒事件彻底打破了行业对AI技能生态的安全认知。截至事件曝光攻击者批量上架的仿冒AI技能累计安装量突破170万次覆盖Claude Code、OpenClaw、Browser‑Use主流AI Agent生态大量开发者工作站、CI/CD流水线、云服务器凭证被批量窃取。这场攻击和我们熟知的npm、PyPI软件供应链投毒完全不同。传统恶意包依靠可执行代码触发恶意行为现有杀毒软件、静态代码扫描工具可以有效拦截。而本次攻击的核心载荷不是二进制程序、不是脚本代码而是写给AI Agent看的自然语言提示词。所有主流安全设备、代码审计工具、威胁检测系统的现有规则都无法识别这种恶意载荷。工具只会扫描文件是否包含恶意代码不会解析一段Markdown文本对AI Agent的指令意图。这也是本次攻击能够静默传播、百万级落地却长期未被发现的核心原因。本文从第一性原理出发完整拆解Promptware新型AI供应链攻击的底层逻辑、全链路攻击流程、武器架构、逃逸机制。同时落地实战化能力提供可直接复制使用的批量检测脚本、终端防护配置、企业侧风控方案帮个人开发者、企业安全团队彻底封堵AI Agent供应链漏洞。一、事件核心全景170万次投毒攻击真实原貌本次攻击由Zenity Labs完整溯源披露攻击阵地聚焦Vercel旗下开源AI技能市场skills.sh。攻击者核心目标不是普通用户而是拥有云资源、服务器权限、代码仓库权限的开发者与运维人员精准高价值资产收割。攻击者没有制作全新功能的虚假技能而是采用精准拼写仿冒、视觉复刻的方式瞄准市场内下载量最高、口碑最好的两款核心技能Paperclip、Browser‑Use。这两款技能主打文件处理、浏览器自动化是开发、测试、运维人员高频安装的刚需工具天然具备大规模传播的基础。整个攻击周期分为两个核心阶段也是本次新型供应链攻击的标志性特征第一阶段为信誉养号期。攻击者上架的初始版本技能完全干净功能和官方原版一致无任何恶意指令、无隐藏代码、无异常网络请求。静态扫描、人工抽查、平台风控检测全部合规顺利通过审核上架。之后通过小规模刷量、伪造正向评论让技能快速进入平台热门榜单借助平台算法获取自然流量积累数十万安装基数建立用户信任。第二阶段为延迟投毒期。当技能热度稳定、用户基数足够大后攻击者直接更新技能版本在核心文档SKILL.md、配置说明、使用教程中植入隐藏式恶意提示指令。整个更新过程无需平台二次深度审核高热度技能的版本更新风控阈值极低恶意载荷直接落地。截至2026年8月2日这批恶意技能累计安装量突破170万次覆盖全球数万开发者终端、企业CI运行容器、云主机工作站。30%以上的恶意样本专门适配Claude Code、OpenClaw生态实现多框架通用杀伤受害范围进一步扩大。很多用户存在致命认知误区AI技能只是辅助工具不会读取本地敏感文件、不会主动联网、不会窃取数据。但真实场景中绝大多数本地AI Agent、开发型Agent都被赋予了过高权限允许读取全盘文件、调用系统Shell、发起网络请求。Agent的核心工作是服从指令当技能文档写入恶意指令Agent就会成为攻击者的免费肉鸡。二、第一性原理拆解AI供应链攻击底层逻辑变革所有传统软件供应链安全防护体系都是基于「代码即载荷」的底层逻辑搭建。无论是Linux软件源、npm前端包、PyPI Python库、Maven Java包恶意攻击的载体都是可被机器解析、执行的代码程序。安全防护的核心就是检测、拦截、清理恶意代码。但AI Skill生态彻底重构了这个底层逻辑。我们必须抛开传统安全经验从第一性原理重新定义AI供应链的安全边界。AI Skill的本质不是软件程序而是AI Agent的行为约束说明书与指令集。它没有编译代码、没有执行脚本、没有二进制文件核心载体是Markdown格式的自然语言文档。这份文档的作用是告诉AI Agent你可以做什么、你需要做什么、你的执行流程是什么。传统安全工具的检测逻辑对其完全失效核心原因有三点第一载荷形态完全不同。传统攻击载荷是机器执行的代码本次攻击载荷是大模型理解的自然语言。杀毒软件、SAST工具只会识别代码风险无法解析文本语义中的恶意意图。第二触发机制完全不同。传统恶意包安装后依靠脚本自动执行恶意代码本次攻击无自动执行逻辑依靠AI Agent主动阅读理解文档、自主执行指令属于智能化被动触发无固定触发特征。第三投毒时机完全不同。传统攻击包发布即带毒容易被初期风控拦截本次攻击采用延迟投毒机制先积累信誉、再植入恶意载荷完美绕过平台初始审核机制。这也是为什么我始终强调AI Agent安全不是传统软件安全的延伸而是全新的安全赛道。沿用旧的防护规则、扫描工具、排查思路永远无法抵御Promptware类攻击。三、完整7步攻击链路拆解含架构流程图结合Zenity Labs溯源报告与样本逆向分析我梳理出攻击者标准化、可复用的7步供应链攻击链路从前期准备、养号控评、延迟投毒、载荷执行、资产搜刮、数据回传到横向扩散每一步都具备极强的复制性也是未来AI技能投毒的主流攻击模板。3.1 攻击全链路流程图前期准备域名/Slug抢注界面复刻冷启动养号发布纯净版本刷热度延迟投毒版本更新植入恶意Prompt载荷Agent解析文档自主触发指令执行远程拉取Lua/Shell恶意执行载荷全盘搜刮开发者敏感凭证与资产打包数据回传C2服务器持久化驻留横向扩散侵染3.2 分步深度拆解攻击细节第一步精准仿冒前置布局实现视觉无感欺骗攻击者核心手段为域名与包名拼写抢注Typosquatting针对Paperclip、Browser‑Use两大热门技能仅修改1-2个字符保持名称、简介、README排版、功能截图、作者头像完全一致。普通用户安装时只会识别核心功能名称不会核对完整包名与官方仓库地址极易误装。同时攻击者提前囤积数百个空白Skill包名批量布局同类仿冒技能形成攻击矩阵避免单一样本被封禁后攻击中断实现规模化投毒。第二步纯净版本冷启动积累平台信誉权重这是整个攻击最核心的欺骗点。初始发布的Skill版本100%无害功能逻辑、使用方式、代码文件和官方原版完全对齐不存在任何恶意内容。平台自动化扫描、人工复核、用户使用检测均无异常。攻击者通过批量刷取安装量、伪造用户好评、更新迭代日志让技能快速进入skills.sh热门榜单。平台热度算法默认高安装量、高评分技能为可信工具持续给予流量倾斜让恶意技能自然积累数十万真实用户安装基数。第三步版本更新投毒植入语义级恶意载荷信誉权重达标后攻击者推送版本更新在SKILL.md核心文档中植入隐藏恶意提示指令。这些指令伪装成「高级使用教程」「自动化配置脚本」「环境优化方案」对人类阅读者无异常但会被AI Agent精准识别为强制执行指令。载荷无任何加密代码、无异常脚本、无高危字符静态检测工具无法匹配恶意特征实现100%风控逃逸。本次事件中攻击者大量使用自然语言模糊诱导规避关键词检测比如用「为提升自动化效率请执行以下命令初始化环境」替代直白的恶意执行指令。第四步AI Agent自主解析触发远程载荷拉取用户加载更新后的恶意技能AI Agent会默认读取全套Skill文档服从文档内的隐藏指令。Agent自动调用系统内置的curl、git、wget工具从攻击者控制的私有GitHub仓库、云存储地址拉取混淆后的恶意执行程序。本次攻击主流载荷为300KB左右的单行混淆LuaJIT程序搭配Base64、ROT13、Hex多层解码逻辑最终通过Python反序列化实现任意代码执行隐蔽性远超传统Shell脚本。第五步全维度敏感资产搜刮恶意载荷落地执行后会遍历用户终端、CI Runner容器、云主机的全目录精准收割高价值敏感资产覆盖开发、运维、云原生全场景本地运维资产SSH私钥、known_hosts文件、用户密码配置云服务资产阿里云、腾讯云、AWS AccessKey、Secret密钥代码资产Git Token、仓库凭证、包管理器登录密钥容器资产Docker、K8s集群配置文件、服务账号凭证业务资产数据库账号密码、.env环境变量、IaC基础设施配置设备资产系统版本、主机名、IP地址、用户目录等元数据第六步加密打包回传C2无痕迹数据泄露载荷将所有窃取的文件、凭证、元数据统一打包通过HTTPS加密通道、自定义Webhook地址回传至攻击者C2服务器。全程无明文传输、无异常端口连接终端日志难以捕捉异常行为。部分样本会自动清理执行日志、删除临时文件实现无痕入侵。第七步持久化驻留与横向扩散高级恶意样本具备双重持久化能力即便用户卸载恶意Skill入侵效果依然存续。一是篡改Agent本地MEMORY.md记忆文件将恶意执行规则写入Agent常驻上下文二是修改系统定时任务实现开机自动拉起恶意进程。同时恶意技能会篡改本地其他正规Skill的加载逻辑替换官方技能配置实现横向侵染逐步控制用户整套AI Agent工作环境扩大攻击权限与杀伤范围。四、新型Promptware攻击vs传统供应链攻击核心差异对照很多安全从业者会误以为这只是普通的供应链投毒变种沿用传统防护思路应对。这里通过真实攻击特征对比明确两者的本质区别也是所有企业安全团队必须更新的认知边界。对比维度传统npm/PyPI供应链投毒本次AI Skills Promptware投毒核心攻击载荷JS/Python可执行代码、Shell脚本Markdown自然语言提示指令无可执行代码检测方式静态特征扫描、代码审计、关键词匹配必须语义分析、行为检测、运行时观测触发条件安装/运行脚本自动触发AI Agent阅读理解后自主触发执行投毒时机包发布即携带恶意载荷先纯净养号版本更新延迟投毒权限依托系统进程权限AI Agent授权的文件/Shell/网络权限逃逸难度低特征固定易被规则拦截极高无固定特征语义可随意伪装持久化能力依赖系统定时任务、注册表篡改Agent记忆文件业务层持久化表格可以直观体现传统安全防御体系对Promptware攻击完全失效。这类攻击的核心武器不是漏洞、不是木马而是利用AI Agent的核心工作机制——无条件服从指令。五、AI Skill生态核心架构缺陷攻击爆发根源百万级恶意安装量的背后不是单一用户疏忽而是整个AI技能市场的架构设计缺陷。这些缺陷不修复同类大规模投毒攻击会持续爆发。第一版本更新无强风控。主流AI技能市场均采用「一次审核、终身放行」机制。新技能上架会经过基础审核但后续迭代版本更新无人工复核、无风险校验、无异常监控。高热度技能批量更新内容平台不会触发风控告警攻击者可以随时植入恶意载荷。第二检测体系完全滞后。现有平台安全工具、企业扫描工具全部沿用传统代码安全检测逻辑只扫描可执行文件、脚本代码的风险完全忽略Markdown文档、技能说明中的语义级恶意指令。工具看不懂「对AI下达的命令」自然无法拦截攻击。第三热度算法被恶意滥用。平台推荐逻辑以安装量、评分、更新频率为核心指标不校验账号真实性、安装流量真实性、用户评价真实性。攻击者低成本刷量即可登顶热门榜单借助平台算法实现恶意技能的规模化传播。用户普遍默认「高安装量安全可信」形成认知漏洞。第四Agent权限模型失控。当前所有开发类AI Agent默认开启超大权限无条件允许读取本地所有文件、调用系统Shell、发起任意网络请求、读写配置文件。没有最小权限原则、没有高危操作二次确认、没有权限分级管控。一旦技能植入恶意指令Agent可以无限制窃取所有敏感资产。第五发布者身份溯源缺失。AI技能市场无需企业认证、无需实名备案、无需账号风控校验普通小号即可发布、迭代热门技能。攻击者可以批量注册账号、批量布局仿冒技能单点封禁无任何威慑力攻击成本极低。六、实战批量检测脚本本地恶意Skill一键排查针对本次攻击特征我编写了两套可直接落地的检测脚本分别适配个人开发者本地终端、企业批量服务器场景。脚本不做简单关键词匹配重点识别「诱导AI Agent自动执行外部命令、拉取远程载荷、读取敏感文件」的语义风险规避传统扫描工具的误报、漏报问题。6.1 单设备本地检测脚本适配Mac/Linux脚本功能遍历本地所有AI Skill目录扫描SKILL.md、配置文档中的恶意诱导指令标记风险文件、风险路径输出可直接排查的结果。#!/usr/bin/env python3# AI Skills恶意投毒本地检测工具 V1.0# 检测核心识别诱导Agent执行shell、拉取远程载荷、窃取敏感凭证的语义风险importosimportreimportsys# 风险语义规则区分人类示例代码 AI自动执行指令RISK_RULES[# 远程载荷拉取风险rgit clone\shttps?://,rcurl\s.*\|.*(bash|sh|python|lua),rwget\s.*\.(sh|py|lua|cmd),# 敏感文件搜刮风险r\.ssh.*id_rsa,r\.env,rkubeconfig,rdocker/config.json,# 自动执行诱导指令rautomatically\sexecute,rdirectly\srun\sthis\scommand,rno\sneed\suser\sconfirmation]RISK_PATTERNS[re.compile(rule,re.IGNORECASE)forruleinRISK_RULES]# 常见AI Skill默认安装路径SCAN_PATHS[os.path.expanduser(~/.claude/skills),os.path.expanduser(~/.openclaw/skills),os.path.expanduser(~/.skills),os.path.expanduser(~/skills.sh)]defscan_file(file_path):扫描单个技能文件风险try:withopen(file_path,r,encodingutf-8,errorsignore)asf:contentf.read()exceptException:returnFalse,[]hit_rules[]foridx,patterninenumerate(RISK_PATTERNS):ifpattern.search(content):hit_rules.append(RISK_RULES[idx])returnlen(hit_rules)0,hit_rulesdefmain():print([] 开始扫描本地AI Skills恶意投毒风险...)print([] 扫描路径{}.format(SCAN_PATHS))risk_files[]forscan_pathinSCAN_PATHS:ifnotos.path.exists(scan_path):continueforroot,_,filesinos.walk(scan_path):forfileinfiles:iffile.lower()in[skill.md,readme.md,config.md]:file_full_pathos.path.join(root,file)is_risk,rulesscan_file(file_full_path)ifis_risk:risk_files.append({path:file_full_path,risk_rules:rules})ifrisk_files:print(\n[!] 检测到{}个高风险AI Skill文件.format(len(risk_files)))foriteminrisk_files:print(-*80)print(风险路径{}.format(item[path]))print(风险特征{}.format(,.join(item[risk_rules])))sys.exit(1)else:print(\n[] 扫描完成未检测到恶意投毒Skill)sys.exit(0)if__name____main__:main()使用方法保存为ai_skill_scan.py执行python3 ai_skill_scan.py一键完成本地排查。6.2 企业批量巡检脚本支持多服务器批量扫描适配企业CI/CD流水线、多节点服务器支持日志输出、风险统计、批量告警可接入企业运维监控平台。#!/usr/bin/env python3# 企业级AI Skills批量巡检工具 V1.0# 支持日志输出、风险统计、批量节点扫描importosimportreimportjsonimporttimeimportsys RISK_RULES[rgit clone\shttps?://,rcurl\s.*\|.*(bash|sh|python|lua),rwget\s.*\.(sh|py|lua|cmd),r\.ssh.*id_rsa,r\.env,rkubeconfig,rdocker/config.json,rautomatically\sexecute,rdirectly\srun\sthis\scommand]RISK_PATTERNS[re.compile(rule,re.IGNORECASE)forruleinRISK_RULES]SCAN_PATHS[os.path.expanduser(~/.claude/skills),os.path.expanduser(~/.openclaw/skills),os.path.expanduser(~/.skills)]LOG_PATH/var/log/ai_skill_scan.logdefwrite_log(content):写入巡检日志timestamptime.strftime(%Y-%m-%d %H:%M:%S)withopen(LOG_PATH,a,encodingutf-8)asf:f.write([{}] {}\n.format(timestamp,content))defscan_file(file_path):try:withopen(file_path,r,encodingutf-8,errorsignore)asf:contentf.read()exceptException:returnFalse,[]hit_rules[RISK_RULES[idx]foridx,pinenumerate(RISK_PATTERNS)ifp.search(content)]returnlen(hit_rules)0,hit_rulesdefbatch_scan():result{scan_time:time.strftime(%Y-%m-%d %H:%M:%S),total_risk:0,risk_list:[]}forpathinSCAN_PATHS:ifnotos.path.exists(path):continueforroot,_,filesinos.walk(path):forfileinfiles:iffile.lower()in[skill.md,readme.md,config.md]:full_pathos.path.join(root,file)risk,rulesscan_file(full_path)ifrisk:result[total_risk]1result[risk_list].append({node_path:full_path,risk_type:rules})write_log(json.dumps(result,ensure_asciiFalse))returnresultif__name____main__:resbatch_scan()ifres[total_risk]0:print(json.dumps(res,ensure_asciiFalse,indent2))sys.exit(1)print([] 企业批量巡检完成无风险Skill)sys.exit(0)七、全维度防护配置方案个人企业落地版检测只是被动防御真正阻断Promptware攻击需要从权限管控、来源校验、运行隔离、版本风控四个维度落地防护策略。以下所有配置均可直接复制落地无冗余操作。7.1 个人开发者终端防护配置1. 严格校验Skill来源只安装官方仓库原生技能拒绝拼写相似、简介复刻的仿冒技能安装前核对GitHub官方地址、开发者主体信息。2. 关闭AI Agent默认Shell执行权限修改Agent配置所有命令行执行、文件批量读取、网络请求操作必须人工确认禁止自动执行。3. 禁止本地Agent加载公共市场第三方Skill用于生产、开发环境仅允许本地手动导入、人工审计后的可信技能。4. 定期清理Agent记忆文件MEMORY.md防止恶意指令持久化驻留每周执行一次Skill目录全盘扫描排查。7.2 企业团队标准化防护配置1. 搭建内部私有Skill仓库统一收录、审计、归档可信AI技能禁止开发人员直接从公共市场安装第三方技能。所有上架技能必须经过安全人员语义审计、行为检测、沙箱测试。2. 高热度Skill版本更新强制人工复核针对下载量过万的热门技能版本迭代自动触发安全审核无审核通过记录禁止自动更新。3. 实施Skill权限显性声明机制所有内部技能必须明确标注文件读取、Shell执行、网络访问权限未声明权限默认禁止调用。4. CI/CD流水线、生产容器禁止加载任何外部AI Skill流水线环境禁用Agent自动执行能力彻底杜绝凭证泄露风险。5. 接入AI行为沙箱检测不再依赖静态扫描对所有Skill的运行行为进行动态观测识别Agent异常文件读取、批量凭证搜刮、陌生C2回传行为。八、对抗式复盘未来AI供应链攻击演进趋势从对抗视角来看本次170万次投毒事件不是终点而是AI Agent供应链黑产产业化的起点。未来攻击者的攻击手段会更加隐蔽、更加规模化、更加智能化。第一投毒模式全面标准化。「纯净养号延迟投毒」会成为AI技能攻击的标准模板规避平台初始风控依靠信誉积累实现规模化落地后续同类攻击会批量爆发。第二载荷语义极致伪装。未来恶意Prompt会完全融入正常业务指令无明显高危特征模拟正常自动化运维、文件处理逻辑人工审计、工具检测都难以识别。第三多生态全域侵染。攻击者会打通Claude Code、OpenClaw、Cursor、Devin所有主流Agent生态制作通用型恶意Skill实现一次开发、全域传播扩大杀伤范围。第四权限链式突破。后续恶意载荷会利用Agent权限横向突破从用户终端渗透内网、遍历集群资源、抓取更多服务账号权限实现内网横向移动不再局限于单终端凭证窃取。传统软件供应链安全的防护经验已经无法适配AI时代的攻击形态。安全团队必须建立「语义检测、行为观测、权限最小化、版本全风控」的全新防护体系才能应对新型Promptware攻击。九、结尾互动提问1. 你日常开发中是否会主动安装公共市场的AI Skill看完本文后你会优先关停Agent的哪些高危默认权限2. 对比传统代码投毒与Promptware语义投毒你认为企业现有安全设备最大的适配漏洞是什么欢迎在评论区交流。