Old Fashion Research

Posted on Aug 09, 2022Read on Mirror.xyz

「Recap复盘」OFRTalk #10 - 新手科普!悉数web3中潜伏的安全危机

8月7日,OFRTalk #10 以 Web3 安全为主题,围绕着近期发生的 Nomad 跨链桥安全事故,及 Solana 钱包的大规模泄露事件,从用户教育的角度出发,与嘉宾展开了一系列讨论。活动中精彩发言不断,此文为活动的文字盘复盘总结

—————————————————————————————————————————

主持人:区块链中经常会上演每天上一当,当当不重样的剧本。常见的资产损失包括了助记词泄露,rug pull,合约攻击(闪电贷,MEV,授权)等。可以简单科普一下这几类的丢钱方式吗?可以先从最近的 Solana 钱包大规模被盗事件开始。

DJ:一开始大家都以为是 Onto Wallet 那边出了问题,到后面大家查出来是 Slope 钱包的问题,它的代码被污染了。这个让我想到 Atoken 这个钱包,其实它去年11月到12月出现过一波用户资产被盗的事故,当时上面有很多 ETC 的用户,包括波卡的用户。当时的事情是类似的,我后面和一些被盗的用户交流了一下,应该是 app 上留了一些后门。在我自己的使用过程中也会有类似的担忧,可能在后续某一次的 app 的更新中就会加入一些后门权限。它也不开源,用户也不知道。就算用户知道开源,也不一定要当时就窃取资产,所以很难追溯到。

我平时的习惯是能用 Metamask 就用 Metamask 。被盗这个事情只有永远不被盗和被盗无数次的情况,如果一个钱包出现过一次黑历史,那么我以后再也不会用它了,这种信任感危机在我这看得比较重要一些。

Larkloss:Solana 的 hack 事件还在进行中。网上很多人都把问题推到 Slope 使用了 Sentinel 的前端监控上,导致采集了助记词。但很多用户反馈没用过 Slope ,只用了Phantom ,也一样出现了被盗的情况,所以整个事情的发展还在进行中吧,大家再等等看。 Solana 整体的开源程度相比 ETH 比较低,现在也不太好去分析。

Colingue:钱包分为私钥存在本地和私钥上传到服务器上两种形式。私钥存在本地的话就跟 Metamask 差不多,如果私钥丢了就丢了,没人能帮你。如果私钥上传到服务器,项目方可以帮你找回私钥。但风险就在于如果项目方被黑了或者遭遇技术漏洞,那也一样会被黑,就像 Solana 这一波的事故。我看到有一些钱包的项目方其实是有手段的,比方说用这种两方,多方安全机箱的形式储存,或者用特殊的加密通讯等复杂的方式去生成私钥,但也不能完全盲目相信。我个人而言不太建议用私钥上传到项目方这种方式的钱包,毕竟大家的钱还是百分百掌握在自己的手里比较好。

主持人:想问下在座有做产品经理出身的嘉宾,私钥储存在本地和私钥上传到服务器这两种产品思路,是什么让项目方决定去使用后者?

Michael:项目方可以选择上传,但是正常来说,从数据的要求,比如说 GDPR 的要求,是不能把私钥明文地上传到服务器的,这肯定是一个工程上的失误。现在已有的开发框架对敏感信息没有足够的敏感度,正常的话作为敏感信息是默认不能上传的,一定要加过密的。就像 Coinbase 的钱包,它的恢复方式可以是把私钥经过用户自己的密码加密之后去上传到谷歌的云存储,恢复必须由用户本人输入密码去恢复出来,Coinbase 没办法帮你恢复明文的私钥或者助记词。恢复需要借助一些生物信息,或者v神比较喜欢的 social recovery 这些。合理的产品是不会把私钥和助记词上传到服务器的。

主持人:接下来我们可以重点讲讲合约攻击这一块的,包括闪电贷,MEV ,授权攻击等。

Tommy:我们先讲讲有什么方案可以避免合约攻击吧。合约攻击主要分为两种,一种是项目方被攻击后,黑客发布 Twitter,Discord 的假消息让用户去 mint 或者转账。另一种是直接对智能合约进行攻击,比如说闪电贷,或者攻破助记词,把资产转走。第一种可能性比较大,因为在大家的认知里面,用户都是无条件相信项目方的。如果是项目方的社交媒体或者 email 都被黑了,那么它造成的影响肯定远远大于项目本身的合约被黑。举个例子,之前 Opensea 的官方邮件被黑了,给很多用户发了钓鱼邮件,导致很多人去进行了交互,造成了损失,因为大家都相信 Opensea 是安全的。Opensea 的官方 Discord 也发生过 OG 被黑的事件,这些 OG 发的钓鱼链接也有很多人点击了,参与了 mint 或者链上交互行为。

