Barley Finance - 闪电贷逻辑漏洞

admin 2024年2月18日14:32:38评论18 views字数 1861阅读6分12秒阅读模式

8点击蓝字

Barley Finance - 闪电贷逻辑漏洞

关注我们

声明

本文作者:peiqi

本文字数:1873字

阅读时长:约4分钟

附件/链接:点击查看原文下载

本文属于【狼组安全社区】原创奖励计划,未经许可禁止转载

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,狼组安全团队以及文章作者不为此承担任何责任。

狼组安全团队有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经狼组安全团队允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

Barley Finance - 闪电贷逻辑漏洞

2024 年 1 月 28 日,Barley Finance 由于代码中出现闪电贷逻辑漏洞,导致损失 52 $ETH

相关地址

攻击者地址: 0x7b3a6eff1c9925e509c2b01a389238c1fcc462b6 

漏洞合约地址: 0x04c80bb477890f3021f03b068238836ee20aa0b8 

攻击交易: 0x995e880635f4a7462a420a58527023f946710167ea4c6c093d7d193062a33b01 

攻击合约地址: 0x356e7481b957be0165d6751a49b4b7194aef18d5

攻击过程

  1. 攻击者通过漏洞获取 6,837,889 $wBARL
Barley Finance - 闪电贷逻辑漏洞
image.png
  1. 将获利全部转换为 $ETH
Barley Finance - 闪电贷逻辑漏洞
image.png
  1. 最后通过 FixedFloat 混币混场
Barley Finance - 闪电贷逻辑漏洞
image.png

攻击分析

合约中提供了借贷方法,攻击者调用 flash 函数将 BARL  闪电贷到攻击合约中使用,同时转入 $DAI 充当手续费Barley Finance - 闪电贷逻辑漏洞在攻击者合约中调用了 $wBARL 的 bond 方法Barley Finance - 闪电贷逻辑漏洞

  function bond(address _token, uint256 _amount) external override noSwap {
require(_isTokenInIndex[_token], 'INVALIDTOKEN');
uint256 _tokenIdx = _fundTokenIdx[_token];
uint256 _tokensMinted = (_amount * FixedPoint96.Q96 * 10 ** decimals()) /
indexTokens[_tokenIdx].q1;
uint256 _feeTokens = _isFirstIn() ? 0 : (_tokensMinted * BOND_FEE) / 10000;
_mint(_msgSender(), _tokensMinted - _feeTokens);
if (_feeTokens > 0) {
_mint(address(this), _feeTokens);
}
for (uint256 _i; _i < indexTokens.length; _i++) {
uint256 _transferAmount = _i == _tokenIdx
? _amount
: (_amount *
indexTokens[_i].weighting *
10 ** IERC20Metadata(indexTokens[_i].token).decimals()) /
indexTokens[_tokenIdx].weighting /
10 ** IERC20Metadata(_token).decimals();
_transferAndValidate(
IERC20(indexTokens[_i].token),
_msgSender(),
_transferAmount
);
}
emit Bond(_msgSender(), _token, _amount, _tokensMinted);
}

这个函数实现了用户通过存入指定代币 (wBARL,  这里攻击者使用闪电贷获取的 wBARLBarley Finance - 闪电贷逻辑漏洞函数中会将对应可获得的 BARL 发送到池中Barley Finance - 闪电贷逻辑漏洞漏洞就出现在这一段代码上的逻辑错误,闪电贷调用还款验证主要是通过检查对应Token前后的余额实现的,这里由于 _transferAndValidate 函数将攻击者钱包中 BARL 代币数量 没有改变使其成功交易,这样攻击者实际上只花费了手续费就铸造了大量 $wBARL 代币进行获利Barley Finance - 闪电贷逻辑漏洞

攻击者进行数次闪电贷操作获取大量 $wBARL,

Barley Finance - 闪电贷逻辑漏洞

最后通过 debond 方法将 BARL 后完成攻击,获利 7,876,244 $BARL

Barley Finance - 闪电贷逻辑漏洞

欢迎研究区块链安全的师傅一起加入团队学习~

作者

Barley Finance - 闪电贷逻辑漏洞

PeiQi

今天又是摸鱼的一天!

原文始发于微信公众号(WgpSec狼组安全团队):Barley Finance - 闪电贷逻辑漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月18日14:32:38
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Barley Finance - 闪电贷逻辑漏洞https://cn-sec.com/archives/2502211.html

发表评论

匿名网友 填写信息