DeltaPrime 黑客事件:损失 485 万美元

DeltaPrime协议于2024年11月11日遭受黑客攻击,损失约485万美元。攻击者利用智能合约中的两个关键漏洞进行未授权借款和奖励操纵,最终导致资产被盗。在此事件后,DeltaPrime暂停了所有流动池,以保护用户资产并确保协议的安全性。

"DeltaPrime Hack: $4.85M Loss - Three Sigma" banner

DeltaPrime 协议简介

DeltaPrime 是一个在 Avalanche blockchain 上运行的 缺乏抵押品的借贷协议,旨在通过结构化的 无信任借贷池 最大化 资本效率。该协议允许用户将资产 存入流动性池 并根据 利用率 赚取 利息借款人 可以使用部分 抵押品 访问这些资金,并在集成 跨保证金功能 的各种 DeFi 平台 上进行部署。

DeltaPrime 的运作方式

PrimeLoans 系统

DeltaPrime 的核心是 PrimeLoans 系统,它使缺乏抵押品的借贷成为可能。DeltaPrime 不是将借来的资金直接发送到用户的钱包,而是利用称为 Prime Accounts特殊智能合约 来管理每笔贷款。这些 Prime Accounts 通过不断监控交易,确保资产价值保持在安全阈值之上,从而强制执行严格的偿付能力。这一机制为借款人提供了增强的 Prime Brokerage 体验,配备了更高的流动性和跨保证金功能。

偿付能力和清算机制

DeltaPrime 结合了一种 去中心化清算机制 以维护贷款的偿付能力。如果因市场波动导致贷款的价值与抵押品的比率变得危险,任何人都可以通过清算一些抵押品来触发部分偿还。这个过程通过确保贷款保持偿付能力来保护协议的整体风险状况。

智能合约架构

DeltaPrime 的智能合约分为两个主要组:

借贷合约

  • Pool.sol: 该核心合约聚合存款和借款,跟踪用户余额和负债。利息会通过 setRatesCalculator 模型实时计算,根据池的利用情况动态调整。只有经过验证的账户,经过关联合约验证的账户,才能借款。
  • LinearIndex.sol: 一个用于有效利息计算的助手合约,LinearIndex 在每次用户交互时使用全局索引快照,允许 O(1) 余额更新 最小化Gas费用。
  • VariableUtilisationRatesCalculator.sol: 这个利息模型根据池的使用比率调整利率,当需求高时鼓励存款,而抑制过度借款,从而平衡资本供求。
  • IBorrowersRegistry.sol: 这个注册表维持一个 双向映射 (bidirectional mapping) 的借款人,通过 canBorrow 函数来验证借款资格并确保安全性。

投资合约

  • SmartLoan.sol: 这是贷款和投资管理的主合约。关键功能(borrow, repay, invest, redeem)受到 remainsSolvent modifier 的保护,以防止 LTV 超过安全限制。如果偿付能力被破坏,liquidate 函数允许任何人卖出抵押品并部分偿还债务,并给予清算者奖励。借款人也可以通过调整存入资金(fundwithdraw)来管理他们的 LTV。
  • SmartLoansFactory.sol: 一个简化的合约,方便在一个交易中创建贷款和初始融资。它也作为 借款人注册表 效率记录正在进行的贷款。
  • PangolinIntermediary.sol: 一个交易中介,使得在 Pangolin DEX 上实现 基于 AVAX 的资产转换,允许借款人通过 DeltaPrime 在 Avalanche 的集成来实现投资多样化。

攻击分析

2024年11月11日DeltaPrimeArbitrumAvalanche 网络上遭遇了重大安全漏洞,损失约 $4.85 million。该漏洞利用了两个关键弱点:swapDebtParaSwap 函数中的 unchecked logic 和 DeltaPrime 的 外围适配器合约奖励机制 中对 pair 参数 的不当验证。这些弱点导致未授权的借款和奖励计算的操控。以下是对攻击执行、攻击者的方法论及其对 DeltaPrime 安全框架的更广泛影响的综合技术分析。

漏洞概述

