宇宙链 宇宙链
Ctrl+D收藏宇宙链

DeFi平台Lendf.Me被黑细节分析及防御建议

作者:

时间:1900/1/1 0:00:00

前言

据慢雾区情报,以太坊DeFi平台Lendf.Me遭受重入漏洞攻击。慢雾安全团队在收到情报后随即对此次攻击事件展开分析,并快速定位了问题所在。

据慢雾科技反(AML)系统初步统计分析,Lendf.Me被攻击累计的损失约24,696,616美元,具体盗取的币种及数额为:

WETH:55159.02134,

WBTC:9.01152,

CHAI:77930.93433,

HBTC:320.27714,

HUSD:432162.90569,

BUSD:480787.88767,

PAX:587014.60367,

TUSD:459794.38763,

USDC:698916.40348,

USDT:7180525.08156,

USDx:510868.16067,

imBTC:291.3471

之后攻击者不断通过1inch.exchange、ParaSwap、Tokenlon等DEX平台将盗取的币兑换成ETH及其他代币。

以下是详细分析过程。

攻击细节

本次对Lendf.Me实施攻击的攻击者地址为?0xa9bf70a420d364e923c74448d9d817d3f2a77822,攻击者通过部署合约?0x538359785a8d5ab1a741a0ba94f26a800759d91d对Lendf.Me进行攻击。

数据:二季度DeFi总锁仓量降至776亿美元,环比下降7.1%:金色财经报道,Dapprader最新分析数据显示2023年二季度 DeFi总锁仓量降至776亿美元,环比下降7.1%。以太坊仍然是DeFi领域的领头羊,尽管较上一季度以太坊链上DeFi总锁仓量略微下降了2%。另一方面,6月初美国证券交易委员会对币安发起诉讼并称Polygon(MATIC)属于证券,这一事件对BNB和Polygon两大区块链产生了显着影响。BNB链上总锁仓量大幅下降 19%,是所有被统计区块链中收缩最严重的,Polygon链上总锁仓量下跌了约8%,进一步证明了美国监管机构所带来的巨大影响。[2023/7/11 10:48:02]

通过在Etherscan上查看攻击者的其中一笔交易:https://etherscan.io/tx/0xae7d664bdfcc54220df4f18d339005c6faf6e62c9ca79c56387bc0389274363b

DefiLlama推出加密日历,可跟踪重要的加密货币和宏观事件:6月20日消息,DefiLlama推出加密货币日历功能,可跟踪重要的加密货币和宏观事件。[2023/6/20 21:48:38]

我们发现,攻击者首先是存入了0.00021593枚imBTC,但是却从Lendf.Me中成功提现了0.00043188枚imBTC,提现的数量几乎是存入数量的翻倍。那么攻击者是如何从短短的一笔交易中拿到翻倍的余额的呢?这需要我们深入分析交易中的每一个动作,看看究竟发生了什么。

通过把该笔交易放到bloxy.info上查看,我们能知道完整的交易流程

通过分析交易流程,我们不难发现攻击者对Lendf.Me进行了两次supply()函数的调用,但是这两次调用都是独立的,并不是在前一笔supply()函数中再次调用supply()函数。

DeFi收益管理框架Stone宣布Immunefi上推出漏洞赏金计划:9月28日消息,DeFi收益管理框架Stone宣布Immunefi上推出漏洞赏金计划,最高奖励30,000 STN。[2021/9/28 17:13:13]

紧接着,在第二次supply()函数的调用过程中,攻击者在他自己的合约中对Lendf.Me的withdraw()函数发起调用,最终提现

在这里,我们不难分析出,攻击者的withdraw()调用是发生在transferFrom函数中,也就是在Lendf.Me通过transferFrom调用用户的tokensToSend()钩子函数的时候调用的。很明显,攻击者通过supply()函数重入了Lendf.Me合约,造成了重入攻击,那么具体的攻击细节是怎样的呢?我们接下来跟进Lendf.Me的合约代码。

Algorand基金会宣布推出约合3亿美金DeFi支持基金:9月10日消息,据Algorand基金会官方网站公告,Algorand基金会宣布推出Viridis DeFi基金。该基金将提供1.5亿个ALGO代币,以推动Algorand上DeFi生态系统的增长,目前已发布前两个SupaGrants(巨额捐赠),它旨在支持关键DeFi基础设施的创建。其中包括500万美元的Oracle SupaGrant和500万美元的Bridge SupaGrant,后续Algorand基金会将发布关于该基金的更多详细信息。[2021/9/10 23:16:17]

代码分析

Lendf.Me的supply()函数在进行了一系列的处理后,会调用一个doTransferIn函数,用于把用户提供的币存进合约,然后接下来会对market变量的一些信息进行赋值。回顾刚才说的攻击流程,攻击者是在第二次supply()函数中通过重入的方式调用了withdraw()函数提现,也就是说在第二次的supply()函数中,1590行后的操作在withdraw()之前并不会执行,在withdraw()执行完之后,1590行后的代码才会继续执行。这里的操作导致了攻击者可提现余额变多。

我们深入分析下supply()函数

