9 月 10 日,以太坊联合创始人 Vitalik Buterin X 平台(原推特)账户被黑客攻击,并且发布了一条钓鱼链接,内容为一条关于 Danksharding 的纪念 NFT 免费领取链接。尽管这条推文还快被删除,但黑客还是盗走约 70 万美元资金。

此前 7 月,Uniswap 创始人 Hayden Adams 的 X 平台(原推特)账户同样被黑并发布了包含钓鱼链接的推文,可见近期区块链生态中大量安全事件诸如钓鱼攻击依然频发。

此前,Beosin 已经对钓鱼攻击进行过详细的解读,大家可详细阅读:UNIBOT 爆火,如何防范 Telegram 机器人相关的钓鱼和诈骗?签名就被盗?用过 Uniswap 的请警惕!揭秘 Permit2 签名钓鱼

除了钓鱼攻击,还有哪些资金骗取方式值得用户警惕?近期,Beosin 团队发现跑路以及价格操控事件同样对用户的资金造成很大的损失。

随着区块链技术越来越成熟,代码层面的问题出现也越来越少,从而更倾向于骗局以及业务逻辑上出现的问题。本文我们盘点一下近期常见的资金安全问题,帮用户从根本上避免一些资金受骗。

最近发生的跑路诈骗等事件,操控者主要是通过合约后门、貔貅盘等方式进行资金骗取,而这类方式其实用户是可以避免的,主要是要了解合约运行方式以及代码原理,我们拿近期的项目来进行说明,并总结这类骗局的特点。

一、项目后门注意事项

1、特权地址修改余额

一般涉及骗局的项目都会有一个特权地址,该地址可以随意 mint、burn 或设置他人余额。这种项目存在跑路的风险,当用户使用了大量资金购买了项目代币后,项目方直接通过特权函数将价值币全部兑换出来,导致项目代币价值归零。

以 CUZK 项目代码为例:

CUZK 代币合约中存在后门,特权地址可以直接给自己账户设置超过总供应量的代币,如下代码:

ccvipaaaqqq() 函数会给调用者添加巨量的 CUZK 代币,并且最后判断调用者是否为 ciyuAdmintmrr,该地址是合约初始化时创建者设置的地址(0xf719)。

项目方通过调用 ccvipaaaqqq() 函数,为自己(0xf719)添加了巨量的代币。

随后,特权地址使用设置的代币将 pair 中 WBNB 全部兑换出来,导致 CUZK 币价归零。

2、隐藏式后门,间接添加余额

还有一些项目并没有直接操纵地址代币余额的功能,但是特权地址可以间接获取大量代币,从而将价值币全部兑换出来,导致代币价格归零。

以 BNB 链上 Flashmall 项目为例:

FlashMall 合约拥有一个 setPointRate 函数,用于设置兑换率,该函数仅有特权地址能调用。

本次跑路事件主要分为以下步骤:

设置兑换率 ->兑换 ->设置兑换率 ->兑换

以下为详细步骤:

1. 特权地址设置率为 10000。

2.0x613C 地址能将 MUSD 兑换为 10 倍的 MCoin。

3. 特权地址设置率为 1000。

4.0x613C 地址能将 MCoin 兑换为相同数量的 MUSD。

5. 通过多次转换,0x613C 拥有了大量的 MUSD,最后将 USDT 全部兑换出来。

以下为 MCoin 与 MUSD 的兑换代码,数量由 pointRate 决定。

总结:合约是否拥有后门,主要看有无特权函数能对任意地址代币进行操控,或者是否有特权地址代币增发的逻辑函数。此外,如果是项目方拥有绝大部分流动性凭证,那么也可能出现跑路。用户可以通过查看合约是否放弃特权地址,或者特权地址是否为一个正常业务的合约地址来判断其风险程度,同时,查看流动性凭证是 EOA 账户拥有还是正常业务合约拥有。

二、貔貅盘项目骗局

这类项目特征主要体现在能购买项目代币,但是当用户想要卖出时,交易将报错,这类骗局合约代码的主要体现是,第一次代币转账时,将会设置一些合约状态,而之后便不能再进行转账,导致用户买入代币,将合约状态设置,之后便不能卖出。

以假冒 EDU 代币项目为例:

该项目合约地址 0x4749,为 EDU 同名项目。代币 owner(0xac15)在 EDU pair 0xE3f2 地址中买卖代币,并且将持有代币发送给币安钱包和交易所,造成有很多人参与的假象(下图所示)。

如下代码,在进行第一次 transfer(买币)后,tokenGreylist[to](to 为用户地址)将设置为 true,但是由于代码中白名单地址状态未公开,转币函数无法二次调用,开关状态与白名单地址由 owner 控制,对于用户来说参与该项目默认状态下无法卖出代币。

总结:貔貅盘项目特点就是能买入不能卖出,通过查看 transfer 以及 transferfrom 实际逻辑,看有无相互限制的条件。有技术条件的可以本地模拟执行一下相关函数。