Transcript
00:00:00如今,AI 智能体技能无处不在。每个智能体都在运行它们,而你却在毫无
00:00:05检查的情况下盲目信任它们。但可怕的部分来了。研究人员研究了超过 3 万种这类技能,其中超过
00:00:10四分之一存在安全漏洞。因此,NVIDIA 开发了一款名为 Skill Spectre 的工具,它
00:00:15能在安装前扫描任何技能,并准确告诉你它有多危险。但有趣的地方在于,
00:00:20有一种攻击方式可以直接绕过它,而真正能捕捉到这种攻击的设置,
00:00:24默认情况下是关闭的,所以大多数人甚至都不知道它的存在。开启该功能通常
00:00:29需要付费,但我们找到了绕过它的方法。最终,我们不仅扫描了技能,还构建了
00:00:34一套完整的工作流,彻底改变了你寻找和安装技能的方式。现在,在进入完整
00:00:39工作流之前,先带大家快速参观一下这个工具及其使用前提。这些是
00:00:44GitHub 仓库中的安装命令。你可以直接复制并交给 Claude Code,它基本上
00:00:49会为你完成全部安装和设置。Claude Code 会安装所有的依赖项,正如你
00:00:54在这里看到的一样。全部完成后,你就可以开始使用 Skill Spectre 了。在 GitHub 仓库里,
00:00:59有一个测试文件夹,里面包含了一些危险技能,你可以实际运行它来
00:01:04确认工具是否有效。我们针对这些技能进行了测试,对于每一个技能,它都提示不要
00:01:09安装。分数越高,技能越危险。每次测试时,它不仅仅是
00:01:14给你一个数字,它会显示导致分值升高的冲突发生的具体行号、精确位置和文件名,
00:01:19这不仅仅是使用该工具的唯一方式,它还有
00:01:24另一种模式。但在了解为什么需要第二种模式之前,你需要知道两件事:技能是如何
00:01:30攻击你的,以及这个工具是如何捕捉到这些攻击的。目前有 14 个类别,
00:01:34但为了简单起见,我们将它们归纳为六类。第一种攻击方式是
00:01:39隐藏指令。你看,技能只是一个包含指令的文本文件,你的智能体读取
00:01:45整份文件并将其视为指令。问题在于,恶意技能可以在里面隐藏额外的指令,
00:01:50你永远看不到,但智能体却能看到。它们被塞进注释中,或使用不可见字符,
00:01:55或者将文本编码成对你来说乱七八糟的乱码,但 AI 可以完美解读。因此,
00:02:01扫描程序专门构建用于追踪并发现这些隐藏指令。第二种方式是
00:02:06冒充。你的智能体有它信任且通过名称调用的工具。假设有一个工具叫 “read”,用于读取文件。
00:02:12那么恶意技能会给自己的工具起完全一样的名字,
00:02:17你的智能体就会因为误认为是它已知且安全的那个而使用了恶意的那个。他们使用的方法
00:02:22非常狡猾。他们用来自其他字母表的长相相似的字符替换了一个字母。例如命名为 “read”,
00:02:27但其中的 “A” 其实是一个看起来和我们的一模一样的俄文字母。对你和你的智能体而言,
00:02:33一眼看上去是一样的词,但底层其实是完全不同的工具。扫描程序通过
00:02:38检查每一个字符的真实身份来捕捉这种情况,它能发现那个伪造的字母并
00:02:43将其标记。第三种方式是技能对自己功能的描述撒谎。描述说的是一套,
00:02:48代码做的却是另一套。它自称是一个简单的格式化工具,却悄悄在后台
00:02:53连接到互联网。或者它声称只需要读取文件的权限,但代码实际上
00:02:58正在执行写入文件和运行命令的操作。这种情况更难检测。这就是那
00:03:03第二种模式的用武之地,但我们稍后再说。第四种方式是技能窃取你的凭据。
00:03:08这可能包括你的 API 密钥、密码。技能会扫描你机器上保存的
00:03:13所有密钥,将它们收集起来并发送到某个服务器。第五种方式是直接运行
00:03:18恶意软件。这包括诸如反向 Shell 之类的攻击,它基本上让陌生人
00:03:23远程控制你的整台计算机。由于这种恶意软件有已知的指纹,
00:03:28扫描程序会将代码与庞大的指纹库进行匹配。第六种方式是
00:03:32投毒依赖项。技能通常会使用 CLI 工具,也就是它在终端中运行的一小段外部程序
00:03:39来处理部分工作。恶意技能会抓取一个实际包含恶意的组件。
00:03:44也许是一个拼写上只差一个字母的流行包名。所以你错误地下载了它,
00:03:49它就会像前一种方式那样运行恶意软件。因此,扫描程序会将技能拉取的每个包
00:03:54与已知的恶意数据库进行比对。它会标记虚假名称以及下载和运行
00:03:59命令,从而确保系统安全。在第一种模式下,它只是在没有上下文的情况下进行模式匹配,
00:04:05这意味着它最终会标记一些完全没问题的代码。这就是我们所说的误报。
00:04:09这就是第二种模式——AI 扫描的作用,开启它很简单。你只需要
00:04:14添加这个 no LLM 标志,它就会执行这里的第二次扫描。但如果你查看代码,你会发现
00:04:20要对技能执行 AI 检查,你需要填入 OpenAI 密钥。为了绕过这个成本,
00:04:26我们直接使用 Claude Code 本身来运行 AI 检查。Claude Code 中的主智能体实际上
00:04:32并不亲自执行。我们使用的是 Claude 的 headless 模式,也就是 Claude Code 在后台运行,
00:04:38没有聊天窗口,只是自主执行命令。我们相信大多数人都知道这不是免费的,
00:04:43但使用 Anthropic 计划会有每月额度。你可以直接要求 Claude Code
00:04:48进行刚才提到的修改,它就能为你完成。当然,你可能会遇到一两个 Bug,
00:04:52但这只需要一个 Claude 能为你设置的单行提示词。如果你喜欢视频内容,
00:04:57请订阅频道并点击点赞按钮。这种小小的支持对我们来说意义重大。
00:05:03他们的测试文件夹中也有一些确实需要 AI 检查的危险技能。当你
00:05:07对其中一个运行 no LLM 检查时,得分为零,这意味着它是完全安全的。
00:05:12但当你运行 AI 检查的瞬间,分数直接跳到 100,它会提示你不要安装,
00:05:17并清晰地列出原因。但如果除了检测技能中的问题,
00:05:22扫描程序还能帮你修复它们呢?这就是我们将扫描程序变成一个技能的原因。而且
00:05:27你可能想问为什么要叫 Discover Skills?因为我们不仅仅做了一个
00:05:31单独的技能。我们构建了一整套流程,帮助我们发现更多技能,并确保它们在安装前
00:05:36是安全的。我们使用 skills.sh 来寻找新技能已经有一段时间了。它基本上是一个
00:05:42专门为技能构建的 git 仓库。一个巨大的共享库,你可以从中拉取内容。我们认为他们
00:05:47最近发布了 CLI 更新。所以现在 Claude 可以直接通过命令行运行搜索查询,
00:05:53并在安装任何东西之前拉取它需要的最佳技能。我们希望我们的扫描程序
00:05:57能够在其基础上运行。在这里,我们有 scan.sh,这是实际运行
00:06:02Skill Spectre 的脚本。因为 Skill Spectre 是一个 CLI 工具,它必须作为一个命令运行。所以我们编写了一个完整的
00:06:08脚本,并将 Claude headless 模式的修复代码嵌入其中。默认情况下,它执行常规
00:06:13检查,但如果需要,它也会运行 AI 检查。如果你打开 skill.md,可以看到基本的
00:06:19步骤。它先识别目标,然后进行扫描,接着展示结果。一旦它知道
00:06:24问题所在,它会着手修复,然后再次运行整个循环以确保
00:06:28一切都是干净的。举个例子,我们现在展示的这个文件夹是我们 AI labs 的设计
00:06:34文件夹。基本上是将我们的整个设计流程压缩在一个文件夹里,里面包含了很多技能。
00:06:39我们对此有一个完整的视频。最重要的是,整个系统都可以在 AI labs
00:06:44pro(我们的社区)中获得。所以如果你想支持频道并获取这套完整的设计系统,
00:06:49去看看吧。这个探索技能也会上传到那里。链接在描述里,
00:06:54但我们正在此基础上构建。我们正在添加一个新的 make design.md 技能,
00:06:59它列出了从你已经构建的应用程序中提取设计令牌的最快方法,基本上是
00:07:04颜色、字体和间距规则,并将它们合并到一个 design.md 文件中。在这里,我们想要创建
00:07:10这个 design.md 文件。所以我们告诉它我们想要改进它,并且它应该去搜索其他
00:07:15工具。它使用了 skills.sh,然后我们加载了探索技能,它拉取回来了一
00:07:21把技能。这些是它带回来的技能,前两个看起来很有趣。所以我们想要
00:07:26深入研究。我们要求它安装并测试它们两个。就像探索技能工作流
00:07:31中说的那样,它不会在扫描之前安装任何技能。它安装了它们并阅读了它们,
00:07:36并直截了当地告诉我们,这两个都不能帮助实现 make design.md 技能。但从
00:07:41安全角度来看,第一个得分为 10,这意味着它是安全的,第二个得分为
00:07:46100,意味着不要安装它。所以我们告诉它对第二个技能运行 AI 检查。它再次通过
00:07:52Claude 的 headless 模式运行,这次分数变成了零。这意味着该技能
00:07:56是可以安全使用的。这正是这个系统的全部意义所在。你不是在盲目地从
00:08:01互联网上抓取技能。你有一个完整的流程,只需使用一个技能就可以启动它。现在让我们
00:08:06听听我们的赞助商 Nimblist。如果你使用 Claude Code 或 Codex,你就会知道这个问题。你有多项
00:08:12会话在运行,文件到处都在变化,你不断地在终端、浏览器
00:08:17和编辑器之间切换,只为了跟踪智能体在做什么。Nimblist 是一个开源的可视化工作区,
00:08:23它把一切都放在一个地方。我有三个智能体同时在项目的不同部分工作,
00:08:28不必在窗口间跳转,我可以在看板上看到所有这些,跳进
00:08:33任何会话,查看红绿色的代码变更差异,并单独批准或拒绝它们。我
00:08:38在智能体旁边直观地编辑 Markdown 文档、UI 模型和架构图。当我
00:08:45完成时,我不必手动清理提交,因为它根据变更自动生成了 git 提交信息。
00:08:50任务保持与实际会话的连接,甚至还有一个移动应用程序,可以在你
00:08:56离开桌面时继续会话。Nimblist 是完全免费且开源的,
00:09:00你可以通过置顶评论中的链接查看它。视频到这里就结束了。
00:09:05如果你想支持频道并帮助我们继续制作这样的视频,可以通过
00:09:10使用下方的超级感谢按钮来做到。一如既往,谢谢观看,下期视频见。
Community Posts
No posts yet. Be the first to write about this video!
Write about this video