MetaTrust: Onyx的治理和漏洞是如何沦为黑客的“金铲子”?

11月1日,MetaScout监测到以太坊上的借贷协议 Onyx Protocol 遭受了一次闪电贷攻击,损失了210万美元。根本原因是黑客盯上并首先执行了添加新市场的提案,以及Compound分叉协议中存在id精度损失问题。
MetaTrust Labs据此对该事件进行了深入的研究和分析,揭露黑客是如何利用治理提案和协议漏洞对Onyx Protocol发起这场攻击。

01

关于Onyx Protocol

About Onyx Protocol

Onyx Protocol(https://docs.onyx.org/)是一个借贷市场,旨在为以太坊网络上的用户提供安全和无需信任的信贷和借贷服务。
MetaTrust: Onyx的治理和漏洞是如何沦为黑客的“金铲子”?
在2023年10月29日,Onyx Protocol(https://x.com/OnyxProtocol/status/1718348637158137858?s=20)启动了提案OIP-22,以将$PEPE添加到市场中。然而遗憾的是,该提案被黑客盯上并加以攻击了。
MetaTrust: Onyx的治理和漏洞是如何沦为黑客的“金铲子”?
同时,从Onyx链上部署的合约来看,它是 Compound 衍生协议,由于遭受攻击,其 TVL 从 286万美元下降到 55万美元。
MetaTrust: Onyx的治理和漏洞是如何沦为黑客的“金铲子”?

02

攻击行动

Attacking Timeline

MetaTrust: Onyx的治理和漏洞是如何沦为黑客的“金铲子”?

03

攻击损失

Attack Loss 

两笔攻击交易的总损失约为214万美元
MetaTrust: Onyx的治理和漏洞是如何沦为黑客的“金铲子”?

攻击者

0xdec2F31C3984F3440540DC78Ef21b1369d4eF767 0x5083956303a145f70ba9f3d80c5e6cb5ac842706

攻击合约

0x052ad2f779c1b557d9637227036ccaad623fceaa

受攻击合约

代理合约:
https://etherscan.io/address/0x5fdbcd61bc9bd4b6d3fd1f49a5d253165ea11750
实现合约:
https://etherscan.io/address/0x9dcb6bc351ab416f35aeab1351776e2ad295abc4#code

治理合约

https://etherscan.io/address/0xdec2f31c3984f3440540dc78ef21b1369d4ef767

04

攻击步骤

Attacking Steps

TL;DR
以攻击交易0xf7c216为例

步骤1:黑客(0x085bDf)首先执行提案OIP-22以添加一个名为oPEPE(0x5fdbcd)的新市场
MetaTrust: Onyx的治理和漏洞是如何沦为黑客的“金铲子”?
MetaTrust: Onyx的治理和漏洞是如何沦为黑客的“金铲子”?

步骤2:在新市场添加后的一分钟内,从AAVE启动了一个闪电贷并获得了4,000个$WETH
a. 将4,000个$WETH兑换成2,520,870,348,093个$PEPE
b. 将所有的$PEPE转移到地址0xf8e153
MetaTrust: Onyx的治理和漏洞是如何沦为黑客的“金铲子”?
c. 在上述地址0xf8e153创建合约,使用1个$PEPE铸造了50,000,000,000,000,000,000个$oPEPE,赎回了绝大部分$oPEPE,仅剩下2 wei给oPEPE市场
d. 将2,520,870,348,093个$PEPE转移到oPEPE并以$oPEPE进入市场
e. 借入334个$ETH
f. 由于精度损失问题,仅赎回了1 wei的$oPEPE就换取了2,520,870,348,093个$PEPE
  1. 汇率 = (总现金 + 总借出 – 总储备)/总供应 =
    2,520,870,348,093,423,681,390,050,791,472 / 2 =
    1,260,435,174,046,711,840,695,025,395,736
  2. 赎回金额 =
    2,520,870,348,093,423,681,390,050,791,470
  3. 由于受到交易截断,赎回令牌 = 赎回金额 / 汇率 = 1

MetaTrust: Onyx的治理和漏洞是如何沦为黑客的“金铲子”?
  1. 清算借款人(0xf8e153)的881,647,840 wei $PEPE
  2. 赎回了856,961,701 wei $PEPE

g. 从步骤b到步骤f重复以上步骤,借入$USDC、$USDT、$PAXG、$DAI、$WBTC和$LINK,兑换成$ETH

步骤3:用4,002个$WETH还清AAVE的闪电贷,从中获得了1156.9个$ETH的利润

05

根本原因

Root Cause

  • 一方面,黑客非常熟悉Compound协议的精度损失问题,并提前注意到了Onyx Protocol的漏洞,因此,黑客可能早早的意识到了提案OIP-22中的问题,一旦提案激活并准备好执行,黑客抢先执行该提案,并在仅仅一分钟后就发动了攻击。

  • 另一方面,精度损失漏洞是攻击的根本原因。黑客操纵了totalSupply使其变成一个极小的值即2,并将totalCash增加到极大的值,即2520870348093423681390050791471,以放大exchangeRate,从而导致在赎回时产生计算截断。

MetaTrust: Onyx的治理和漏洞是如何沦为黑客的“金铲子”?

06

安全建议

Security Recommendation

1. 对治理提案进行详细的审计,不仅限于智能合约,特别是在初始化场景和其他边缘情况下;
2. 考虑在市场初始化时添加少量份额以防止操纵,尤其是对于Compound协议;
3. 建议采用监控系统,在紧急情况发生时暂停协议,如果Onyx有监控系统,第二个攻击交易是在第一个攻击交易半小时后发生的,有足够的时间利用监控系统阻止第二个交易的发生从而减少损失。或者接入Mempool阻断系统,在攻击者进行攻击时,能够有效检测到Mempool中的攻击交易,进行抢跑阻断,避免损失。

07

资金流向

Fund Flow

截稿时,攻击者(0x085bDf)已使用另一个受控地址(0x4c9c86)将1140个$ETH转移到混币平台Tornado.Cash
MetaTrust: Onyx的治理和漏洞是如何沦为黑客的“金铲子”?
另一位攻击者仍然将窃取的代币保留在钱包中(0x508395)。

08

同类攻击案例

Similar Attack

这个漏洞类似于2023年4月15日的 Hundred Finance遭受的黑客攻击,该攻击导致损失约700万美元。
交易链接:
0x6e9ebcdebbabda04fa9f2e3bc21ea8b2e4fb4bf4f4670cb8483e2f0b2604f451


关于MetaTrust Labs
MetaTrust Labs是新加坡南洋理工大学孵化的领先Web3人工智能安全工具和代码审计服务提供商。我们提供先进的AI解决方案,赋予开发者和项目方保护Web3应用程序和智能合约的能力。我们的综合服务包括AI安全扫描、代码审计、智能合约监控和交易监控。在MetaTrust Labs,我们致力于保护Web3领域,让生态共建者能够充满信心和可靠地进行创新。
Website: https://metatrust.io/
Twitter: https://twitter.com/MetatrustLabs


↓ ↓ 加入开发者社区一起聊聊安全这件事

原文始发于微信公众号(MetaTrust Labs):MetaTrust: Onyx的治理和漏洞是如何沦为黑客的“金铲子”?

版权声明:admin 发表于 2023年11月2日 下午5:46。
转载请注明:MetaTrust: Onyx的治理和漏洞是如何沦为黑客的“金铲子”? | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...