点击蓝字
关注我们
最近有粉丝向我们求助:
“老师您好,我在1月11日通过OKX Web3钱包买入了一个币,但几乎同一时间出现一笔转账,我买入的币余额直接变为零,请问这是什么情况?我是遇到什么新型诈骗了吗?”

接着我们让他补充了一下事情经过:
“我是在TG群里看到有人在聊这个代币,自称有内幕消息,然后我出于好奇就用OKX Web3钱包搜了下(确实有这个代币存在)。
首先,因为我是在官方渠道下载的OKX APP所以自认为相对安全,也没有想太多。
接着,就是我放松警惕最大的问题所在。因为我之前也买过SOL链上的同名代币,还赚了点钱,所以在Base链上看OKX代币检测没有显示任何风险就买入了。没想到刚买入就直接被转走,才意识到可能遇到了诈骗。
然后,我赶紧联系OKX客服,虽然没给到实质性的解决办法但是态度还行,后让客服帮我把问题升级给客户经理,客服经理态度非常差,而且也不作为没有任何赔偿和弥补措施,就在刚刚我看到他们在页面偷偷加上了貔貅提示。”
根据粉丝提供的转账记录和事情描述,我们做了以下分析:
一、此次攻击事件全过程
先说结论:
这是一个貔貅盘,具体盗币过程如下:

攻击者通过
0x29A35C6e14488723bc2531f67758C27594baB627这个合约地址触发了此次盗币攻击
然后检查该用户使用钱包购买该代币的余额
最后直接将该用户购买的代币全部转走
二、具体的攻击细节分析

首先我们看下0x3f4bb9ea函数,通过分析该函数发现它调用了币合约的transferFrom方法
币合约的transferFrom函数调用了_spendAllowance方法

_spendAllowance函数里有一个SafeMath.mod方法,这里就是此次被盗事件的重点。
分析这个合约代码,我们发现了一个严重的安全漏洞,这就是为什么代币可以被随意转移,问题就出在SafeMath库的mod函数实现中。

这里可以看到SafeMath库里有两个mod函数,根据传入参数的数量会选择对应的mod函数。
结合前一个截图可以看出:
_spendAllowance的mod函数传入了两个参数,所以对应到了function mod(a, b),这个其实就是作恶的攻击函数,而function mod(a, b, errorMessage)这个函数才是正常取余函数。
这里重点说下这个mod漏洞:
1.后门机制
_exp() 函数返回一个特定值,如果 msg.sender等于这个特定值,mod函数就会返回2**256-1
2.漏洞利用过程

当特定地址调用transferFrom 时,SafeMath.mod 返回2**256-1,绕过了授权检查,所以可以转移任何地址的代币。
以上就是此次貔貅盘盗币的全过程
另外,我们根据粉丝描述的细节:
“因为我之前也买过SOL链上的同名代币,还赚了点钱,所以在Base链上看OKX代币检测没有显示任何风险就买入了”
我们又去SOL链上看了这个代币,显然跟该用户购买的不是同一个代币,SOL链上是正规的代币,而用户买到的就是貔貅盘代币,仅仅只是名字一样而已。

这是SOL链上的代币

这是用户买的貔貅盘代币
骗局揭秘完了,下面给大家分享一下关于web3安全入门避坑指南。分别从陷入貔貅盘的原因、貔貅盘的典型套路和如何避免貔貅盘三个方面展开。






以上关于貔貅盘骗局的科普内容我们在小红书也做了宣发,有兴趣的可以关注下我们的账号:
链析区块链安全情报
小红书号:42941495722
如果你也正在经历盗币或其他web3相关的安全事件,也可以联系我们。
[注]:以上部分图文素材来源于网络,如有侵权请随时联系删除;本文不提供任何投资理财建议,请谨慎甄别守护个人财产安全。
链析是一家区块链技术安全公司
专注于为用户提供安全咨询及服务
资产找回/零口供技术支持
链上链下溯源分析/智能合约漏洞救援
法律援助/专业律师答疑
应急响应服务/威胁情报和解决方案

【往期精彩回顾】▼▼:




