闪电贷攻击:Sashimi Swap被黑事件分析
2022-3-4 15:0:39 Author: www.freebuf.com(查看原文) 阅读量:16 收藏

freeBuf

主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

近日,多链部署去中心化交易协议Sashimi Swap遭受闪电贷攻击,损失近20万美元(近127万人民币)。

SharkTeam第一时间对此事件进行了攻击分析和技术分析,并总结了安全防范手段,希望后续的区块链项目可以引以为戒,共筑区块链行业的安全防线。

lhmmVMzHuStRtAuA7Ltspl3P3DFk.gif

1. 创建攻击交易

交易Hash:0x90b97079f8cf445c7831d12494633ca351040a6099595e8980c6be84bb8408bc

lt7Na3TOJmV9ol2CaWnEkP9Ir-YD.gif

2. 发起攻击

以0xd6a816cc291b24267c03c23c730a84a2699f32a7cf714c8cbe3e47321c76b08f为例

(1) 闪电贷399.64 WETH

Fkfv4FmyfVR3tmpMPRb8JvnHwsqc.gif

lhnsm9SLdzEYBffxgq8XbIGJ5wzS.gif

(2) 新建Token合约,用于创建新的交易对

lhy8slbP6y5KWuJEefedQ70oePVg.gif

(3) 添加流动性

FmKRlS-CuMrXDn-Ft-cpvw1LuSOm.gif

攻击者将1 tokenB和1 tokenC按1:1添加交易对tokenB/tokenC的流动性

lpEp63JZjOlgeVVWcXenhbHqvb-6.gif

攻击者将1 weth和1 tokenC按1:1添加交易对WETH/tokenC的流动性

lruOqJHew9E1eaX562NcuBJPaFBX.gif

(4) 将150 WETH兑换为 6261UNI

FriuI1IL_VLIhDk7d3pKXasNmh4E.gif

(5) 添加流动性

FnCoTDo-lDvsEWfSrpsCgQEXsQ7x.gif

攻击者将1 WETH和1 tokenB按1:1添加交易对WETH/tokenB的流动性

lsdI6YFXF75-w21dljNVzaNtNx40.gif

lieZZv2pL7PMbPKGSDAHjPm4CFYV.gif

攻击者将247.64 WETH和247.64 tokenA按1:1添加交易对WETH/tokenA的流动性

(6) 调用swapExactTokensForETHSupportingFeeOnTransferTokens函数获利

FoXa64AollIq6acBiWgVXf4_UOk1.gif

lqIWLdE8iDb-RVoPBbsGS5-4cGrT.gif

利用路径tokenA=>WETH=>tokenB=>tokenC=>WETH,获利160.5ETH

liYplp4-R55S2KNv9XUwxiso4gvZ.gif

根据swapExactTokensForETHSupportingFeeOnTransferTokens函数的代码,发现在兑换过程中是以第一个pair记录的WETH做计算,将第一个pair的WETH兑换到其他pair中。

lgmOttXFcgZMGdO2yvg89ypXSSbE.gif

(7) 攻击者移除流动性

FsjOY_c8G2pzWl4ZnIlwkQW0A-LP.gif

(8) 攻击者利用得到的WETH重复获利2次

ltL643nkbIHbLHy9JZtCo15udm8I.gif

luZt09vrfLSc8cxcR60dHN_gfI2H.gif

(9) 闪电贷还款

FlY0U6ROiEBwpWiYA4FT1Ju0vHac.gif

通过以上攻击过程,攻击者最终获利6261.3 UNI,4466096 SASHIMI以及63762 USDT,价值约23万美元。

3. Token兑换。

以0xddc97eb25d7b7baccd9694abe3f2ba6659471d5a8a9bf1f441e3aaad017a1164为例:

lveiWbEDSY6MpJZ0cs4KLHYF8ZPs.gif

4. 混币。通过Tornado平台将攻击获得的资产进行混币。

Ftuma_PiVNH01J8oReJgmfPsQRaV.gif

本次攻击的根本原因在于:swapExactTokensForETHSupportingFeeOnTransferTokens函数在兑换过程中误以第一个pair记录的WETH做计算,将第一个pair的WETH兑换到其他pair中,黑客利用该漏洞并通过闪电贷借出资金实施攻击并获利。

SharkTeam提醒您,在涉足区块链项目时请提高警惕,选择更稳定、更安全,且经过完备多轮审计的公链和项目,切不可将您的资产置于风险之中,沦为黑客的提款机。


文章来源: https://www.freebuf.com/articles/blockchain-articles/323849.html
如有侵权请联系:admin#unsafe.sh