1、存在漏洞的代币
REM
ATM
BAT
NULS
2、解析
漏洞在于transfer函数中的if else判断所致。如果 transfer 函数正常运行未抛出异常,该交易的 status 即是 true,当 balances[msg.sender] < _value 时进入 else 逻辑部分并 return false,最终没有抛出异常。
攻击者可以利用存在该缺陷的代币合约向交易所发起充值操作,如果交易所仅判断TxReceipt Status 是 success,即 status 为true的情况,就以为充币成功,就可能存在“假充值“。
function transfer(address _to, uint256 _value) returns (bool success) {
if (balances[msg.sender] >= _value && _value > 0) {
balances[msg.sender] -= _value;
balances[_to] += _value;
Transfer(msg.sender, _to, _value);
return true;
} else {
return false;
}
比特儿REM假充值
网友评论