·
WEB3.0 学习笔记-8
WEB3.0 学习笔记-8 智能合约安全事件
安全事件分类 漏洞攻击:规则被绕过 重入攻击:重复调用提走资产 预言机操纵:价格波动攻击 权限控制不当:函数/治理被恶意利用 可升级性漏洞:Proxy替换逻辑被利用 跨链桥漏洞:验证机制薄弱 随机数/时间漏洞:可预测性 闪电贷攻击:短时流动性操纵 编译器与语言陷阱:技术实现缺陷 人为与运营失误:密钥泄露/升级失误/团队问题 可了解类型: 闪电贷本质是无抵押、单交易原子性贷款。 从贷款、套利交易到借贷还款等交易都处于同一个区块当中,如果某一个交易节点不满足智能合约条件,整个交易链条都将回撤。 简单理解:如果智能合约判断无法在交易结束时归还借来的资金,那么交易就会被判定为失败,并回滚整个过程。 常见实现:Aave、dYdX、Balancer、Uniswap V3 的 flash swap 等 常见合法用途: 跨交易所套利(借大量资金在不同 AMM 之间做价差) 债务重组 / 清算替代(在 DeFi 清算时临时筹资) 提供流动性时的批量操作与原子性交易 原子性提交复杂金融操作(一次性完成多步骤) 闪电贷的成本:Gas费用、闪电贷手续费/协议成本、滑点/交易成本。闪电贷被利用的核心原因:原子性+大额短期流动性,可以在一次交易内同时调用多个合约(DEX、lending、AMM、目标合约),以复杂操作绕过单合约的局部保护。 脆弱类型: 单一即时价格依赖(Oracle 单点): 问题:用某次 swap 的即时价格做清算/抵押判断。 被放大:闪电贷制造极端 swap,价格瞬间崩坏 → 触发清算。顺序 / 会计假设不稳(逻辑漏洞): 问题:先调用外部合约再更新状态(没有“检查-效果-交互”)。 被放大:攻击者在回调中重复利用同一逻辑。 不可组合安全性(组合攻击面): 问题:合约以为它只与“友好合约”交互,但现实是任意合约会被串联。 被放大:攻击者把多个合约组合成攻击链。 治理/权限缺陷: 问题:升级/管理权限集中或无 timelock。 被放大:闪电贷可用来触发治理投票或模拟条件,迅速利用权限缺口(较少见但存在)。 经济模型错误: 问题:假设市场深度、滑点或手续费是静态的。 被放大:大额交易改变这些参数,导致返还/清算失效。 常见攻击模式: 预言机操纵 + 清算/借贷滥用:用闪电贷在某 DEX 上制造瞬时价格偏离,从而使目标合约按错误价格进行清算或计算抵押率。 会计/逻辑顺序缺陷利用:在目标合约做出假设(例如“先检查再更新”)的时序窗口内,用闪电贷改变外部条件导致逻辑被绕过。 组合套利被滥用:在多协议间快速调度资金制造看似“合法”的条件触发漏洞(例如错误的手续费/滑点处理)。 重复调用 / 回调利用:在一次交易内反复调用某些未防护的外部回调或 fallback,造成状态不一致并提走资产。 重入攻击: 攻击者在目标合约函数还没完成并更新内部状态之前,通过外部调用(通常是被调用者的回调函数)再次调用该合约的敏感函数,从而在状态更新之前重复执行提款/转账等操作,导致重复转出资产或造成不一致状态 被攻击原因:目标合约本身设计存在可被利用的设计/漏洞 预言机操纵: 数据流动路径: 现实世界 → 数据源(API) → 预言机节点 → 预言机合约 → 智能合约 主流预言机: 单点预言机:项目方或一台服务器推送数据 操纵:数据源节点1~2个,控制容易 事件:bZx 预言机攻击事件(2020),攻击者通过操纵 DEX 价格源实现闪电贷套利。 多节点聚合:多个数据源,通过投票/加权平均聚合 操纵:1.临时大量节点参与;2.控制权重高的节点;3.攻击少数节点以降低投票人数。 影响:闪电贷攻击常用手法 数据喂价池:由第三方节点持续推送价格(如喂价人) 可信执行环境 / 加密证明:TEE、ZKP等增强信任
转发此帖子?
与您的关注者分享。
回复