面向 Solidity 的经济分析

找出真正动到钱的漏洞。

Scorpio 分析公开的 Solidity 仓库,重建价值的流动路径,并在漏洞流向赏金计划或生产环境之前交付可复现的证据。

付费前先预检 以 USDC 通过 x402 付费 交付可验证
ENGINE / LIVE CATALOGONLINE
STATE
VALUE
ACCESS
Scorpio 标志
127MODULES
49STATIC CHECKS
0可达模块已部署引擎的指纹
0经济类别按风险归类的覆盖范围
0静态扫描已列入当前目录
0无法读取的模块目录端到端可读
01 / 方法

从仓库到一份可以核对的证据。

Scorpio 把每一次分析都当作一条技术保管链。先判断仓库是否在范围内,然后编译、建模,并为结果加上封印。

01

受理

核对公开 URL、commit 以及自有代码的真实规模。

免费 · 无任何约束
02
{ }

编译

解析 Foundry 项目,并把自有代码与依赖分开。

隔离环境
03

经济地图

追踪状态、权限,以及价值可能流动的路径。

跨合约上下文
04

扫描

运行适用的类别,并优先排列具有经济影响的信号。

确定性引擎
05

交付

撰写按优先级排列的发现报告,并连同所分析的确切 commit 一起返回。

结果可复现
02 / 付费之前

先看你的仓库是否在范围内。

预检会在开启任何付款之前,分别统计自有的与第三方的 Solidity 代码,而且是由真实的服务来做:克隆仓库并读取它的目录树,不编译,也不运行其中任何代码。预检免费、带配额;不在范围内的仓库会在这一步被拒绝,而不是先收钱再失败。

  • URL 与 commit 已确认
  • 自有代码与第三方代码已分开
  • 授权付款之前价格已确定
SCORPIO / PREFLIGHT运行中
git:
产品完整审计 · 149 USDC

完全免费,不用付任何钱。服务会克隆仓库并通过读取目录树来统计其中的 Solidity 代码,不编译,也不运行其中任何代码。耗时几秒,带配额。

04 / 测量

在第一份公开的基准测试里,每条告警带来的有效信号更多。

在 CodeHawks 的五个官方案例中,Scorpio 对上了官方清单里的 12 项发现,Slither 为 5 项;总告警数 Scorpio 为 26 条,Slither 为 63 条。

092026 年
9 月
引擎 890777…
i

这是五场比赛的小样本,不能用来证明整体上更强。Scorpio 这一列测于 2026 年 9 月 9 日,使用引擎 890777033a8fc952…,重复执行三次且结果一致。已部署引擎的指纹显示在本页顶部:若与之不符,说明该测量出自更早的引擎,并未用今天的引擎重跑。Slither 这一列用的是 0.11.5 版本,跑在同样冻结的案例上,测于 9 月 6 日;两个日期之间 Slither 没有变化。

!

那 14 条没对上的是什么——把它们叫作“错误”并不准确:四条属于提示性严重度,其中三条是合约缺少事件的提醒,一条是关于代币假设的说明,都是引擎有意提供的背景信息,本来就不参与漏洞清单的比拼;三条说的是代码里确实存在的事实,即 ERC-20 转账的返回值没有检查,只是比赛没有把它认定为发现;还有一条是单向开关,引擎把它标为可疑,因为那到底是不是有意为之,只能由人来判断。

!

剩下的六条里,有五条和官方清单中的某一项其实是同一个漏洞,只是名字不同。比对程序要求检测器的名称与标签所属的类别一致才算配对,所以当引擎确实找到了漏洞、却按成因而不是按后果去命名时,计数会罚它两次:标签算作没找到,发现算作不正确。这五对已经逐一核对过,合约相同,其中四对连函数都相同:refund 里那把永远不上锁的锁,就是 CH-05 的重入;可以被改写的期限是 CH-07;claimants 上没有上限的遍历是 MC-08;没有绑定实现的签名是 SP-01;缺少 typehash 的摘要是 SP-02。第六条说的是一件真实存在、但清单没有收录的事。

i

这样的认定是人工的,而且不是中立的:做认定的正是开发引擎的人。所以本页以机器统计的数字为准。如果把这五对算进去,就是 17 条对上、9 条没对上,也就是 65,4 % 的精确率和 35,4 % 的召回率。写出来是为了让人看清差距从哪里来,不是为了把它算进成绩。

Scorpio52,6%
10 TP · 9 FP
SSlither7,9%
5 TP · 58 FP
48 项官方发现5 / 5 个案例已执行15 / 15 次执行结果稳定
05 / 如何自我检验

一个会检验自己的引擎。

