Web3 安全和代码审计的事情,可能比你想的更有趣。
采访者:Faust、雾月,极客 Web3
受访者:Luis,ScaleBit
编辑:Faust、Jomosis
7 月 1 日,极客 Web3 邀请到了 Web3 安全审计公司 ScaleBit 联创 Luis,解答关于代码审计与 Web3 安全的诸多问题。期间双方从商业和技术等角度,围绕代码审计和 Web3 安全乃至于 ZK、AI、比特币生态等展开了讨论,涉及问题包括:
- ScaleBit 最初为何选择 Web3 安全方向并扎根于 MOVE 生态;
- 代码审计行业的商业逻辑与客户层级划分;
- Web3 安全与 Web2 安全的区别与联系;
- ZK 电路审计的复杂之处在哪里、Scalebit 为此做了哪些努力;
- 从运营和技术角度对比特币生态及二层的看法;
- Chatgpt 等 AI 类工具对代码审计行业的冲击与帮助;
本文是此次访谈的文字版整理,大约 7000 字,期间 Luis 结合自身经历对 Web3 安全行业的诸多事宜进行了比较详实的科普。对于不了解 Web3 安全和代码审计行业的人而言,本文将是了解审计机构的绝佳机遇,强烈建议阅读收藏转发。
1. Faust: 我想问的第一个问题是关于创业方向的。ScaleBit 在创立之初,为何选择 Web3 安全这个方向?
Luis:我们当初看中 Web3 安全这个方向,其实主要是以下几个原因:
第一,我们团队很多人从硅谷进入区块链圈比较早,更希望找到长期、稳定的用户需求,而代码审计恰好是很基础、能长期存活的一个赛道,所以我们选择了这个方向,而且我们更希望的是成为一家受行业尊敬的安全公司。
第二,我们认为Web3 安全处在非常早期的阶段,但在 Web3 里安全问题比传统互联网安全重要很多,因为前者是跟金融资产直接关联的,肯定比传统互联网安全更有价值。
虽然现在有人认为,合约审计相关的业务天花板有限,但其实 Web3 安全除了合约审计外,还有更多的新业务在不断涌现,各种新需求也会持续的出来,所以我们觉得 Web3 安全 / 代码审计这个赛道还是非常好的。
第三,我们团队成员的背景和代码审计 / 区块链安全交集比较多。我们在安全行业的积累较多,我之前是另一家区块链安全公司的创始成员,我们的首席科学家陈厅老师也一直在做区块链安全相关的研究,是一位在 Web3 安全领域有很多积淀的教授,其他成员也有交易所安全、形式化验证、静态分析的背景。
基于这些原因,我们最后选择了 Web3 安全这条路。
2. Faust: 听说 ScaleBit 一开始叫 MoveBit,后来品牌升级用了 ScaleBit 这个名字。您能说说你们最初为何选择 Move 生态,以及之后为什么改名吗?
Luis: 这其实算是我们的品牌升级,母品牌是 BitsLab —— MoveBit、ScaleBit、TonBit 三个子品牌我们都在用,就是个多品牌策略,我们也从 Move 生态拓展到了更多生态,整体的定位都是在新兴生态上的安全和基建。
关于最初为何选择 Move 生态,中间有个小故事:就在差不多 2022 年,我们在切入安全审计这个方向时,花了三个月来研究最适合深耕的细分领域。当时我们认为,如果做一个全品类的安全公司,很难卷过市面上的竞争对手,所以要找一个单独的赛道切进去。
我们讨论过几个方向,一个是 Move,然后是 ZK,此外我们还构思过做一个垂直的、比如说专注于 GameFi 或某类业务的审计品牌,总之策略就是单点突破,后来我们综合各个因素选了 Move 生态。
那个时候就我们还只有七八个人,在 Move 生态做的比较成功。Move 生态里 TVL 排前二十的头部项目,大概有 80%~90% 都是由我们审计的,我们还审计了 MoveVM、Aptos Framework 等重要链底层组件,也挖了不少链底层漏洞。所以在 Move 赛道,我们的市场占有率很高。
我们现在也还在 Move 生态里接代码审计的业务,目前这块占我们营收的 50% 左右,审计工作量占我们的 40% 左右。因为 Move 生态有代码审计需求的海外客户多一些,所以这类业务单价会高一些。
目前,TonBit 主要做 Ton 生态审计,ScaleBit 做 BTC Layer2 生态、ZK 以及其他新生态。我们 BitsLab 整体的定位是聚焦新兴生态,关注有 Mass Adoption 潜力的生态。
3. Faust: 这里想问下关于 ZK 的问题。与 ZK 相关的审计工作很麻烦,Vitalik 之前也说,像 zkEVM 这类系统的电路太复杂,即使有功能性测试或审计,还是无法保证电路不出问题。这块您能否结合自己的经验来讲讲吗?
Luis: ZK 相关的审计分很多方面,其中主要分为电路审计,源语审计和通用计算审计,我先说下电路审计这块。
电路审计的一大难点在于,电路代码相较于传统编程语言,其可读性很差;而且电路语言相关的生态是很碎片化的,目前可能有十几种写电路的语言和框架,其中包括 Circom,Halo2,Artwork,Bellman 等等,因此目前电路编写并没有一个统一标准。
显然,对于任何一个安全机构来说,同时精通所有的电路语言基本是不可能的。因此,我们有所选择的切入了 ZK 的领域。目前我们在 ZK 赛道主要做了两件事,一个就是和 Scroll、EthStorage 以及安比实验室的郭宇老师共同举办了 ZK 安全夺旗赛(zkCTF),这个比赛大概每年一次。举办这个比赛主要是为了培养更多的 ZK 安全人才。
另一件事是,我们做了一个漏洞检测的工具——zkScanner,主要是用一些形式化和静态分析的方法去扫描 ZK 电路上的漏洞。zkScanner 初步扫描电路后会找到一些可疑的点,然后再交由人工去确认,可以作为人工审计的补充。当然,这种自动化的审计工具还没法完全取代人工审计,但它在发现一些较为隐蔽的 constraint,即约束问题上还是比较有效的。
雾月: 您提到的这个自动化审计工具,是像那种检测 ERC-20 Token 的静态检测工具吗?
Luis: 有点像但还不够恰当。它们类似的地方在于工作流:扫描静态代码,并给出漏洞位置和原因。不同之处在于,电路关注的错误主要分为两类,即 Under-Constrain 和 Over-Constrain;于此同时,普通的词法分析难以找到这些错误。
雾月:如果光说 Constraint 约束的话有点抽象,可以举例讲下它是什么样的么?
Luis: 我觉得可以从侧面看这个事,本质来看,电路其实是比智能合约语言更偏数学的表达形式,其最终需要被转换为 R1CS,可以理解为一种纯粹的多项式表达。因此,一些在常规程序中可能出现的问题,在电路中反而比较少见。
因为电路实际上「不会错」,每个电路都需要用正确的 input 和 output 去生成对应的 proof,如果电路中有错误,那么它就无法通过编译。这保证了电路计算的结果一定是「正确」的。但仅仅是「正确」,对于电路而言并不足够,它需要在所有的情况下都「正确」,这就引出了之前两个 constrain 的问题。
如果 Over Constraint 了,就会存在一部分符合要求的输入无法通过电路;如果是 Under Constraint 的话,会把不符合要求的变得符合要求,这都是很致命的问题。
雾月: 所以这些问题也是编译器发现不了的,属于他自己在设计电路前面的那些前置条件,它表达的时候是有问题的,是这样吗?
Luis: 是的,因为这些问题并不完全是语法层面的,它也涉及到了开发者的意图,以及一些密码学中的常见规范。具体来说,这些问题往往需要采用形式化工具,例如 SMT-Solver 去发现它们。
4. Faust:从商业角度,您对 ZK 相关的审计业务怎么看?
Luis:ZK 相关的审计业务是值得长期关注的,ZK 审计这块我们一直在持续积累。包括我们后来在 Bitcoin 生态里做审计,也是因为发现 Bitcoin 生态那边跟 ZK 有很好的结合,而以太坊生态的 ZK Layer2 叙事已经有所退潮了,ZK 赛道上的下一波叙事还没正式到来,也许会和 FHE 相关。
当然我们正式进入 ZK 审计领域不算早也不算晚,更多是在一个长期关注、长期积累的阶段。我们在业务层面上持续以前面提到的两样东西为主线,一个是 zkCTF,一个就是 zkScanner,也就是上面说的 ZK 电路漏洞检测工具。
雾月: 可以简单介绍一下 zkCTF 这个活动么?
Luis:这是我们发起的和 ZK 领域相关的 CTF( 安全夺旗赛 ),一年举办一次,会邀请行业里比较顶尖的安全研究人员,以及 ZK 的研究者来参加。我们会联合 Scroll、EthStorage 以及安比实验室的郭宇老师一起给参赛者设置题目,也得到了 Ingonyama、zkMove、 HashKey 等机构的大力支持。
参赛选手的名单我们统计过,基本来自全球各地,水平也比较顶尖,包括:
OpenZepplin、Offside、Salus、Amber Group、Sec3 等,还有佐治亚理工和伯克利的一些安全和 ZK 方向的博士生。
5. Faust: 想问一下 ScaleBit 对比特币生态的看法,听说你们之前审计过 30 多个比特币生态的项目,你们对比特币二层怎么看?
Luis: 这里提到的 30 多个比特币生态项目,包括二层或二层生态内的项目,比如说 UniSat、Arch Network、Merlin Chain、RGB++、B² Network 等,还有 Liquidium 等和铭文符文相关的项目,其他的项目很多都是二层生态内的 Defi 协议。
对于比特币二层的看法,我比较认同 Bitlayer 的联创 Kevin He 之前的观点,就是认为比特币二层的竞争会分成三个阶段,第一阶段卷 TVL,第二阶段是吸引开发者,第三个阶段才是技术路线的竞争。我觉得现在还处在第一阶段刚结束,或者刚开始抢开发者、构建生态的阶段。
Faust: 你们在审计比特币生态的项目时,主要都从哪些层面,或者按照什么指标去审?
Luis: 如果是指比特币二层的话,我们分为几个维度,比如有些要审这些项目在比特币链上的脚本,有些还要审它在比特币 Layer2 上部署的合约。有一些审计对象是跨链桥,或是链底层,有些二层可能用的不是 EVM,这些层面都有审计工作要做。
我们主要看这些项目的代码里的攻击面有哪些,从各个维度看它有没有漏洞,这其实是很复杂的,因为比特币二层是类似于公链的系统。行业内审计公链要考察的点,我们都会去看,比如这个项目有没有一些双花攻击、日蚀攻击、女巫攻击 、外部依赖安全,中心化问题、中间人攻击等都要去看,具体要说的话就很细了,可以改天就这个话题专门聊一聊。
我们 ScaleBit 的链审计能力应该说至少是亚洲一流的,团队成员曾挖掘 Sui、OKX Chain、GalaChain、Nervos 等著名公链的漏洞,最近也在 Babylon 的公开审计竞赛中挖到了一个 High 和一个 Low 级别的漏洞。
6. Faust: 以您做安全审计的经验,最容易出安全漏洞的地方是跨链桥么?就我理解的话,很多跨链桥实质是 Defi 的延伸,所以和 Defi 协议一样容易被攻击。对此您怎么看?
Luis: 从频率上来讲,跟 DeFi 相关的地方最容易丢钱,但从金额上来讲,跨越桥被攻击后损失的金额最大,一出问题就会出大问题。当然我说到 DeFi,更多是指合约层面,只要 DeFi 协议的合约出问题就能被攻击,补救的措施也比较少。
至于跨链桥的确是最容易出问题的,因为跨链桥平时关联的资金体量比较大,而且很多都是用的多签,很容易被搞。
7. Faust: 你觉得 Chatgpt 这类 LLM 工具对代码审计工作的帮助,或者说冲击具体有多大?
Luis: 其实帮助还挺大,但更多是辅助性的。有时候审计人员看一些代码,为了快速了解这些代码的作用,会用 Chatgpt 去解析一下这个代码大概干什么的,当然这只是辅助,最终还要靠人来确定很多细节。
还有一块就是写文档和审计报告,特别是英文写作,一些审计人员英语不太 native,就会让 Chatgpt 去润色这些文档,这块的帮助还挺大的。
但是从审计的角度来讲,我们内部也在训练一些特定的 LLM,用一些开源的大语言模型做训练,但目前只是辅助性的,虽然能提升工作效率,但绝对不能完全靠 AI 做审计,只是说可能提升个 20% 左右的效率,距离大规模缩减审计人员数量的那一步还远得很。
现在 LLM 还有两个很明显的短板,第一是漏报的问题,第二就是误报。我们可以用 LLM 做一些漏洞挖掘,但要注意误报率,如果你用了 AI 帮你找代码漏洞,结果它误报率很高,很浪费你时间,反而会带来包袱。但我们会持续关注 AI 的进展,比如能否在工具层面上实现高效率的漏洞挖掘,这块目前还比较前沿,大家都还在探索,但还没看到哪一家说能真的能实现上述效果。
雾月: 对于 AI 自动化代码审计这块,你们认为这会不会是未来的一个重点?按照我的理解,AI 读代码几乎是瞬时的,而且积攒的经验、能穷举的状态都会比人多很多,这是 AI 很大的优势。如果有安全公司在这块深度布局,训练专门的 AI 来做自动化代码审计,超越自己的竞争对手,你们对此怎么看?
Luis:我们一直在关注这个方向,我觉得要从两个方面看:
第一个方面,如果你认为 AI 自动化审计这个事真的能成立的话,就会出现一种情况:
理论上来说 LLM 可以把整个代码审计行业都给和谐掉,因为如果所有人都用 LLM 生成代码,LLM 能保证自己生成的代码没有问题没 bug,那么你就不需要审计了。这个时候他干掉的不仅是审计行业,还干掉了程序员。但要达到这样的效果,难度很大。
如果我们认为 LLM 能干掉审计人员的话,难度一定比干掉开发更难。相比于简单实现出满足需求的代码,写出没有漏洞的代码要难得多,所以我认为 AI 淘汰审计人员比取代程序员还难。
另一个方面是,AI 不是直接上来就把安全审计干掉,而是在某些方向先实现突破。比如前面讲到,AI 可以帮你做漏洞挖掘,虽然没法帮你找到所有 bug,但可以帮你挖出人工审计可能忽略掉的一两类问题,类似这样的应用场景正是我们重点关注的。
8. Faust: 想再问一下您对审计工作本身的看法。你们做审计的时候,具体的工作流程都包含什么?这不只是发一个证书那么简单吧,在看代码的过程中,会顺带帮项目方优化代码吗?
Luis: 这个要看客户需求,有时我们会帮客户的原始代码做一些优化,比如让 DeFi 的某些操作少消耗一些 gas。
至于审计的流程,我大概介绍一下,我们做审计至少有两轮独立的过程:初审和复审,初审的时候有一组人做单独的审计,这时候项目方要针对初始代码进行修改;然后进入复审,复审会有另外一组人继续做代码检查。最终达到的效果就是,至少会有两组人来交叉审计代码。
说到和其他审计公司的区别,ScaleBit 最擅长的做创新业务审计,我们喜欢招有 CTF(安全夺旗赛)背景的人来做审计,他们的学习能力、对各种攻击手段的理解很强。
此外我们跟其他审计公司有一点不同,就是我们更偏精品审计路线,如果我们审计过的代码漏审了 Major 及以上的漏洞,会退还 30%~50% 的费用。这个是别的审计公司不敢承诺的。
9. Faust: 有人认为,安全审计看的其实是品牌背书,就像华尔街评级机构一样,这块的马太效应非常强,像慢雾这种老牌公司有先发优势,护城河很牢固,后起之秀很难跟慢雾这种老牌劲旅争蛋糕吃。对此你怎么看?
Luis: 对于这种观点我部分同意,但也要看不同的情况。比如说,我们按照审计需求把客户分成三种,也就是低中高三档。土狗项目是最低档,往上是中等项目,就是那种有一定实力、但不算明星团队的这种。最高一档就是那种明星团队,资金实力也比较雄厚的。
我们先说最高一档客户,这档客户一般会找 2~3 家以上的审计公司,非常关注代码审计质量。他们可能会先找一些全球最顶尖的审计机构,但这也机构要处理业务太多,可能无法优先满足某些客户的需求,所以很多明星项目团队还会找到一些不那么知名但审计质量过硬的机构来同时把关。
上面提到的这类客户是审计公司最喜欢的,因为他们很有钱,但这种客户也非常关注审计质量,所以他们一般会找多家审计公司,只要你审计能力过硬,都有机会触达到这类客户,所以这类客户是我们主要的客户群体之一。
第二档就是腰部的客户,属于「比较关注审计质量,但不一定有很多钱」,但是未来有潜力成为头部客户的群体。他们虽然希望找到明星审计机构,但不一定出得起这个钱。
这个圈子里真的称得上是「顶级安全公司」的机构,类似于 OpenZeppelin、Trail of Bits 这种级别的,最多也就那么 4~5 家。这几家机构大家都知道他们很牛逼,但价格也非常贵,可能是常规审计公司的 3-10 倍以上。
腰部的客户去找最顶尖的审计机构,人家不一定接。所以对于腰部客户而言,他们与其把预算全拿去找一个头部审计公司,不如把预算给到审计质量过硬的审计机构,还可以找多家审计。这类客户是我们最大的群体,我们也希望和他们共同成长。
最后一种客户就是前面提到的,最下面的那档土狗项目,这种客户基本是谁便宜就找谁,或者花钱找个知名度高的审计机构审下合约。
所以从上面说的几点来讲,你提到的说法对审计行业的评价有一定道理。对于历史积累越多、口碑比较好的审计公司而言,的确有马太效应,但你可以看到有一些老牌的审计公司,虽然知名度很高,但近几年它爆雷爆的也很惨,出各种问题。
不过,作为后来兴起的审计公司,一定要有差异化优势,所以我们的打法就是单点突破:
先切入某个细分赛道并占据绝对优势。比如说在比特币 Layer2 生态里,我们目前的覆盖率已经超过 50% 了,我们在 Move 生态的覆盖率超过 80%,即便是像 OpenZepplin 这样的顶级审计机构也未必能在这些细分赛道和我们 PK。所以所谓的「马太效应」要看其所处环境。
10.Faust: 从你个人角度来看,Web2 和 web3 安全最大的差异在哪?您可以结合自己的过往经历来聊一聊。
Luis: 首先我觉的,Web3 安全从发展阶段来讲,处在非常早期的阶段,而 Web3 安全一定比 Web2 安全的市场更大,因为 Web3 对安全的要求更强烈。
这里我说一个段子,以前有个在硅谷安全圈的华人高管,他曾做到硅谷上市公司的 VP 级别。他说,在硅谷做安全的主要是华人和犹太人两大圈子。那为什么华人能把安全做的这么好,因为安全行业是典型的平时没有存在感,一出事就要背锅的行业,印度人和白人都不愿意做,华人就冒出来了,这是对 Web2 安全公司而言;
但Web3 安全就不一样,因为区块链直接跟钱打交道,所以 Web3 安全的存在感大了很多个量级,而且在这个领域里,很多「安全从业者」可以直接变现,有人曾经调侃说,Web2 向 Web3 转型最成功的就是黑客。
如果从技术层面讲,Web3 安全的内容包括了 Web2 安全的部分,复用了后者的很多技术。现在很多的系统。比如说很多 DeFi 应用很多是有服务器和接口,它也需要传统的渗透测试,DoS 防御等等,其实也是 Web2 安全的一部分。
本文来自极客 Web3,经授权后发布,本文观点不代表星空财经BlockGlobe立场,转载请联系原作者。