CVE-2025-57247CVE-2025-57247是BATBToken智能合约(合约地址:0xfbf1388408670c02f0dbbb74251d8ded1d63b7a2,编译器版本:v0.8.26+commit.8a97fa7a)中存在的一个严重访问控制缺陷漏洞。该漏洞位于基础ERC20合约的白名单管理功能中,具体涉及setColdWhiteList()和setSpecialAddress()两个关键函数。这两个函数被错误地声明为public类型,未添加任何访问控制修饰符(如onlyOwner),导致任何外部用户都可以直接调用这些函数来操纵白名单设置。该漏洞的CVSS评分为9.1,属于严重级别,其向量为CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H,表明该漏洞可通过网络远程利用,无需任何权限认证和用户交互即可触发。攻击者可绕过冷钱包转账时间限制,操纵特殊地址设置,进而破坏合约的分红分配机制。此漏洞不仅导致权限提升,还违反了合约原本设计的代币经济模型(tokenomics),可能对持有者和项目方造成重大经济损失。该漏洞已于2025年10月6日公开披露,影响部署在BSC(币安智能链)上的BATBToken合约。
BATBToken智能合约基于ERC20标准实现,继承了一个基础合约来扩展功能。基础合约中定义了两个关键的管理函数:setColdWhiteList()用于管理冷钱包白名单,控制特定地址的转账冷却时间限制;setSpecialAddress()用于设置特殊地址,可能与分红分配或特权操作相关。漏洞的根本原因在于这两个函数被声明为public而非private或internal,且未使用任何访问控制修饰符(如onlyOwner、require(msg.sender == owner)等)。在Solidity中,public关键字仅表示函数可以被外部调用以及自动生成getter函数,并不提供任何访问控制能力。攻击者只需构造一个简单的交易,调用setColdWhiteList()将自己的地址添加到冷钱包白名单中,即可绕过合约设计的转账冷却时间限制。类似地,调用setSpecialAddress()可以将任意地址设置为特殊地址,从而干扰正常的分红分配流程。由于合约部署在BSC上,攻击成本极低(仅需支付少量Gas费),且整个攻击过程无需任何权限或交互。利用流程如下:1)攻击者调用setColdWhiteList()将目标地址加入白名单;2)攻击者绕过冷钱包转账限制进行大额转账;3)攻击者调用setSpecialAddress()操纵分红地址设置;4)攻击者通过特权操作窃取代币或破坏代币经济模型。