黑客教你如何用0.01 BNB“白嫖”CZ
作者:23pds & Thinking
编辑:Sherry
背景
昨天,当我还在整理APT 攻击相关的素材时,山哥(@im23pds) 突然激动地来到我的工位旁边:“Thinking,我发现了一个有趣的项目,CZ 在高频使用,我们或许可以 0 成本和 CZ Say Hi。”于是我们迅速拟定了几个可能的漏洞点:
- 劫持CZ 在 ReachMe 的账号;
- 更改CZ 在 ReachMe 的设置;
- 不花钱给CZ 发消息,绕过给他发消息要花费 1 BNB 的限制。
大约在10 分钟后,我们发现可以在 ReachMe.io 低成本和任意用户 Say Hi 的漏洞,于是我们第一时间联系了项目方团队,并提供漏洞验证的详情。项目团队也在第一时间就迅速修复了该漏洞,同时联系我们进行复测。为 ReachMe 团队认真严谨对待安全问题的态度点赞!
(https://x.com/SlowMist_Team/status/1905212712956665896)
此外,慢雾安全团队很荣幸获得了CZ 和 ReachMe 项目方团队的致谢。
(https://x.com/cz_binance/status/1905240886986039437)
发现过程
ReachMe.io 是一个基于 BNB Chain 的付费聊天平台,旨在通过加密货币支付机制连接 KOL(关键意见领袖)与粉丝。用户向 KOL 发送私信需支付 BNB ,KOL 可获得 90% 费用(平台抽成 10%);若 KOL 5 天内未回复,用户可获 50% 退款。
2025 年 3 月 27 日,币安创始人 CZ 将其 X 账号简介改为:“DM: https://reachme.io/@cz_binance (fees go to charity)”,即“在 ReachMe 上 DM 我,费用将用于慈善”。
我们可以看到,和CZ Say Hi 的成本是 1 枚 BNB,于是我们设想了一些方案,并进行尝试,看如何绕过 1 枚 BNB 的限制来和 CZ Say Hi。
和山哥一阵研究后,我们发现ReachMe 在给任意 KOL 发送消息的时候会通过“/api/kol/message”接口生成消息的概要信息,其中包含“_id”字段,这个字段是在发消息的时候附带到链上合约Function: deposit(string _identifier,address _kolAddress)使用,对应的是_identifier字段。
并且给KOL 发送消息附带的 BNB 其实就是调用合约Function: deposit附带的BNB 数量,于是我们构造了一笔交易,将“Hi CZ”的消息对应的“_identifier”以及 CZ 的地址,并附带 0.01 BNB(最低仅需 0.001 BNB)发送给合约。
由于ReachMe 在设计之初并没有将 KOL 预设的发消息成本放在合约中进行检测(或许是为了方便KOL 更好地随时调整消息的价格并且节省 Gas 费?),因此可以通过修改前端代码,修改网络响应包或者直接与合约进行交互来绕过 1 BNB 的限制。这是由于服务端在检索链上的交易时也遗漏了消息价格与链上交易的 BNB 数量的检查。
于是我们用了大约10 分钟,成功绕过了和 CZ 对话要花费 1 BNB 的规则,仅花费了 0.01 BNB 就可以和 CZ Say Hi。
另外,值得注意的是,其实还有更深一步的利用,如:给CZ 发有趣的消息,进行鱼叉钓鱼?鉴于 CZ 本人影响较大,后面就放弃了这部分测试,大家也多注意安全,谨防钓鱼。
总结
这类结合中心化与去中心化的产品设计,经常会出现链上和链下的安全检查不一致的情况。因此,攻击者可以通过分析链上链下的交互流程,绕过某些检查限制。慢雾安全团队建议项目方尽可能在链上和链下的代码中同步必要的安全检查项,避免被绕过的可能。同时,建议聘请专业的安全团队进行安全审计,以发现潜在的安全风险并加以防范。
Bitcoin’s Realized Capitalization Hits Historic $882B: Signaling Possible Price Surge Ahead
On April 29, Bitcoin succeeded in breaking its historical record for Realized Capitalization when it...
Best Crypto To Buy In May: Experts Eye Web3 ai, Polkadot, Hyperliquid, & Litecoin:
Looking for the best cryptos in May? Web3 ai stands above Polkadot, Hyperliquid, and Litecoin with l...
Since Blockchain Technology Is Public, How Are the Identities of Users Protected?
Many users wonder: Since blockchain technology is public, how are the identities of users protected?...