跳到主要内容
SaferICO SaferICO智能合约安全
免费工具——不存储任何内容

一个 skill 就是代码, 而你没读就运行了它。

合约你会先读再部署。skill 也该先读再安装。一个一行就能装上的配置文件,可以打开一个 shell、读取你的凭据库并把它发到某个地方——而这些在渲染好的 README 里一点都看不见。这个工具检查 21 类从结构上就危险的模式。它不是合约审计,而且每一份结果上都会这么写。

免费,无需账户什么都不存储21 条规则,其中 6 条为严重不给分数
//它找什么

从结构上 就危险的东西

危险在于这个配置的形状,而不在于对某人动机的猜测。文件名决定哪些规则会跑——只是引用这些写法的散文,不会触发仅针对配置的规则。

执行

把一个 shell 当作 MCP 命令。把下载直接管道进 shell。以 / 或 ~ 为根的递归删除。用参数关掉沙箱和权限确认。从临时目录里引用可执行文件——那种机器上任何东西都能改写的地方。

凭据

把还有效的 API 密钥和私钥材料提交进一个会被分享和安装的文件。把智能体指向 ~/.ssh、~/.aws 或 .env——只要旁边还有任何对外能力,这就是一条完整的外泄路径。

外泄

一次性的收集端点。塞在配置里的聊天 webhook——那本质上是写在 URL 里的写入凭据。指示智能体把文件内容、环境变量或对话发到某个远程地址。

提示词注入

指令覆写。身份重设。藏在 HTML 注释里的祈使句,在渲染视图里看不见,对模型却完全可见。零宽字符和双向覆写字符——它们让评审者读到的和模型收到的成为两份不同的文档。

权限

通配符命令授权,白名单从那一刻起不再是白名单。以及指示智能体不经确认就行动——而那恰恰是一条被注入的指令要发挥作用所需要的状态。

供应链

每次启动都安装并执行的未钉版本的包。从分支而不是从某个提交获取代码,于是被评审的内容和被执行的内容,可以只差一次推送。

工具本身(扫描器、控制台、SAFI 工作区)目前仍是英文界面。这些页面用中文把一切讲清楚,方便你进去之前先看明白。

这不是 一次合约审计

这件事重要到必须放在其他所有内容之前说,因为两者住在同一个网站上,而其中一个的截图绝不能被误当成另一个。

⚖️ 「通过」意味着什么

意味着这些模式一个都没出现。不意味着这个文件可以放心运行。

一个 skill 完全可以充满恶意却不匹配任何已知模式。读一读你安装的东西。

01Solidity 引擎与这个扫描器的区别

Solidity 引擎面对的是一门有规范、有类型系统的语言,「这个函数会转移资金而且任何人都能调用它」是一个可判定的性质。所以它给出分数。

这个扫描器匹配的是散文和 JSON 里的模式。让一个 skill 变得危险的是意图,而意图不可判定。所以它给出通过/警告/失败,并且刻意不给分数。

02什么都不存储

文本被读取、被匹配,然后被丢弃。没有一行记录、没有缓存、没有一条日志带着它。

这个页面每次读一个文件,最大 128 KB。文件名决定哪些规则会跑,所以只是引用了这些写法的说明文档,不会因此被误报。

03在文件真正所在的地方跑它

同一套规则也随命令行工具发布,它会遍历整个目录、不需要 API 密钥,也不向任何地方发送任何东西:npx saferico skill ./my-skill。

scan_agent_config 这个 MCP 工具把同一套规则暴露给一个正准备安装什么东西的智能体——这样检查发生在文件被信任之前,而不是之后。

//常见问题

关于 配置扫描

我贴进去的文件会被保存吗?
不会。文本被读取、匹配,然后丢弃。没有数据行、没有缓存、也没有任何一条日志带着它。
为什么它不给分数?
因为让一个 skill 变得危险的是意图,而意图不可判定。给一个分数会暗示这里存在一种它并不具备的精确度,所以它只给通过/警告/失败。
「通过」是不是就代表安全?
不是。它只代表这 21 类模式一个都没匹配上。一个 skill 完全可以充满恶意却不匹配任何已知模式——请读一读你安装的东西。
能扫整个目录吗?
这个页面每次读一个文件,最大 128 KB。整个目录请用 npx saferico skill ./my-skill,它在本地应用同一套规则,不上传任何内容。
支持哪些文件?
mcp.json、SKILL.md、claude_desktop_config.json、各种设置文件——凡是你正准备安装的那一个。文件名决定哪些规则会跑。

转账之前,先扫一遍合约

粘贴合约地址,在冒险之前先看清所有者权限、流动性和卖出模拟结果。每次扫描收取一笔小额费用,签名前会先显示金额——订阅任意套餐后则无限次包含。