DeFi 概念板块今日平均跌幅为3.98%:金色财经行情显示,DeFi 概念板块今日平均跌幅为3.98%。47个币种中8个上涨,39个下跌,其中领涨币种为:DMG(+15.74%)、YFII(+8.58%)、REP(+5.05%)。领跌币种为:PEARL(-15.53%)、HOT(-13.88%)、HDAO(-13.87%)。[2021/7/20 1:04:06]

根据上图,可以看到,在supply()函数的末尾,会对market和用户的余额进行更新,在这之前,用户的余额会在函数的开头预先获取好并保存在?localResults.userSupplyCurrent,如下:

通过赋值给?localResults?变量的方式,用户的转入信息会先暂时保存在这个变量内,然后此时攻击者执行withdraw()函数,我们看下withdraw()函数的代码:

这里有两个关键的地方:

1、在函数的开头,合约首先获取了storage的?market?及?supplyBalance?变量。

2、在withdraw()函数的末尾,存在同样的逻辑对?market?用户的余额信息(supplyBalance)进行了更新,更新值为扣除用户的提现金额后的余额。

按正常的提现逻辑而言,在withdraw()单独执行的时候,用户的余额会被扣除并正常更新,但是由于攻击者将withdraw()嵌入在supply()中,在withdraw()函数更新了用户余额(supplyBalance)后,接下来在supply()函数要执行的代码,也就是1590行之后,用户的余额会再被更新一次,而用于更新的值会是先前supply()函数开头的保存在localResults?中的用户原先的存款加上攻击者第一次调用supply()函数存款的值。

在这样的操作下,用户的余额虽然在提现后虽然已经扣除了,但是接下来的supply()函数的逻辑会再次将用户未扣除提现金额时的值覆盖回去,导致攻击者虽然执行了提现操作,但是余额不但没有扣除,反而导致余额增加了。通过这样的方式,攻击者能以指数级别的数量提现,直至把Lendf.Me提空。

防御建议

针对本次攻击事件慢雾安全团队建议:

在关键的业务操作方法中加入锁机制,如:OpenZeppelin的ReentrancyGuard

开发合约的时候采用先更改本合约的变量,再进行外部调用的编写风格

项目上线前请优秀的第三方安全团队进行全面的安全审计,尽可能的发现潜在的安全问题

多个合约进行对接的时候也需要对多方合约进行代码安全和业务安全的把关,全面考虑各种业务场景相结合下的安全问题

合约尽可能的设置暂停开关,在出现“黑天鹅”事件的时候能够及时发现并止损

安全是动态的,各个项目方也需要及时捕获可能与自身项目相关的威胁情报,及时排查潜在的安全风险

附:

OpenZeppelinReentrancyGuard:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol

标签:SUPPLYPPLUPPsupertxtokenrealmedicinesupplychainkepple币价格Puppies Network

币安交易所app下载热门资讯
湖南公布区块链发展三年行动计划,2022年营业收入达到30亿元

4月27日,湖南省工信厅印发《湖南省区块链产业发展三年行动计划》。《计划》显示,湖南将坚持以产业区块链带动区块链产业、以区块链产业促进产业区块链,建设成为全国有影响力的区块链技术创新高地、产业集聚洼地和应用示范基地.

1900/1/1 0:00:00
嘉楠耘智业绩变脸加剧,或正错过“挖矿换挡“最佳时机

文丨互链脉搏·梁山花荣 4月9日晚,登陆纳斯达克不到半年的嘉楠耘智晒出了首份“成绩单”。据嘉楠耘智发布的2019年财务业绩报告显示,公司全年营业收入约为2.04亿美元,同比降低47.41%,2019年净亏损约为1.49亿美元.

1900/1/1 0:00:00
Uniswap的ERC777重入风险:详解本次ETH-imBTC套利的攻击手法及具体细节

编者注:原标题为《详解Uniswap的ERC777重入风险》 前言 据媒体消息,4月18日,Tokenlon宣布暂停imBTC转账,因其发现有攻击者通过ERC777在Uniswap流动性合约中的重入漏洞.

1900/1/1 0:00:00
观点:比特币可以实现自给自足,成为区块链主权和 自治的最终形式

比特币一直是进行思想实验的首选加密货币,许多人终于开始使用这些实验来发展新的用例。随着比特币正逐渐接近减半,并且最近在价格方面达到了新的高度,如果比特币根本不是加密货币,而是一个国家怎么办?根据瑞安·沃特金斯的最新观察,比特币在201.

1900/1/1 0:00:00
QKL123行情分析 | 原油市场挤兑作妖,5月WTI合约现负值,比特币联动下行(0421)

摘要:美原油5月WTI期货现负值,短时出现“踩踏挤兑”,大量交易者“不计代价”移仓6月合约,以规避实物交割的风险。出现此次极端行情,和原油需求锐减下的库存告急有关:原油积压不利于实物交割。短时,美股下跌,比特币联动下行.

1900/1/1 0:00:00
马化腾:区块链全面拥抱产业互联网

本文来源:腾讯产业互联网,原题:马化腾为《产业区块链》作序:区块链全面拥抱产业互联网》世界读书日在即,腾讯正式发布深度解读产业区块链战略书籍——《产业区块链》新书.

1900/1/1 0:00:00