攻击者从智能合约中转移走代币的常见手段通常涉及技术漏洞、逻辑缺陷或权限滥用。以下是主要的攻击方式及典型案例分析: 1. 重入攻击(Reentrancy)原理:合约在更新状态前先调用外部合约,攻击者通过递归回调重复提取资金。 案例:2016年The DAO攻击(损失360万ETH)。 攻击步骤:
防御:使用检查-效果-交互模式(Checks-Effects-Interactions),或引入重入锁(如OpenZeppelin的ReentrancyGuard)。
2. 权限配置错误 3. 逻辑漏洞 4. 未验证返回值(ERC20兼容性问题) 5. 跨合约调用劫持原理:攻击者通过恶意合约在回调中篡改执行流。 示例: solidity- function onERC721Received(address, address, uint256, bytes memory) public returns (bytes4) { victimContract.transferFunds(); // 在NFT转账回调中触发资金转移 return IERC721Receiver.onERC721Received.selector;}
防御:限制回调函数的操作范围。
6. 签名钓鱼(Phishing) 7. 预言机操纵 防御建议
|