对话ScaleBit:Web3安全审计那些趣事
文摘
2024-07-08 17:02
广东
7月1日,极客Web3邀请到了Web3安全审计公司ScaleBit联创Luis,解答关于代码审计与Web3安全的诸多问题。期间双方从商业和技术等角度,围绕代码审计和Web3安全乃至于ZK、AI、比特币生态等展开了讨论,涉及问题包括:ScaleBit最初为何选择Web3安全方向并扎根于MOVE生态;ZK电路审计的复杂之处在哪里、Scalebit为此做了哪些努力;Chatgpt等AI类工具对代码审计行业的冲击与帮助;本文是此次访谈的文字版整理,大约7000字,期间Luis结合自身经历对Web3安全行业的诸多事宜进行了比较详实的科普。对于不了解Web3安全和代码审计行业的人而言,本文将是了解审计机构的绝佳机遇,强烈建议阅读收藏转发。1. Faust: 我想问的第一个问题是关于创业方向的。ScaleBit在创立之初,为何选择Web3安全这个方向?Luis:我们当初看中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电路漏洞检测工具。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安全的一部分。