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