项目方如何保护自己?首先智能合约在 Web3 是尤为重要的,不同于传统互联网的项目。基于区块链的合约代码绝大多数都是安全的,任何人都可以查看。且基于区块链不可篡改的特性,已部署的合约是不能修改的,只能重新部署合约去修正。这就导致了很多黑客去一行一行地找合约的漏洞,找到了就进行部署,然后发动攻击。项目方往往是被攻击后才发现,造成的损失已经无可挽回了。有些项目方设计了漏洞的修补,但仍然授权的是老的合约,造成一些用户因为历史遗留问题而损失资产。基于上述事实,我们分析了数百起安全事件,包括 Nomad ,Solana ,还有最近的中币,都在我们的官方推特上进行了分析。我们建议项目方在项目上线前找专业的审计公司进行审计。除了合约审计以外,项目方还需要注意内部流程的合规把控,给所有的社交媒体运营人员科普社会工程学的知识。

什么叫社会工程学呢?社会工程学就是去猜你的生日,好友,家人名字等,因为你很有可能用这些信息去设置你的密码。如果你的社交媒体没有开启双重验证,黑客是非常容易攻击你的账号的,他们可以模拟你所在地区的 IP ,就不会触发异常登录的提醒。这时候他们去发布一些帖子,或者私信一些人,正常情况下他们是没有警觉地就被黑了。在工作电脑上一定要装安全软件,很多时候助记词或者私钥是什么时候被偷的呢?就是有一些恶意软件去读取你的相册,剪切板,如果你正好复制了,就会受到攻击。所以说我们建议持有公司账户的管理员使用公司的电脑,并且安装杀毒软件,确保助记词不可以通过复制粘贴的方式进行储存。

我们建议项目方使用硬件钱包保护大份资产,并且经常进行内部培训。不仅是管合约的人需要培训,所有的相关人员都需要进行培训,只要黑客知道你是团队的人,就有可能会通过你去套出项目的信息。

很多时候在发布新版本更新的时候,是最容易受到攻击的。比如最近 Nomad 就是在版本升级的时候遇到了一些漏洞,项目方发现的时候资金已被耗没了,无药可救了。就算白帽黑客把钱归还回来,用户的信心也已严重受挫,这个项目就很难再次起飞了。重大更新一定要在内部测试好再发布。如果在 Web2 出现安全事故可能还有挽回的余地,如果是 Web3 出现了安全事故,这个项目基本就没有希望了。项目方一定要确保内部合规和合约安全,百分百没有问题。

主持人:可以给大家科普一下闪电贷和 MEV 攻击吗?

Colingue:闪电贷主要是针对项目方和开发者而言的。我个人认为闪电贷是一个非常大的创新,它支持以无抵押的方式去借出资金,虽然只有一个区块的时间。它的原理简单来说就是在一笔交易里,在提供闪电贷的项目方之中借出巨额资金,甚至把所有可用资金都借走,但是在这个交易的区块里得还款。那么中间你做什么就比较自由了。如果一个用户有非常多的资金,那么他就像有一把巨锤,它可以给那些没有防闪电贷攻击的项目方一记重击。最常见的像预言机,预言机用的是各种 Swap 池子里的曲线价格算出来的,现在有很多有经验的项目方都已经在使用有时间加权的价格,但很久以前没有形成共识,项目方都用很传统的池子里 a/b token 剩多少一除得出来的价格,那闪电贷的威力就很大了。我借出了巨额资金可以把这个池子打穿,比如说 ETH/USDT ,我借入了巨量的 ETH 去卖出,把 ETH 的价格砸穿。然后我去另一个借贷的项目,如果这个项目简单地就用了这个池子的价格就可以让你借出 ETH ,我在这笔交易的最后把 ETH 还上,就相当于我白嫖了巨额的 ETH 的资金。这就是闪电贷的简单原理。

我记得去年有一个特别有意思的事,就是 DODO 被盗。黑客用了闪电贷借走了 DODO 大量的资金,但还没来得及把钱提走,就被一个 MEV 机器人截胡了。黑客已经完成了攻击,钱到了自己的合约里,但是提钱的时候被 MEV 机器人抢先了,特别有意思。

