-
溢出漏洞(2024-9-23)漏洞解析:算术运算超出变量范围(如整数上溢或下溢),导致资金丢失或账户操纵。修复建议:使用SafeMath库或检查边界值,避免未检查的操作。
-
自销毁函数的恶意利用(2024-9-25)漏洞解析:攻击者调用自毁函数(selfdestruct),耗尽合约资金。常见于权限控制缺失。修复建议:限制自毁功能仅所有者调用,或避免直接资金存储。
-
不安全的Delegatecall(2024-9-29)漏洞解析:使用delegatecall时,外部合约可修改当前存储,引入任意代码执行风险。修复建议:避免delegatecall;或用严格权限控制目标合约。
-
重入漏洞(2024-10-5)漏洞解析:外部调用前状态未更新,攻击者通过回调函数多次重入,盗取资金。修复建议:遵循“检查-生效-交互”模式,或用重入锁(如ReentrancyGuard)。
-
只读重入漏洞(2024-10-11)漏洞解析:只读函数被重入时返回错误状态,导致逻辑错误或操纵。不同于资金重入。修复建议:避免在只读函数中调用外部合约;检查callbacks安全性。
-
ERC777代币回调攻击(2024-10-15)漏洞解析:ERC777的tokensReceived/tokensToSend回调函数被恶意重入,引发重入或状态操纵。修复建议:在转账时用重入锁,或限制回调函数权限。
-
不安全的CALL方法/CALL代码注入(2024-10-18)漏洞解析:低层call()未检查地址和返回值,攻击者注入恶意代码或转移资金。修复建议:用transfer/send避免call;或检查地址为合约且返回值。
-
私有数据泄露(2024-10-16)漏洞解析:私有变量(private)通过链上数据可读取,泄露敏感信息。存储非加密所致。修复建议:避免存储私有数据;或用加密;权限控制访问。
-
ERC-721中不受保护的callback漏洞(2024-10-21)漏洞解析:NFT的onERC721Received回调未验证调用者,允许未经授权的转移或攻击。修复建议:添加调用者验证逻辑,确保只安全合约调用。
-
合约中的隐藏后门(2024-10-22)漏洞解析:开发者预留未公开功能(如升级后门),导致恶意控制资金。修复建议:审计所有代码;移除冗余功能;使用透明代理模式。
-
绕过是否智能合约的检测(2024-10-23)漏洞解析:攻击者通过构造合约地址伪装成外部账户(EOA),绕过权限检测。修复建议:用tx.origin避免;但谨慎替换为msg.sender验证。
-
DOS漏洞(2024-10-24)漏洞解析:循环或外部调用消耗过多gas,导致交易失败(拒绝服务),影响可用性。修复建议:限制循环次数;或用链下计算;优化gas消耗。
-
合约自带方法的随机性安全(2024-10-25)漏洞解析:内置随机源(如blockhash)易被矿工操纵,导致游戏或奖励不公。修复建议:用预言机(Chainlink VRF)提供真随机数;避免链上随机。
-
默认的Public权限设置(2024-10-29)漏洞解析:函数未显式设置权限(默认public),允许任意用户调用和操纵状态。修复建议:为敏感函数添加修饰符(如onlyOwner);明确定义可见性。
-
合约使用tx.origin可能导致易受攻击(2024-10-30)漏洞解析:tx.origin返回原始调用者,攻击者通过中间合约伪装,绕过身份验证。修复建议:优先用msg.sender验证;避免在权限控制中使用tx.origin。
-
未初始化的状态变量(2024-11-5)漏洞解析:状态变量未初始值,可能被复用或指向默认值,引发逻辑错误或资金风险。修复建议:在构造函数中初始化所有变量;避免依赖默认值。
-
存储槽碰撞问题(2024-11-11)漏洞解析:变量存储位置重叠(如升级合约时),意外覆盖数据,导致资金损失。修复建议:规划存储布局;用代理模式;避免动态数组冲突。
-
ERC20代币的approval钓鱼攻击(2024-11-12)漏洞解析:用户误授权高额度给恶意合约,攻击者窃取资金(如增加allowance后转账)。修复建议:用approve/transferFrom模式;教育用户授权有限额度;监控事件。
-
签名重放漏洞(一)(2024-11-22)漏洞解析:同一签名被多次重放于不同交易,导致重复操作(如投票或转账)。修复建议:添加nonce或唯一标识符到签名;存储已用签名。
-
签名重放漏洞(二)(2024-11-25)漏洞解析:类似(一),但针对不同上下文(如跨链),签名未绑定特定场景。修复建议:在签名中包含链ID或上下文参数;验证应用范围。
-
错误的存储类型(storage vs memory)(2024-11-28)漏洞解析:变量错误指定为内存(memory)而非存储(storage),导致临时数据不持久化或冲突。修复建议:明确声明类型;局部变量用memory,状态用storage;避免混淆。
-
脏字节污染(2024-11-29)漏洞解析:byte数组未清零复用,残留数据被读取或写入,引发逻辑错误或信息泄露。修复建议:手动初始化字节数组;或用库如BytesLib确保清零。
-
数字最大值不够导致资金丢失(2025-3-3)漏洞解析:数值类型范围过小(如uint8),溢出导致资金截断或丢失。与整数上溢相关。修复建议:选择合理大小类型;使用SafeMath检查最大值。
-
NFT mint暴露Metadata漏洞(2025-7-4)漏洞解析:NFT铸造函数未检查元数据访问控制,外部可读取或修改私有URI。修复建议:控制metadata接口权限;用加密存储敏感链接。
-
先除后乘造成整数截断(2025-3-14)漏洞解析:计算顺序错误(如先除再乘),导致精度损失或资金不准确分配。修复建议:调整顺序为乘后除;用高精度计算库处理小数。
-
未经检查的返回值(不符合ERC标准)(2025-4-8)漏洞解析:低层调用未检查返回值(如transfer),攻击者利用失败交易而不回滚。修复建议:强制检查bool值;用OpenZeppelin的SafeERC20包装。
-
交易失败时不回滚(2025-4-10)漏洞解析:失败交易未整体回滚状态,允许部分操作,导致资金不一致。修复建议:整体事务用require/revert;避免状态变更在检查前。
-
转账收费代币不兼容(2025-4-13)漏洞解析:合约未处理fee-on-transfer代币,接收资金量减少,逻辑出错。修复建议:查询余额变化后转账;用余额检查替代固定量。
-
许可函数绕过(Phantom方法)(2025-6-25)漏洞解析:未实现接口函数(如phantom),外部误调用,绕过权限或引发错误。修复建议:避免冗余函数;或用revert处理未实现方法。
-
首次存款错误导致合约破坏(2025-4-25)漏洞解析:初始化逻辑错误,首次存款条件不满足时合约无法使用或锁定资金。修复建议:确保初始化可重试;或用构造函数设置默认。
-
空循环绕过验证(2025-4-27)漏洞解析:空循环或无效验证被攻击者跳过,绕过访问控制或条件检查。修复建议:避免无意义循环;用真实条件并检查gas消耗。
-
数字转型时候向下溢出(2025-4-28)漏洞解析:类型转换(如uint到smaller uint)导致值截断或负溢出,资金错误。修复建议:检查转换范围;用库处理安全转换(如SafeCast)。
-
基于闪电贷的价格操纵漏洞(2025-4-30)漏洞解析:合约依赖链上价格,闪电贷大额资金临时操纵价格,套利或盗取资金。修复建议:用时间加权平均预言机;限制闪电贷依赖。
-
ecRecover函数还原签名的地址问题(2025-5-1)漏洞解析:ecrecover未检查签名是否有效,返回0地址或恶意地址,权限绕过。修复建议:验证ecrecover结果非0;用签名库添加检查。
-
预言机产生了过时的价格(2025-5-5)漏洞解析:预言机返回延迟或旧价格,被操纵用于清算或交易不公平。修复建议:用多源预言机;设置心跳机制;添加时间检查。
-
ERC20代币不同精度导致的精度问题(2025-5-6)漏洞解析:代币decimal不一致,计算时精度错误,资金分配不准确。修复建议:归一化精度单位;转换时乘/除以10^decimals差。
-
没有设置滑点保护(2025-5-7)漏洞解析:交易无滑点限制,价格波动时用户接收min代币量少,损失资金。修复建议:添加slippage参数;检查最小输出量(如amountOutMin)。
-
不正确的abi.encodePacked编码(2025-5-8)漏洞解析:abi.encodePacked未处理类型冲突,哈希碰撞或签名验证失败。修复建议:用abi.encode;或添加分隔符;类型一致。
-
结构体不完全的删除导致数据残留(2025-5-9)漏洞解析:删除结构体时未清除嵌套数据,残留值后续被读取利用。修复建议:完整迭代删除;或用delete key自动清空。
-
错误的删除数组方式导致数据残留(2025-5-12)漏洞解析:数组删除(如pop)仅减少长度,旧元素残留,可被复用泄露。修复建议:用map代替数组;或显式清空值;避免残留。
-
tx.GasPrice操纵(2025-5-13)漏洞解析:矿工操纵交易gas价格,影响排序和逻辑(如拍卖不公平)。修复建议:避免依赖gasPrice;用提交-揭示机制处理公平。
-
return和break,错误的循环逻辑(2025-5-14)漏洞解析:循环内return或break位置不当,跳过必要操作,状态不一致。修复建议:检查循环逻辑完整性;确保所有路径正确终止。
-
转账函数固定2300个gas导致失败(2025-5-15)漏洞解析:转账指定低gas(2300),fallback函数不足失败,资金锁定或丢失。修复建议:避免固定gas;检查接收者或用call带足够gas。
-
ERC721 NFT未经授权的被转移(2025-5-19)漏洞解析:NFT转移函数未验证调用者权限,外部可转移他人资产。修复建议:添加ownerOf或授权检查;用安全转移模式。
-
自转账安全问题(2025-5-22)漏洞解析:合约向自身转账时,fallback未处理或重入,可能导致资金锁定。修复建议:避免合约转账到自身;或实现安全receive函数。
-
质押获取的奖励代币可以被合并(2025-5-28)漏洞解析:奖励代币合并时未检查来源,攻击者滥用质押合并窃取收益。修复建议:隔离合并逻辑;添加奖励唯一标识符防重用。
-
闪电贷缺少发起人检查(2025-6-5)漏洞解析:闪电贷函数未验证调用者,外部可借用资金无需验证。修复建议:实现发起人检查(如调用者合约验证);限制flash loan权限。
-
逻辑错误-合约锁定处理错误(2025-6-6)漏洞解析:状态锁定逻辑错误(如错误条件),导致永久锁定资金无法提取。修复建议:测试所有解锁路径;用时间锁或多重签名控制。
-
瞬态存储误用(2025-6-23)漏洞解析:临时存储(如内存变量)被错误视为永久,导致数据丢失或冲突。修复建议:明确存储位置;transient类型慎用;优先用状态变量。
原文始发于微信公众号(Ice ThirdSpace):最终篇!!全网最细的DeFiVulnLab详解——新手Web3安全入门必看
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论