返回论坛

智能合约安全攻防:交易回滚、交易排挤与随机数攻击深度解析

查找币 学术研究 安全研究 Web3安全 区块链安全

查找币安全研究院

钱包恢复评估 | 链上取证分析 | Web3 事件响应
以合法授权、证据保全、隐私保护和可复核流程为前提,不要求用户在线提交完整私钥或助记词。

查看研究院 研究报告中心
## 引言 随着区块链生态的蓬勃发展,智能合约数量呈指数级增长,但随之而来的安全威胁也愈发严峻。据查找币 Hacked 统计,截至当前,仅以太坊(ETH)、EOS、波场(TRON)三条公链上因智能合约漏洞导致的资产损失已高达 **126,883,725.92 美元**,且攻击手法呈现出跨链复用的趋势。本文将从技术原理层面深度剖析三种典型攻击向量:交易回滚攻击、交易排挤攻击与随机数攻击,并给出防御建议。 --- ## 一、交易回滚攻击(Roll Back Attack) ### 技术原理 交易回滚攻击的核心在于利用智能合约中**开奖与下注在同一交易内**的架构缺陷。攻击者通过监听合约状态,在交易执行过程中检测开奖结果,若判定为“未中奖”,则触发回滚机制取消交易,使资产状态恢复至转账前。 ### 攻击流程 1. **下注阶段**:攻击者发起一笔包含下注操作的交易,该交易内联了开奖逻辑。 2. **状态检测**:在交易执行过程中,攻击者通过合约状态读取函数获取开奖信息。 3. **条件判断**:若开奖结果对攻击者不利,则通过异常抛出或条件分支触发交易回滚。 4. **资产恢复**:交易被撤销,下注资金原路返回,攻击者无需承担损失。 ### 典型案例 该攻击手法最早在 **EOS DApp** 中频繁出现,随后迅速蔓延至波场等公链。目前已有 **12 个 DApp** 遭受此类攻击,累计损失超百万美元。 ### 防御方案 **核心原则**:将下注与开奖操作分离至不同交易中。例如: - 使用 **commit-reveal 模式**:用户先提交承诺(commit),待区块确认后再提交揭示(reveal)交易进行开奖。 - 引入 **预言机机制**:由链下服务提供开奖结果,避免链上状态被直接回滚。 --- ## 二、交易排挤攻击(Transaction Congestion Attack) ### 技术原理 交易排挤攻击针对 **EOS 的 defer 交易机制**。攻击者通过向目标合约发送大量低优先级 defer 交易,恶意占用区块的 CPU 资源,导致合约原本计划在指定区块执行的 defer 开奖交易因资源不足被延迟至后续区块执行。 ### 攻击链式反应 1. **随机数依赖**:许多 EOS 游戏合约使用区块时间或区块高度作为随机数种子。 2. **区块差异**:同一笔 defer 交易在不同区块执行会产生不同结果。 3. **攻击者策略**:攻击者监控开奖结果,若当前结果不利,则通过大量 defer 交易延迟开奖,迫使合约在新区块重新计算随机数。 ### 历史数据 2019 年,**22 个竞猜类 DApp** 因此类攻击损失大量资金。攻击者 **loveforlover** 首次在 **EOS.WIN** 中利用该手法获利,后续手法被多次复制。 ### 防御方案 - **避免关键操作依赖 defer 交易**:对于结果可能因区块变化而不同的操作(如开奖),应采用即时执行模式。 - **引入确定性随机数**:使用链下生成的随机数种子(如 VRF 验证随机函数),消除区块依赖。 - **限制 defer 交易数量**:通过合约逻辑限制每个账户的 defer 交易数量,降低排挤攻击可行性。 --- ## 三、随机数攻击(Random Number Attack) ### 技术原理 随机数攻击旨在**预测或操纵智能合约的随机数生成算法**。目前多数链上游戏采用链上公开数据(如区块时间、未来区块哈希)作为随机数种子,这类种子生成的随机数本质上是**伪随机数**,存在可预测性。 ### 攻击路径 1. **算法逆向**:攻击者通过合约代码分析或反编译获取随机数生成逻辑。 2. **种子预测**:利用已知的链上数据(如当前区块哈希、时间戳)计算随机数结果。 3. **连续攻击**:攻击者在同一交易内多次调用随机数函数,确保所有结果均有利可图。 ### 经典案例 2018 年 11 月 11 日,攻击者向 **EOS.WIN** 发起连续随机数攻击,单次获利 **20,000 枚 EOS**。该攻击利用合约使用 `block_timestamp` 作为种子,攻击者通过预计算实现 100% 胜率。 ### 防御方案 - **使用安全随机数源**:推荐采用 **VRF(可验证随机函数)** 或 **链下随机数服务**,确保种子不可预测。 - **引入延迟机制**:将随机数生成与用户操作分离,例如使用未来区块哈希(需注意矿工操控风险)。 - **限制单次调用次数**:通过合约逻辑限制同一交易内对随机数函数的调用次数。 --- ## 总结与建议 | 攻击类型 | 核心漏洞 | 防御策略 | |---------|---------|---------| | 交易回滚 | 开奖与下注同交易 | 分离交易、commit-reveal | | 交易排挤 | defer 交易依赖区块资源 | 避免 defer、限制交易数量 | | 随机数攻击 | 链上可预测种子 | VRF、链下种子、延迟机制 | **安全开发最佳实践**: - **审计优先**:上线前进行专业智能合约安全审计。 - **最小权限原则**:合约函数权限严格分离。 - **监控预警**:部署链上交易监控系统,及时发现异常模式。 --- 本文由查找币安全团队整理发布 **查找币安全团队**专注于区块链安全研究、智能合约审计及链上威胁情报分析,致力于为 Web3 生态提供专业安全解决方案。
在论坛中查看和回复