主持人:最近关于跨链桥的攻击频发,仅在今年就发生了 Wormhole ,Ronin ,Horizon ,以及最近的 Nomad 等跨链桥被盗事件,造成大量的用户资金损失。为什么跨链桥是区块链安全事故的重灾区?有没有可以取代跨链桥的多链资产解决方案?

Michael:跨链桥由于自身的设计问题,一条链上锁定,另一条链上铸造映射资产。由于跨链桥 TVL 很大,这种模式会容易造成一下被盗很大金额的情况。从 Celer 的角度来说,这些被盗的跨链桥的相关的监控和限流都是完全没有做,所以才会一下被盗很大金额的情况。拿 cBridge 来说,我们做了大量的防护工作。最基本的合约审计和各个方面都是足够的去中心化,需要十几个甚至二十几个节点一起做 POS 的验证。更重要的是,监控和限流工作一定要做,在发生事故的第一时间就能发现问题,如果出现大量的资金转账,可以先把这个合约给关停了再观察,不会出现一次丢失几亿美金的情况。代码会有 BUG 是一个很正常的事情,哪怕是审计过后,包括后续升级产生的 BUG 。问题在于发现问题的瞬间能不能及时处理和做出一个即时响应,如果发现已经有异常,应立即把合约关停,这并不是一个很中心化的事情。虽然像 Nomad 那样做得比较去中心化,去信任,但我们认为能及时把合约暂停不让它造成更大的损失才是能保证安全的做法。最早的时候智能合约有安全锁,时间锁这些,有的时候它是把双刃剑。如果发生了情况,但需要24小时或48小时的时间才能止损,那对协议和 LP 都是不负责的。我们做了一整套监控的体系,一旦有什么异常,就可以通知我们的节点运营商,先把合约暂停了,再商量对策,这是一个比较负责的做法。

本质上目前的跨链桥设计还是比较脆弱,大量的资金在一条链上锁定,在另一条链上铸造。无论是锁定的一方还是铸造的一方,桥出问题,或者链出问题,都有可能导致大额的资金损失。之后的跨链范式并不会把资金锁在桥上,桥并不会有很大的 TVL ,更多的是更轻量的一个传递信息的作用。或者说每条链自己本来就在它的 DeFi 上,像 Aave V3 那样。如果协议本身是安全的,那即使桥被黑了,也不会发生另一条链上的借贷池子都被掏空的事情。之后的基于流动性的资产跨链桥目前就到这个水平了,都不会把 TVL 做的特别高。加上这些资金是锁定在桥上的,不能产生收益,资本利用率不会特别高。之后无论是从安全性还是资本利用率的角度来说,我们认为信息的跨链才是之后一代跨链桥的主流形式。

主持人:新人应该养成什么样的操作习惯,避开这些安全漏洞呢?加入我只有 A3 的资产,有必要入手一个硬件钱包吗?硬件钱包的工作原理是如何,又能保护到我们的哪些方面呢?

Larkloss:我推荐大家都入手一个硬件钱包。有些人说资产少有必要用硬件钱包吗?这个看个人的经济能力和硬件钱包的价格吧,有些硬件钱包不是很贵。总的来说,最多可能三四位数。我推荐得比较多的用硬件钱包的都是玩NFT的,一次 mint 或者 premint 验资金额就比较大。如果有条件的话,我推荐大家还是选择买入一个硬件钱包,加一层保护。链上的资产现在也多了,不光是代币,有些人还持有 NFT 。对我来说,可能丢了点币还会糟心一段时间,如果NFT 丢了那就更糟心了。NFT 不光是钱和资产,还有一些个人情感在里面,NFT 丢了还容易买不回来。

说说硬件钱包的原理吧。就这回 Solana 被盗的事件,就是一个很好的体现。之前好多人老是说硬件钱包私钥不触网有什么意义,我也解释了很多它的好处,但毕竟没有什么直观的体现。经过这次 Solana hack 的事件,就有一个直观的体现了。除了把资产转移到交易所里头,硬件钱包就是最好的保存方式。但交易所只能转移代币,不能转移NFT,就比较麻烦。

Michael:硬件钱包的话,特别是在国内,大家一定要额外小心一些。有一种攻击叫所谓的供应链攻击,比如说这个钱包可能是被人拆过重新包装起来的。大家不要贪便宜去买二手的,之前无论国内外都有相关的案例,一定要在官方渠道购买。

投资状态的话,公司和个人分开说。公司我们现在是一级二级都有在做,一级还是持续地寻找好项目和反共识的机会,二级的话我们很早就开始收缩了。我们一直都不是很 FOMO ,需要坚持这一点。

