付费视频,请购买课程( ¥2,000.00 )后再观看
合约安全 - 熟悉常见漏洞
13次播放
12小时前
视频 AI 总结: 视频主要探讨Web3安全的重要性,强调区块链合约不可篡改性导致安全问题比Web2更严重,且缺乏回滚机制。内容涵盖合约漏洞、前端/后端安全、网络钓鱼、社交工程(如假冒合作、钓鱼网站、恶意软件下载)等多种威胁。为应对这些挑战,视频提出多项关键策略,包括进行多方审计(如Bug Bounty和竞赛)、精简合约功能、完备测试、制定应急预案,并详细讲解了重入攻击、Gas爆炸、意外以太币、签名重放/抢跑、整数溢出和精度损失等常见合约漏洞及其防范方法。
关键信息:
- Web3安全的重要性与挑战:
- 区块链合约不可篡改是其特性,但导致一旦出现漏洞,损失巨大且无法回滚(与Web2银行系统可回滚不同)。
- 安全威胁不仅限于合约本身,还包括前端、后端、网络钓鱼、社交工程(如假冒项目合作、钓鱼网站、恶意钱包下载、OpenAI等高权限工具泄露私钥风险)。
- 安全防范策略:
- 审计: 进行多方审计,包括Bug Bounty(漏洞赏金)和竞赛(Contest)模式,根据项目资金量增加审计投入。
- 精简合约: 最小化合约功能,减少外部依赖,降低代码复杂度。
- 完备测试: 采用静态分析和动态分析,并利用AI工具辅助分析合约安全。
- 预案预演: 制定应急响应计划,减少攻击发生后的损失,如设置“关闭开关”以快速止损。
- 避免中心化依赖: 识别并加固中心化环节的薄弱点。
- 复用代码: 避免“造轮子”,尽量复用经过验证的现有代码。
- 常见合约漏洞及防范:
- 重入攻击 (Reentrancy Attack): 攻击者在提款操作中反复调用提款函数,掏空合约资金。防范方法包括使用
nonReentrant修饰符或遵循“检查-影响-交互”(Checks-Effects-Interactions)模式。 - Gas 爆炸 (Gas Bomb): 恶意调用导致循环或数据处理量过大,使Gas消耗线性或指数增长,导致交易无法执行。应避免Gas消耗随数据量增长的函数,或限制参数长度。
- 意外的以太币 (Unexpected Ether): 合约余额因
selfdestruct(销毁合约)或矿工将手续费接收地址设为合约地址而增加,但totalDeposit等内部变量未更新,导致合约状态不一致,影响正常提款。 - 签名重放/抢跑 (Signature Replay/Front-running): 签名可能被重复使用(重放攻击)或被他人截获并抢先执行(抢跑攻击)。需注意签名的唯一性和时效性。
- 整数溢出/下溢 (Integer Overflow/Underflow): 在
unchecked块中进行加减操作时,数值超出uint类型范围导致错误结果。 - 精度损失 (Precision Loss): 在除法运算中,由于Solidity不支持浮点数,导致精度丢失,尤其在处理小数值时。建议使用
wei单位并由前端处理显示。 - EOA与合约检查问题 (EOA vs. Contract Check): 在合约构造函数中检查
extcodesize来判断调用者是否为EOA会失效,因为此时合约代码尚未部署。
- 重入攻击 (Reentrancy Attack): 攻击者在提款操作中反复调用提款函数,掏空合约资金。防范方法包括使用