每个检测器面前都放着两份合约:一份是写来让它报警的,另一份几乎一模一样,是写来让它不报警的。任何改动只要破坏其中之一,测试库就变红;而测试库不是绿的,就不会构建对外接单的镜像。

0测试库合约为检验引擎而写
0植入的缺陷201 个全部捕获
0健康对照一个都不误报
0变异率 %以可被杀死的部分为分母
i

变异评分会故意改掉引擎里的一行,然后确认测试库能察觉。察觉不到的,都会逐条写下理由:为什么那一行不可能改变结果,或者需要什么样的用例才能触发。今天没有任何一条还没读过。

06 / 覆盖范围

十个类别,用来追踪经济风险。

每个类别都汇集了一组扫描,针对某一种具体的手法:打破不变量、窃取权限,或者把价值引走。

01
±

账目

余额、舍入、手续费与价值守恒。

6 项扫描
02

预言机

价格、新鲜度、量纲,以及可被操纵的依赖。

4 项扫描
03

签名

重放、域分隔、nonce 与密码学授权。

8 项扫描
04

权限

角色、setter、初始化与控制权提升。

7 项扫描
05

重入

外部交互与不安全的状态变更。

4 项扫描
06

存储

槽位冲突、布局,以及升级之后的数据损坏。

4 项扫描
07

状态机

不可能的状态转移、卡死与阶段跳跃。

6 项扫描
08

资金被困

缺少出金路径,或者出金条件永远无法满足。

4 项扫描
09
0x

编码

选择器冲突、calldata 与序列化上的假设。

5 项扫描
10

随机性

可预测的随机源,且会影响经济结果。

1 项扫描
07 / 结果

一份留得下痕迹的交付。

报告把每一条信号连回代码中的具体位置,并连同产生它的那个确切 commit 一起交付。

SCORPIO_REPORT
FINDING / ECONOMIC

价值不变量存在缺口

HIGHCONFIDENCE 0.86

report.md
commit
tree
01

按优先级排列的发现

严重度、置信度、位置,以及预期的经济后果。

02

技术证据

代码路径,以及足以复现该信号的上下文。

03

来源

所分析克隆的确切 commit 与目录树,随报告一并返回。

04

没有测到的部分

只要有任何一项扫描没有跑完,订单就会标为 INCOMPLETE,报告里也会写明。沉默不会被当成“什么都没有”来呈现。

08 / 立场

Scorpio 断言什么。
以及不断言什么。

确实交付

  • 自动化且可重复的分析
  • 按经济影响排定优先级
  • 与所分析代码绑定的证据
  • 确切的 commit 与报告的封印
  • 明确写出执行状态

× 不承诺

  • 零误报
  • 覆盖全部漏洞
  • 每次都能找到漏洞
  • 等同于人工审计
  • 自动符合赏金资格
09 / 问题

在启动一次分析之前。

最重要的技术与商务条件,讲清楚,不留小字。

阅读完整条款
Scorpio 能取代人工审计吗?

不能。它缩小搜索范围并提供可重复的证据,但既不证明合约安全,也覆盖不了人工审查中的全部推理。

今天可以分析什么?

与 Foundry 兼容的公开仓库,需通过预检,自有 Solidity 文件最多 1.200 个。当前开放的产品不读取链上状态。

什么时候收费?

先跑免费的预检。如果仓库在范围内,Scorpio 会返回确切的报价。x402 付款通过验证之后,分析才开始。

如果引擎失败会怎样?

订单会停在 FAILED 状态,并按条款退还服务价款。不属于 Scorpio 的网络手续费不在退款范围内。

需要多长时间?

目录中对当前产品的运行时间估计约为五分钟。这是技术估算,不是服务等级承诺:规模、编译和排队都可能改变总时长。

DONE 和 INCOMPLETE 是什么意思?

DONE 表示预定的交付已经完成。INCOMPLETE 表示存在部分交付,且其局限已写入文档。PENDING 与 FAILED 分别表示执行尚未完成或已失败。EXPIRED 出现在 30 天保存期结束、交付已被删除之后。

可以提交私有仓库吗?

当前产品不支持。请不要发送凭据、令牌或私有 URL。这项公开服务是为无需认证即可访问的仓库设计的。

结果要怎么验证?

每一笔订单都会返回所分析克隆的确切 commit 与目录树,因此任何发现都可以指向一个具体的修订版本,随时回头查看。当前运行的引擎版本连同其内容指纹,公开在 /health

SCORPIO / AUDIT-149

在把价值交出去之前,
先把代码看清楚。

预检免费,会在生成付款请求之前先确认范围。

检查仓库