主持人:中心化交易所和资管机构频繁暴雷,链上又出现 Rug 潮和各种安全漏洞。前几天有一个名单在 Twitter 被曝光出来,是 Celsius 的客户名单,里面不乏像 LAPD 等的一些政府机构。像这些大机构和政府组织都出现了资金安全的问题,那作为普通用户,想对自己的 crypto 资产进行一个增值,又有哪些可行方案?

Tommy:这是一个to C的问题。大家需要从自己的资金量为前提去考虑问题,比如说你只想投几百或者几千美元在这个领域的话,那就没有必要去搞一个硬件钱包了,很可能你的硬件钱包比你所有的仓位都值钱,本末倒置了。这部分的用户我们建议使用头部的中心化交易所,比如说币安,火币,FTX ,OKX ,Coinbase 等等。

我为什么建议这些资金量的小白用户使用中心化交易所呢?因为中心化交易所的用户教育做的非常好,会有各种各样的专区教用户区块链知识,通过交易所还可以看币价,非常方便。我之前做过一个用户调研,知道 CoinGecko 和 CoinMarketCap 的人已经在币圈有过1-2年的经验了。一般初学者都是打开交易所的 APP 去看,也没必要知道那么多的信息。新人用户不要去加杠杆,也不要去买一些奇奇怪怪的土狗币,买头部的币比较安全。把这些基本知识搞清楚以后,才去学一些进阶的玩法,一定要保证本金不要受损。

针对一些已经跳过了小白阶段,开始使用 Metamask ,TrustWallet 这些的用户,可能会倾向做一些更复杂的操作,比如说去 mint NFT,参与空投,等等。这时候就可能会出现一些刚才说的安全问题。首先最常见的就是钓鱼网站。一些新的项目,比较喜欢用 .io 这个域名,就会有一些人买一些域名一样后缀不同的域名,比如说 .gg,.co 等等,并且他们也买了 SSL 的安全证书,网站上的链接也都指向官方的链接,比如 Discord,Telegram 这些。这些假的网站可以做的非常真。如果你在这些网站上去 mint,就非常危险。进入到这个阶段的用户呢,我建议你的核心资产还是可以放在中心化交易所的,或者说你不要把所有的钱放在中心化交易所,可以把一部分放在你不常用的钱包。

如果你真的有做空投或者 free mint 的需求,那需要注意的是,第一要使用不太重要的钱包,第二要 do you own research ,不要 fomo 。搜索引擎要用谷歌,不要用百度,百度很容易搜出来山寨。怎么去验证项目方的 Twitter 是否是官方的呢?一般来说官方 Twitter 都有蓝V,但也有些新项目可能没有。再去看粉丝数量,一般大于1万的都是真的。当然也存在买粉的可能,那么这时候就要去看有没有大V关注了这个项目,如果没有的话就要特别警惕。现在是熊市,Twitter 的互动是比较低的,我去做过一些研究,几万粉的项目互动一般都只有几十,除非说空投活动。

为了保住大家去分辨钓鱼网站,我们做了一个叫 Beosin Alert 的插件,大家可以通过这个链接下载。https://chrome.google.com/webstore/detail/beosin-alert/lgbhcpagiobjacpmcgckfgodjeogceji

另外大家也可以在冲NFT项目的时候使用 NFTGo 这类的数据网站,如果这些工具都有相关数据的话,基本可以保证你不会冲到一个土狗项目。

—————————————————————————————————————————

🎙录音回放 https://twitter.com/i/spaces/1zqKVBYONdMKB?s=20

请关注我们的推特

OFR Intern @ofr_intern https://twitter.com/ofr_intern

Old Fashion Research @ofrfund https://twitter.com/ofrfund

OFRTalk 是由 Old Fashion Research 支持的语音访谈会系列活动。其愿景是成为社区导向型的开放类访谈,为听众带来不同角度的对各赛道的分享,以及深度的区块链内容研究,旗下投资的项目对话及热门话题的讨论,以帮助大家对行业有更深的认知。

OFRTalk 所有的内容仅代表个人和嘉宾的看法,内容有时会包含我们的投资项目的介绍,不构成任何投资建议。欢迎大家关注 OFR Intern 及 OFR 的官方推特,及时获取开播信息。

特此感谢 OFRTalk #10 参与嘉宾:

Michael, Core Dev @Celer Network @Dominator0081

Tommy, Director @Beosin @TommyDeng_DAO

Colingue, Co-founder @0xScope @col1ngue

DJ, Researcher @Huobi Global @plzcallmedj

Larkloss, Community Lead @Keystone Wallet @KeystoneCN

Web3