首页 > 教程攻略 > web3.0 >黑客教你如何用0.01 BNB"白嫖"CZ

黑客教你如何用0.01 BNB"白嫖"CZ

来源:互联网 时间:2026-07-07 21:58:19

先说一个有意思的发现。昨天,慢雾安全团队正在整理 APT 攻击相关的素材,山哥(@im23pds)突然激动地跑过来说:“我发现了一个有趣的项目,CZ 在高频使用它——我们或许能零成本跟 CZ 打个招呼。”于是团队迅速列出了几个可能的攻击点:劫持 CZ 在 ReachMe 的账号、篡改他的设置,或者绕过向 CZ 发消息需要支付 1 BNB 的限制。

大约十分钟后,我们还真找到了一个漏洞:在 ReachMe.io 上能用极低成本跟任意用户“Say Hi”。团队第一时间联系了项目方,提交了详细的漏洞验证过程。ReachMe 团队反应非常迅速,很快修复了问题,还邀请我们做了复测。必须给这种认真对待安全的态度点个赞。

黑客教你如何用0.01 BNB

黑客教你如何用0.01 BNB“白嫖”CZ

背景

ReachMe.io 是一个基于 BNB Chain 的付费聊天平台,简单说就是粉丝花 BNB 给 KOL 发私信,KOL 拿 90%,平台抽 10%。如果 KOL 五天内没回复,用户还能退一半的钱。2025 年 3 月 27 日,币安创始人 CZ 把自己的 X 账号简介改成了:“DM: https://reachme.io/@cz_binance (fees go to charity)”,意思是“在 ReachMe 上私信我,费用捐给慈善”。

于是问题来了:跟 CZ 说句话,成本是 1 枚 BNB。这可不是小数目。能不能绕过这个限制?团队立刻开始动手。

黑客教你如何用0.01 BNB

慢雾安全团队很荣幸获得了 CZ 和 ReachMe 项目方的致谢。

黑客教你如何用0.01 BNB

发现过程

经过一番分析,团队发现 ReachMe 在发送消息时,会先通过 /api/kol/message 接口生成一条消息的概要信息,里面包含一个 _id 字段。这个字段在执行链上合约 Function: deposit(string _identifier, address _kolAddress) 时被当作 _identifier 参数传入。

关键点在于:给 KOL 发消息时附带的 BNB 数量,就是调用 deposit 函数时附带的 BNB 数量。那么,如果我们直接构造一笔交易,把“Hi CZ”这条消息对应的 _identifier 和 CZ 的地址传进去,再附带 0.01 BNB(最低甚至只要 0.001 BNB)发送给合约,会怎样?

黑客教你如何用0.01 BNB

黑客教你如何用0.01 BNB

黑客教你如何用0.01 BNB

结果发现,ReachMe 在设计合约时没有把 KOL 预设的消息价格放在链上做检查——可能是为了方便 KOL 随时调整价格,同时节省 Gas 费。但这恰好给了可乘之机:通过修改前端代码、篡改网络响应包,或者直接跟合约交互,就能轻松绕过 1 BNB 的限制。致命问题是,服务端在检索链上交易时,也没有核对消息价格与链上实际转账的 BNB 数量是否一致。

黑客教你如何用0.01 BNB

于是,团队只花了大约十分钟,就成功用 0.01 BNB 给 CZ 发了条消息。整个过程就像给一个没上锁的保险箱换了把假钥匙——表面上很安全,实际上门是虚掩的。

黑客教你如何用0.01 BNB

顺便提一句,这个漏洞还能玩得更深:比如给 CZ 发一条看似无害但实际上带钩子的消息——鱼叉钓鱼。考虑到 CZ 的影响力,团队放弃了进一步测试。大家上网也要多留个心眼,谨防钓鱼攻击。

总结

这类结合中心化与去中心化的产品设计,经常会出现链上链下安全检查不一致的问题。攻击者只要摸清流程,就能找到绕过的缝隙。慢雾安全团队建议项目方在链上和链下的代码中同步必要的安全检查项,别给漏洞留机会。同时,聘请专业安全团队做审计,才能把潜在风险扼杀在摇篮里。