月亮链 月亮链
Ctrl+D收藏月亮链

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

作者:

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

前言

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

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

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

以下是详细分析过程。

攻击细节

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

Aave创始人:下半年DeFi行业应重点关注支付用例:7月10日消息,Aave创始人Stani Kulechov发推称,对于2023年下半年的DeFi行业而言,应重点关注合适的支付用例。透明、去中心化的稳定币非常适合支付结算,我们只需要打造比现有更好的体验即可。[2023/7/10 10:45:32]

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

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

中币(ZB)DeFi挖矿播报:DeFi挖矿总锁仓量约4381万美元:根据中币(ZB)平台数据,今日DeFi挖矿总锁仓量约为4381万美元。其中,存QC挖矿、存ZB挖矿、存USDT挖矿以及存QFIL挖矿的锁仓量均大幅提升;存ETH挖矿的锁仓量不变。[2020/11/23 21:47:54]

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

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

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

币赢CoinW平台DeFi币种 STRONG领涨:据币赢行情数据显示,截止今日10:00(GMT+8),平台内DeFi币种今日STRONG领涨,今日涨幅为28.05%,现价235.0986USDT;SASHIMI今日涨幅11.32%,现价0.1134USDT;AXIS今日涨幅4.75%,现价1.2494USDT;RPL今日涨幅为4.7%,现价2.3083USDT。风险提示:近期行情波动较大,请注意控制风险[2020/9/29]

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

动态 | DeFi锁定总价值达8.52亿美元,创历史新高:据Beincrypto消息,截至1月30日,DeFi锁定总价值达到8.52亿美元,创历史新高。[2020/1/30]

代码分析

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

分析 | 以太坊多空势力仍失衡 资金逐渐逃离核心DeFi应用:据TokenGazer数据分析显示,截止至5月22日11时,以太坊价格为$256.17,交易量为$10,150.1M,总市值为$27,238.78 M,期货方面,目前目前Bitfinex和BitMEX总多单量统计数据为$142.8M,总空单量数据为$43.6M,总多单比总空单多53.24%,目前抵押在Maker上的ETH数量继续减少,减少了DAI的流通,较好的保证了DAI与美元的锚定比例,但TokenGazer认为DAI的发展应更多扩展需求,而非一味抑制供给,其他DeFi应用如Uniswap、Compound显示资金流入。目前ERC20代币总市值约为以太坊总市值的57.87%,环比昨日上升了1.47%,在活跃地址数方面,排名前五的代币为USDC、DAI、TUSD、NPXS、ZRX,与昨日数据无较大出入,目前稳定币应用仍占据较大比例。[2019/5/22]

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

根据上图,可以看到,在 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 提空。

防御建议

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

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

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

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

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

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

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

附OpenZeppelin ReentrancyGuard: 

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

标签:PPLPLYSUPUPPkepple币价格SPLY价格SUP币cake币syruppool打不开

莱特币最新价格热门资讯
区块链:金色趋势丨哈希率变化暗藏玄机 再次发出买入信号?_BTC

Hash Ribbons指标是通过量化哈希率相对增长率来展现比特币哈希率的变化趋势和比特币挖矿生态系统的健康状况。具体数值是用比特币哈希率的近一个月均值减去近两个月均值的差值除以一个月均值数据.

1900/1/1 0:00:00
区块链:福州一批新建项目将使用区块链技术_数字资产和数字货币的区别

记者13日从市人大常委会获悉,回应游雄峰代表提出的关于推广区块链技术应用和制定相关政策法规的建议,市大数据发展管理委员会近日表示,福州市积极推进区块链落地应用.

1900/1/1 0:00:00
比特币:项目周刊丨“比特币减半”搜索创历史新高 黑客归还dForce所有被盗代币_dusd币哪个交易所有

金色周刊是金色财经推出的一档每周区块链行业总结栏目,内容涵盖一周重点新闻、行情与合约数据、矿业信息、项目动态、技术进展等行业动态.

1900/1/1 0:00:00
比特币:金色硬核 | 那些流行的比特币Meme_IDEX Membership

金色财经近期推出金色硬核(Hardcore)栏目,为读者提供热门项目介绍或者深度解读。按:“不要信,去验证。(Don’t trust, verify)”、“不掌握私钥,就不是你的币.

1900/1/1 0:00:00
区块链:区块链上的新型商业范式_DEFI

一、区块链+金融区块链的发展,从一开始就与金融紧密结合。比特币是第一个区块链产品,同时它也是区块链世界第一个金融产品.

1900/1/1 0:00:00
SDC:DCF PLUS 助力全球数字经济联盟体搭建的重要引擎_VUSD价格

众所周知,区块链以其分布式、匿名化和安全可靠的特征,正在重构整个数字经济发展生态,国家发改委也曾指出数字经济将成为拉动经济增长重要引擎,各行业各领域数字化转型步伐将大大加快.

1900/1/1 0:00:00