DeFi常见安全漏洞及预防措施全解析

robot
摘要生成中

DeFi 常见安全漏洞及预防措施

近期,某安全专家在一场网络分享会上探讨了 Web3 行业过去一年多遭遇的重大安全事件,分析了这些事件发生的原因以及如何规避,并总结了常见智能合约的安全漏洞及预防措施,同时对项目方和普通用户给出了一些安全建议。

常见的 DeFi 漏洞类型主要包括闪电贷、价格操纵、函数权限问题、任意外部调用、fallback 函数问题、业务逻辑漏洞、私钥泄漏和重入攻击等。其中闪电贷、价格操控和重入攻击是较为典型的几种。

闪电贷

闪电贷本身是 DeFi 的一种创新,但也常被黑客利用。攻击者通过闪电贷借出大量资金,对价格进行操纵或攻击业务逻辑。开发者需要考虑合约功能是否会因为巨额资金导致异常,或被用于在一笔交易中与多个函数交互获取不正当收益。

过去两年,许多 DeFi 项目因闪电贷问题遭受攻击。有些项目在固定时间根据持仓量发放奖励,却被攻击者利用闪电贷购买大量代币,在奖励发放时获取大部分收益。还有一些通过代币计算价格的项目,也容易受到闪电贷的影响。

价格操控

价格操控问题与闪电贷密切相关,主要有两种类型:

  1. 计算价格时使用第三方数据,但使用方式不正确或检查缺失,导致价格被恶意操控。

  2. 使用某些地址的代币数量作为计算变量,而这些地址的代币余额可被临时增减。

重入攻击

调用外部合约的主要风险之一是它们可能接管控制流,并对数据进行未预料到的更改。典型的重入攻击示例如下:

solidity mapping (address => uint) private userBalances;

function withdrawBalance() public { uint amountToWithdraw = userBalances[msg.sender]; (bool success, ) = msg.sender.call.value(amountToWithdraw)(""); require(success); userBalances[msg.sender] = 0; }

由于用户余额直到函数最后才设为0,重复调用仍会成功提取余额。

解决重入问题需注意:

  1. 不仅防止单一函数的重入
  2. 遵循 Checks-Effects-Interactions 模式
  3. 使用经验证的防重入 modifier

项目方安全建议

  1. 遵循最佳安全实践进行合约开发
  2. 实现合约可升级和暂停功能
  3. 采用时间锁机制
  4. 加大安全投入,建立完善的安全体系
  5. 提高所有员工的安全意识
  6. 预防内部作恶,在提升效率的同时加强风控
  7. 谨慎引入第三方,默认上下游都不安全

用户判断智能合约安全性的方法

  1. 确认合约是否开源
  2. 检查 Owner 是否采用去中心化的多签
  3. 查看合约已有的交易情况
  4. 确认合约是否可升级,是否有时间锁
  5. 查看是否接受过多家机构审计,Owner 权限是否过大
  6. 注意预言机的使用情况

总之,DeFi 安全是一个系统性的问题,需要项目方和用户共同重视,采取全面的安全措施,才能有效降低风险。

Cobo DeFi 安全课(下):DeFi 常⻅安全漏洞及预防

DEFI18.74%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 5
  • 分享
评论
0/400
ForkThisDAOvip
· 07-12 07:12
代码审计很重要啊
回复0
NewPumpamentalsvip
· 07-12 05:08
请严格制定合约审计
回复0
ConsensusDissentervip
· 07-10 09:19
审计也需要审计
回复0
RektRecoveryvip
· 07-10 09:18
三重签名是根本
回复0
落叶不归根vip
· 07-10 09:09
安全第一不二选择
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)