如何看待bybit被黑客攻击盗取15亿美元资产?

发布时间:
2025-02-23 11:33
阅读量:
0

写个技术贴吧,上次trump发币就想写,犯了懒,这次好好写。

1.当事钱包

凡是遇到这种hack事件,先找当事钱包。交易所钱包在etherscan上基本都打了标直接搜就行。

你看这个倒霉钱包,标着Bybit cold wallet 1, 钱却只有可怜的22刀。多半就是它没跑了。往下一滑看到历史交易,果然

17个小时前这钱包的钱被一顿提,可谓是秋风扫落叶,一根毛也没给留下。


2.作案过程

找到了当事钱包我们就可以分析作案过程了

先让我们看看这个倒霉钱包到底是个什么来头

首先它是个智能合约钱包,意思就是它是带有代码逻辑的。仔细一看开源代码逻辑发现关键字“proxy”,“gnosis.io”, 多半就是个 safe wallet没跑了。

对于各位不熟悉的,我介绍一下, safe wallet 是一个多签钱包被广泛用于机构资金的管理。各种加密货币机构呢要不有个托管方,要是自管一般就是safe wallet了。除了用于直接存加密货币外,还可能被用于各种多签操作,比如空投啊,升级合约代码啊,给vault换策略啊等等。大家理解就是个很重要的钱包就行了。代码上链7,8年以来经历币圈风风雨雨,从来没出过岔子,可谓币圈的南山不老松。

这下这事大发了,safe wallet光存在上面的资金就有1000亿美元多,何况还有各种关联合约。要是这钱包底层合约被攻破了,这影响难以估计,可比什么交易所暴雷劲爆多了。这会你可能就有疑问了,要真这么大影响,加密市场不得飞流直下三千尺?别急,让我们接着往下看。

知道钱包类型我们就可以开始分析交易了


前几个交易看名字 sweepERC20 sweepETH, 看这名字就知道是偷钱操作,safe wallet自己也没这些功能,我们先不去管他们。看到最下面的交易名字是Exec Transaction,这是safe wallet自带功能,所有交易都是通过它进行的。这一定就是这个案件的起始点了,让我们仔细看看。

交易详细内容如下:

0 to address 0x96221423681A6d52E184D440a8eFCEbB105C7242 1 value uint256 0 2 data bytes 0xa9059cbb000000000000000000000000bdd077f651ebe7f7b3ce16fe5f2b025be29695160000000000000000000000000000000000000000000000000000000000000000 3 operation uint8 1 4 safeTxGas uint256 45746 5 baseGas uint256 0 6 gasPrice uint256 0 7 gasToken address 0x0000000000000000000000000000000000000000 8 refundReceiver address 0x0000000000000000000000000000000000000000 9 signatures bytes 0xd0afef78a52fd504479dc2af3dc401334762cbd05609c7ac18db9ec5abf4a07a5cc09fc86efd3489707b89b0c729faed616459189cb50084f208d03b201b001f1f0f62ad358d6b319d3c1221d44456080068fe02ae5b1a39b4afb1e6721ca7f9903ac523a801533f265231cd35fc2dfddc3bd9a9563b51315cf9d5ff23dc6d2c221fdf9e4b878877a8dbeee951a4a31ddbf1d3b71e127d5eda44b4730030114baba52e06dd23da37cd2a07a6e84f9950db867374a0f77558f42adf4409bfd569673c1f

我们先详细检验下signatures

0xd0afef78a52fd504479dc2af3dc401334762cbd05609c7ac18db9ec5abf4a07a5cc09fc86efd3489707b89b0c729faed616459189cb50084f208d03b201b001f1f0f62ad358d6b319d3c1221d44456080068fe02ae5b1a39b4afb1e6721ca7f9903ac523a801533f265231cd35fc2dfddc3bd9a9563b51315cf9d5ff23dc6d2c221fdf9e4b878877a8dbeee951a4a31ddbf1d3b71e127d5eda44b4730030114baba52e06dd23da37cd2a07a6e84f9950db867374a0f77558f42adf4409bfd569673c1f

上上下下我慧眼如炬地看了半天(具体怎么看的太长了实在不想写,有人看我再扩写吧),觉得没毛病,这就是一个正正经经的signatures。说明这个交易确实收集到了多个钱包所有人的签名,大家可以理解为保险箱有多个钥匙,这个交易确实收集到了所有的钥匙。好嘛,这下至少我们可以确定,safe wallet的底层合约还是安全的,黑客也是想办法搞来了这些个钥匙才打开了这个safe wallet。具体怎么搞来的这些个钥匙呢?我们先按下不表。

然后我们看看这个交易的具体操作吧,欣赏下黑客打开保险柜之后到底是怎么操作的。

重点是这个部分

0 to address 0x96221423681A6d52E184D440a8eFCEbB105C7242 1 value uint256 0 2 data bytes 0xa9059cbb000000000000000000000000bdd077f651ebe7f7b3ce16fe5f2b025be29695160000000000000000000000000000000000000000000000000000000000000000

首先value是0说明这个交易并没做ETH的转账,考虑到这个多半是个开保险柜口子的操作,而且多半存的都是生息资产stETH,倒也正常。

to是个智能合约,data就是和这个智能合约交互的内容。简单来讲就是调用了0x96221423681A6d52E184D440a8eFCEbB105C7242 这个合约的这个方法 0xa9059cbb 然后传了这个参数 bdd077f651ebe7f7b3ce16fe5f2b025be2969516。

所以我们先看看这个0x96221423681A6d52E184D440a8eFCEbB105C7242 合约是个什么来头

打开一看,好嘛,没开源。多半就是黑客部署的合约了。这下合约分析不了难道我们就到头了?nonono,聪明的你一定想到了,就算没开源我们看看这个交易到底改了啥不就知道了?

仔细看看交易,OK问题我们找到了。这个交易改了proxy指向。

简单解释一下,safe wallet的部署为了节省gas和好升级都采用了proxy模式,简单来讲用户使用的钱包逻辑都是指向到一份代码上的。钱包地址本身没有代码逻辑,只存钱。黑客用这个交易改了钱包指向的代码逻辑,导致这个钱包它再也不是一个safe wallet了。它只是披了一个safe wallet的皮,它的内核是0xbdd077f651ebe7f7b3ce16fe5f2b025be2969516这个黑客部署的代码逻辑。可谓是赛博夺舍了,黑客这下可以为所欲为了。

我们再回过去看钱包的一堆sweep操作就可以理解了,黑客赛博夺舍后一顿命令钱包吐钱,钱包全部乖乖执行

15亿美金一根毛也没剩下。

3.销赃

先看看有没人看,有人看我继续写。

END