零时科技 || SiloFinance 攻击事件分析

  • 事件概述:2025年6月25日,Ethereum上的DeFi项目SiloFinance遭遇攻击,损失约5.46万美元。攻击者利用合约漏洞通过闪电贷机制恶意操作。

  • 攻击过程

    • 攻击者调用openLeveragePosition函数,触发闪电贷机制。
    • 在回调函数onFlashLoan中,通过_openLeverage将闪电贷资金转换为抵押品。
    • 关键漏洞出现在_fillQuote函数中,攻击者伪造swapCallData数据,调用borrow函数非法获取224个WETH。
  • 漏洞根源:Silo合约的闪电贷回调函数未对传入数据做验证,导致攻击者注入恶意数据。

  • 安全建议:项目方需加强经济模型和代码逻辑的多方验证,并选择多家审计公司交叉审计合约。

总结

背景介绍

2025年6⽉25⽇,我们监控到 Ethereum 上针对SiloFinance的攻击事件:

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

攻击共造成54.6k USD 的损失。

攻击及事件分析

⾸先,攻击者调⽤了合约的 openLeveragePostion ,该函数是⼀个⽤于开启杠杆头⼨的函数,它通过闪电贷(flashloan)机制来实现杠杆交易。随后在 onFlashLoan 回调中执⾏ _openLeverage 完成将闪电贷资⾦通过 _fillQuote 转换为抵押品等操作。

零时科技 || SiloFinance 攻击事件分析

我们可以看到相关代码:

零时科技 || SiloFinance 攻击事件分析

其中 _flashArgs.flashloadTarget 为攻击者设置的攻击合约,所以该函数调⽤了攻击和约的 flashloan 。

零时科技 || SiloFinance 攻击事件分析

随后,攻击合约调⽤了 onFlashLoan ,我们可以看到相关代码如下:

零时科技 || SiloFinance 攻击事件分析

由于 _txAction 在函数 openLeveragePostion 已经被设置成为了 LeverageAction.Open ,所以接下来会调⽤ _openLerverage 。

零时科技 || SiloFinance 攻击事件分析

随后会调⽤ _fillQuote ,这个函数的作⽤是将 debt token 兑换为 collateral token ,问题就出在这⾥。我们看⼀下_fillQuote 的实现⽅式:

struct SwapArgs {

address exchangeProxy; //0x160287e2d3fdcde9e91317982fc1cc01c1f94085

address sellToken; //0x79c5c002410a67ac7a0cde2c2217c3f560859c7e

address buyToken; //0x79c5c002410a67ac7a0cde2c2217c3f560859c7e

address allowanceTarget;//0x79c5c002410a67ac7a0cde2c2217c3f560859c7e

bytes swapCallData; //0xd516418400000000000000000000000000000000000000000000000c249fdd327780000000000000000000000000000004377cfaf4b4a44bb84042218cdda4cebcf8fd6200000000000000000000000060baf994f44dd10c19c0c47cbfe6048a4ffe4860}

我们将 input data 也就是 swapCallData 解码后得到:

0xd5164184 // borrow(uint256,address,address)

0x00000000000000000000000c249fdd3277800000 //uint256 _assets

0x04377cfaf4b4a44bb84042218cdda4cebcf8fd62 //address _recviver

0x60baf994f44dd10c19c0c47cbfe6048a4ffe4860 //address _borrower

也就意味着攻击者调⽤了 borrow 函数。随后,攻击者通过 borrow 获得了 224个WETH 完成攻击。

零时科技 || SiloFinance 攻击事件分析

总结

本次漏洞的成因是 Silo 合约的 flashloan callback 函数没有验证传入的数据,导致攻击者传入恶意数据,最终完成对 Silo 的攻击。建议项⽬⽅在设计经济模型和代码运⾏逻辑时要多⽅验证,合约上线前审计时尽量选择多个审计公司交叉审计。

分享至:

作者:零时科技

本文为PANews入驻专栏作者的观点,不代表PANews立场,不承担法律责任。

文章及观点也不构成投资意见

图片来源:零时科技如有侵权,请联系作者删除。

关注PANews官方账号,一起穿越牛熊
推荐阅读
41分钟前
1小时前
2小时前
2小时前
3小时前
5小时前

热门文章

行业要闻
市场热点
精选读物

精选专题

App内阅读