攻击者在 DeltaPrime 的智能合约中利用了两个关键函数的漏洞:

  1. swapDebtParaSwap 函数
    • 该函数未能充分验证 _repayAmount 参数。这使得攻击者得以未触发偿还逻辑而将借入的资产重定向到恶意合约。
  2. claimReward 函数
    • 漏洞源于对 pair 参数的验证不足。这一缺陷允许攻击者将恶意合约作为输入,操控内部余额并提取未获奖励。

这些弱点使攻击者得以在多个流动性池中 siphon 大量资金。

攻击的详细分解

步骤 1:获得闪电贷

攻击以获得 闪电贷 开始,总额约为 59.958 WETH,为攻击者提供临时流动性以执行后续步骤。

步骤 2:利用 swapDebtParaSwap 函数

漏洞的根本原因在于 swapDebtParaSwap 函数中未检查的输入验证和 claimReward 函数中任意外部合约输入。这些缺陷使得攻击者能够借用超过其抵押品的资产,并在未经过适当验证的情况下以奖励形式提取抵押品。

  • 在将 _repayAmount 参数传递至 swapAdapter 前未进行验证,导致借入的 WBTC 被转移出攻击者的帐户到恶意合约 ( 0x52ee).
  • 攻击者利用 59.9 ETH 作为抵押品借取 1.18 WBTC,然后使用 swapAdapter 将借来的 WBTC 转移到另一个地址,而不触发偿还检查。

这一漏洞使攻击者绕过了标准的偿还逻辑,将资金重定向用于恶意目的。

步骤 3:利用 claimReward 函数

第二个漏洞源于 claimReward() 函数内对 pair 参数的验证不足。这一弱点使攻击者能够利用 DeltaPrime 的奖励系统。

  • TraderJoeV2ArbitrumFacet 合约内,用于奖励索取机制的 pair 参数未得到妥善验证,攻击者传入了恶意合约作为输入。
  • 恶意合约利用 wrapNativeToken() 函数将抵押品(ETH)转换为 WETH。这一过程干扰了 DeltaPrime 的内部余额计算,导致系统将包裹的 ETH 视为有效奖励资产。
  • 通过利用这一漏洞,攻击者操控了奖励系统,导致错误的 59.9 ETH 付款。

这一步骤突显了由松散的参数验证带来的风险,缺乏保护使协议的内部余额追踪得以被利用。

步骤 4:攻击后的资产分配

在成功 siphon 约 $4.85 million 之后,攻击者采用了一种独特的策略来管理被盗资产。攻击者并没有迅速分散这些资金或通过传统方式洗钱,而是将盗取的资金战略性地再投资于 Avalanche 上的各种 DeFi 协议,以产生被动收入。

尽管许多攻击者通常会试图迅速洗钱或转移被盗资金,但这位攻击者采取了非常规的方法,将被盗资金转变为在 Avalanche 上获得收益的机会。

如何防止此次攻击?

通过在 swapDebtParaSwapclaimReward 函数中实施强大的输入验证,本次 DeltaPrime 漏洞可以得到有效防止。诸如 _repayAmountpair 的参数必须经过彻底验证,以确保符合有效范围和所有权标准。这种细致的验证对于维护奖励机制的完整性并保护协议免受试图操控奖励分配的恶意行为者的攻击至关重要。

后果

DeltaPrime 攻击的直接后果是约 $4.85 millionArbitrumAvalanche 网络上的损失。由于这是两个月内的第二次重大漏洞,可能会对用户的信任和协议的声誉产生负面影响。这类事件可能导致用户重新评估 DeltaPrime 的安全性,可能导致参与度和信心下降。

DeltaPrime 协议的响应

针对此次漏洞,DeltaPrime 在其 X 账户 上发布了官方声明,承认该协议在 AvalancheArbitrum 网络上遭到攻击,预计损失为 $4.85 million。作为立即的预防措施,DeltaPrime 已在两个链上 暂停所有池,以控制风险。团队向用户保证将尽快提供更新,强调他们致力于保护用户资产并恢复协议的功能。

地址信息

Arbitrum 地址

Avalanche 地址

  • 原文链接: threesigma.xyz/blog/delt...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Three Sigma
Three Sigma
Three Sigma is a blockchain engineering and auditing firm focused on improving Web3 by working closely with projects in the space.