导读:Paradigm 的研究合伙人兼安全主管 Sam 是一名白帽黑客,通过负责任地披露漏洞和发布教育资源,在加密生态系统中拯救了数亿USD。在之前与合伙人 Paradigm Dan Robinson 的播客中,Dan 把 Samczsun 称为“加密蝙蝠侠”。每当数字货币生态系统中有很多资金处于危险之中,就会发出蝙蝠信号,Samczsun 就会进去帮助挽救局面。
Samczsun 日前在 WLD Show 播客中谈了自己成为白帽黑客的体验,以下内容是链捕手对本期播客内容的整理:
WLD Show:啥是白帽黑客?
Sam:从宏观角度看,它取决于你做事的初衷好坏,当然好与坏的概念其实并不客观,但总的来讲白帽黑客会去做好事,阻止一些事件的发生,假如他们进行了攻击行为,会第一时间进行揭露,公告当事人。但黑帽黑客就是会带来消极影响,譬如会盗取资金、资产等。灰帽黑客则介于两者之间,他们可能以善意的名号去进行攻击行为。所以这其实是一个非常模糊的界限,他们确实攻击了,但是为了做好事,那这是白帽还是黑帽?但总的来讲,是白帽还是黑帽就是取决于你是不是做的是好事。
WLD Show:你为何选择成为白帽黑客?
Sam:第一当黑客抢钱也是困难的,当然这是开玩笑。我从小被教育就是要照顾其他人,回报社群,那目前假如我能给社会做一些贡献,当然或许结果有好有坏,我就去做了。
WLD Show:帮大家介绍一下黑客的生态系统吧。
Sam:对我而言整个系统的风险非常高,就像一个pvp游戏,当然这是我一个人的一个怎么看,当你发现一个问题或收到问题警报时,你只有几分钟,幸运的话有几小时去处置,这其实非常短的时间,然后大概黑客就会把钱盗走了。特别我近期参与的几个案件中,其实都只有“生死攸关”的几秒钟:要么挽救资金,要么资金永远消失。所以风险是非常高的。
假如你想参与这类活动的话:那第一你对区块链安全要有很好的认知,譬如ETH、智能合约等,然后你就可以开始找新协议、新目的,开始研究和行动。等你一旦找到找到一个漏洞,这个过程就变得很紧张,“时间就一直在滴答作响”,这是一个心理过程:由于漏洞一直在那,你一旦确认它存在,那所有就都变成“真实可触”了,整个过程就非常非常疯狂,要去赶快找到正确的联系人,由于这类数十亿的资产能否被拯救就取决于你的常识。
那最大的挑战就是找到真的开发者,由于这类信息非常或许会被攻击,致使最后钱丢了。那我会感觉这是我的责任:虽然是出于好意,但开发者没收到信息,十分钟后钱还是失窃,虽然法律上可能我不负责,但我一个人会感觉是我的责任。所以整个过程是非常紧张的。一旦我找到研发人发,我立刻把漏洞交给他们,我就感觉如释重负。
最难的部分结束了,下一步就是合作解决,看看是不是有一同行动的可行手段,能否中断协议,用管理密钥拯救资金,或者最坏结果就是直接去拯救资金。我一个人是不发送买卖的,一个是由于责任问题,一个也是由于我也不想做那个“按下最后按钮”的人,所以我会告知研发职员,给他们指导,他们会自己发送买卖,假如需要我的帮忙,那我也会提供帮助。那最后要么大家就是能拯救成功,要么就是出于各种各样是什么原因失败了,这就是一个基本的过程。
WLD Show:不少人发推表示这类救援活动所获奖金与实质拯救的资金相比其实挺让人失望的。你是如何看的呢?
Sam:我感觉这关乎一个问题就是,多少的奖金才算是足够的?每一方都能有不少论点。但有一个现实问题是,不少项目,它们拥有些资金其实都不是为项目所有些,无论是抽取10%、20%,这类其实都是用户的资金,所以其实不是技术员和项目可以决定的。当然有些项目有不少资金,或许可以拿出一大多数奖金,但剩下的超越90%的项目都是没如此很多的资金的。
WLD Show:Web3中白帽黑客与传统Web2有什么区别?
Sam:在数字货币的世界里,所有都是瞬间发生的,譬如你在DOMpurify中发现一个漏洞, DOMpurify据我所知是用Cure 53写的项目,用来清理html, 公司用此来确保系统运行,不会遭到脚本攻击, 譬如确保前端不会遭到跨站脚本攻击。那譬如Google遭到攻击,但用户还能登入注册,那这就非常糟糕了。
譬如说大家目前在DOMpurify中报告出一个漏洞,那样这是需要不少时间去解决的。第一你能发现一个漏洞的概率就非常低,第二发现之后,需要整个的处置过程。在Web2中,这个过程包含譬如启动私人安全邮件列表,打补丁,需要用户升级依靠性等一系列手段。
但在Web3中,你没时间譬如去申请有关资格证书等等,10分钟以内资金可能就会进入新的钱包,20分钟后,钱包就消失了。与Web2相比,你是没譬如说6个月来解决问题的。
所以总的而言,Web3中这类事件的发生和处置时间相对更短,但影响则非常大。
WLD Show:对,这可能也和代码开源有关,由于所有都是透明的。
Sam:是的,譬如至少在ETH中,你要加入社群进行参与,你就要拥抱透明,这不同于譬如SOL,代码是不公开的,但至少也会有代码验证,通常你能在项目页面看到指向譬如GitHub或ETHscan的代码验证链接。所以我感觉协议也要做出改变,譬如推出紧急补丁。总之ETH上的安全问题是十分透明的,每人都可以查询出了什么事。
WLD Show:Paradigm是一家独特的风投公司,有我们的研究团队和不少人才譬如Dan Robinson,那样你为何要加入这家公司呢?
Sam:其实就是被这里有才华的人吸引。有一句谚语大意就是说“你如果屋子里最聪明的人,那或许你该换间屋子。”所以天天能和在各个范围都比我出色的人才一块工作是我向往的。
WLD Show:那样能否介绍下你加入的过程?
Sam:我之前就和Georgios和Dan合作过,在他们发布文章“ETH是一片黑暗森林”后,我就感觉他们的工作做得太棒了。后来就有人联系我是不是有兴趣,当时我还不确定我是不是加入,但通过和团队的人交谈,我感觉这就是一个值得赌一赌的机会。
WLD Show:那你的工作通常是什么?
Sam:平时工作就是支持投资组合企业的工作,确保他们的代码正确,譬如他们要写一份智能合约,我就会帮助他们看看代码,当然我可能没时间审阅全部内容,但就和平常的救援活动一样,我会过一遍,先挑出最重点的问题。我也会做一些我一个人的项目,维护ETH安全,譬如我之前发布了一个用户友好的四字节签名数据库。我也会写一些博文。但总的来讲我作为安全主管,职责就是维护公司安全。
WLD Show:你感觉加入Paradigm如此的公司有哪些利弊吗?譬如之前你不和公司绑定,或许你有更多的自由,可以选择项目和我们的工作方法。如此的步伐会变化吗?会有所限制吗?
Sam:不会,我和公司在我加入时就已经有共识,那就是不会有这种限制,譬如说不看角逐对手的代码,那倘若发现SushiSwap的漏洞,大家一定也会进行报告。不过当时日常它是没问题的,所以这是个假设。
WLD Show:Dan Robinson的《黑暗森林》描述了恐怖的故事,其中写道“顶级掠食者”,而你在《逃离黑暗森林》的文章描述了怎么样摆脱这类“怪物”,你可以讲解一些它们是什么吗?
Sam:在此之前,甚至是在我听说“黑暗森林”之前,我就已经遇见过抢跑机器人。我深刻地意识到这件事是多么复杂,它们不只要监视三明治攻击,还要监视任何一种创造收益的一般买卖,然后以某种方法转换这个待处置的买卖,使自己获利。大家在之后讨论了怎么样去欺骗这类bug。
大家想到,它们的运行方法可能是先模拟一笔买卖,然后试着确定是不是有可以创造的价值。理论上,假如大家拆分机构行动的逻辑或者添加额外的买卖,应该不会致使复杂性的线性增长,可能是指数性的。我没办法完全确定。对于攻击者来讲,在这样的情况下的模拟应该会复杂不少,理论上他们不了解哪三个买卖是你的。他们会去不断组合来判断哪一组买卖是正确的。
WLD Show:你可以描述一下有关当时1千万USD危在旦夕的状况吗?
Sam:我有一个工具,它可以监视大型TVL合约并能准时发出警报。我当时收到了有关Lien协议的警告。当时我正要去睡觉,我想我或许需要看一下这个警报。然后我就发现了它的漏洞。当你意识到质押在协议里的所有这类钱都处于危险之中时,你真的会感觉到世界离爆炸只剩几秒钟的时间。
WLD Show:所以这意味着你发现了一个bug,若是其他人的话,或许会把合约里的钱都盗走了。
Sam:是的,所以有不一样的方法来对待这个漏洞。有的漏洞会被合约拥有者所借助,这理论上来讲是不好的,所以你需要进行尽职调查。也有一些漏洞只能在你投入不少资金的状况下才可以发生,假如你可以用闪电贷去攻击这个漏洞,那样或许会导致非常紧急的后果。假如这个漏洞没办法用闪电贷攻击,那样其紧迫性或许会大大减少。通常情况下,攻击者没足量的资金去攻击这种漏洞。还有一些更糟糕的漏洞,它们无需攻击者拥有很多资金,也无需特殊的权限。对于这种漏洞,其他人都可以成为攻击者,只须你了解可以调动合约的函数,那样这合约里的所有钱就都是你的了。
Lien Finance合约中当时的漏洞就是最后所提到的一类型型,你无需任何资金,任何权限,只须了解有这个漏洞存在,并且了解调动合约的函数,就可以发动漏洞攻击。所以在当时,状况十分紧急,你不了解下一秒会发生什么,任何一秒钟都可能出现问题,即使是发生漏洞攻击,我也不会了解攻击者是哪个,到那时,就都结束了,这真的非常可怕。
WLD Show:为知道决这个问题,你是怎么样组建团队来逃离黑暗森林的?
Sam:我确实花了一些时间在考虑这个项目是哪个负责的。但负责这个项目的团队是匿名的,所以我当时很小心,不敢向其他人透露这件事情,由于假如它落在坏人手里,那样它比较容易就被武器化。所以我尝试联系一些中间人,就是那些过去与这个项目有关联的人。所以,我与Alex Wade获得了联系,由于他是我认识的唯一一个与Lein Finance审计有关的人。我当时也联系了一些别的人。我向Alex说明了这个问题,以便采取紧急手段。之后,Alex就开始尝试通过他的途径来连接这个合约的负责人,此时我在考虑,一旦获得了联系,大家将怎么样处置这个问题。
大家没获得进展的每一秒钟,都大概是别的人来毁掉这所有的另一秒种。所以非常明显的问题是,怎么样将这类资金取出来。是的,大家的目的是拯救合约里的资金。由于就像我之前说的,这个漏洞可以被其他人所借助。对于大家来讲最大的问题是,假如抢先买卖者可以有这类技能,大家应该假如避开他们?
WLD Show:所以说你们当时想要拯救这类资金,但假如你们一旦进行操作,那样掠食者,也就是抢先买卖者,就大概在你们操作之前就把钱盗走了,是如此吗?
Sam:是的。对于矿工来讲,他们一定会优先处置支付gas费更高价格的买卖,在这样的情况下,大家的操作一定会在掠食者之后。
WLD Show:所以这意味着,你的目的是想弄了解怎么样让团队来创建一个可以混淆抢跑买卖机器人的东西,来隐藏你的操作,从而取出这一千万USD,是吗?
Sam:是的,大家的目的是以某种方法提交买卖,让那些机器人没办法抢先买卖。我一直在引入更多的人加入到这个队伍,团队成员都是我信赖的人,而且是我认识好长期的人。所以我当时在想,要么相信这类人不会背后盗取这笔欠款,要么就尝试没经过测试的去欺骗抢跑买卖机器人,然后非常大程度上会损失这一千万USD。最后,我更想相信这类人,这就是大家最后打造这样强大团队是什么原因。
WLD Show:你能描述一下你是怎么样发现SushiSwap漏洞的吗?
Sam:我当时正在Paradigm开会,有的无聊,就在另一台显示器上刷起了Telegram中的LobsterDAO频道。当时有的关于SushiSwap在MISO平台上DutchAuction的讨论。我就非常自然的开打并浏览了DutchAuction合约。乍一看,好像没任何问题,所有都非常完美。我还在想需不需要就继续将注意力转会到会议上,但我又在想,我可以破解它吗?我在没完全检查完之前就觉得它是安全的,那样它就肯定安不安全?然后我就继续浏览这个合约。然后,我就发现了漏洞,而且它与我之前看到的某个漏洞很像,没想到Sushi团队可以犯这样明显的错误。
WLD Show:Paradigm是UniSwap的投资者,而Sushiswap是UNI的一个分叉。所以本质上,Suhiswap与UNI是角逐对手,但Paradigm和团队中的每一个人基本上都支持你来解决这一问题,所以感觉团队中的每一个人都在为整个加密生态着想。
Sam:是的,加密行业是一个团队游戏,大家都在这个范围中,都在努力为加密生态做出最好的努力。一千万USD与三百五十万USD都是一样的,当我对大伙说出SushiSwap中有个漏洞,将会损失3.5亿USD时,每一个人都没迟疑,都在全力以赴尝试联系SushiSwap的负责人。由于这不是零和游戏,不是我需要要赢,其他人需要输。
WLD Show:对于当时的一千万USD,你想的是要把它转移出来。那样对于这3.5亿USD,你又是如何想的?
Sam:我想在某种程度上,这笔数字实在是太大了。其实你非常难正确看待这3.5亿USD,这真的非常困难。这对一般人来讲这意味着什么?对加密行业的人来讲意味着什么?持有3.5亿USD的想法简直让人难以置信。我感觉我应该做点什么。
WLD Show:所以在Paradigm,相比与你逃离黑暗森林时要打造的团队,事实上有更多支持你的互联网,而且可以使你更快地解决SushiSwap的问题。
Sam:确实,这也是我加入Paradigm的另一个缘由,非常明显它有一个更大的互联网,并且在加密生态系统中的影响范围愈加广泛。所以当我发现某些问题时,通过Paradigm联系任何团队的负责人都很有效。
WLD Show:你平常不只会发现一些漏洞,还会写一些教育资源供大伙阅读。其中一篇推文是关于Wormhole 3.25亿USD漏洞。当时你通过逆向工程讲解了Wormhole漏洞事件。你当时为何要写这么一篇推文,可以详细描述一下吗?
Sam:事实上,我并不如何发布有关教育资源类的推文,我写博客的频率比较高,主如果由于我觉得假如我想发布任何内容,我期望它是长文,因此我可以更多的参与其中。Wormhole漏洞被攻击时,是当时失窃资金规模最大的黑客攻击,而且没人了解前因后果。
当时在twitter上也有的推断,但假如你去查证,那些都是假的。所以即便当时过去了几个小时,也无人真的了解出了什么事。我当时想,我觉得目前是时候发布一些正确的言论,并且可以让我好好认识一下SOL。坦率的说,我当时对SOL知道不多,而且没真的去知道它的动力,但这一次给了我机会。
WLD Show:那样漏洞是如何产生的?3.25亿USD又是怎么样从系统中盗走的?
Sam:要了解的是,这个合约需要多重签名才能有效,但在这一步时有一个bug,它事实上没检查这类签名是不是有效。攻击者提供给Wormhole一个假地址,假装这是cisfa,然后没被阻止。他们用这个签名来桥接资产。下一步,黑客用它来生成订单,由于第一步中的签名被觉得是有效的,所以监护者认定了这个签名。第三步订单被提交,并遭到了处置。
WLD Show:也就是说,这个过程是从ETH到SOL。一般情况下,假如有人将以太币存入Wormhole,然后由于Wormhole中有以太币,它就会将其转移到SOL。但因为这个特定的漏洞,黑客让系统假装觉得其中有以太币,然后会转移到solana,因此会损失系统内的 3.25 亿USD。
Sam:需要明确的是,当你桥接资产时,你会在另一方得到相同的资产,假如它是1:1资产的支持,那样它是没问题的。但Wormhole不是。这个过程需要在Wormhole中锁定真的以太币才会有Wormhole 以太币,而Wormhole需要信赖签名者,假如5个签名者中的4个都赞同某人已经锁定了10个以太币,那样这个人就会得到10个Wormhole 以太币。但事实上这个人什么都没锁定,因此系统就会被欺骗。
WLD Show:假如大家需要帮助,将怎么样联系你?
Sam:我一般会在我们的网站上发表一些博客,你可以浏览一些我的最新动态。当然,假如你有合约安全方面的问题也可以直接通过twitter,邮件或DM我的电报与我获得联系。
WLD Show:很感谢你的慷慨推荐。这是一次非常棒的对话,我从中学到了不少。
Sam:我也非常感谢你们!