0x01:前言
援引官方消息,北京时间12月19日,Fantom链上复合收益平台GrimFinance遭遇了闪电贷攻击。知道创宇区块链安全实验室第一时间对本次事件深入跟踪并进行分析。
0x02:事件详情
交易细节如下图所示:
浏览上图的交易过程可知,攻击合约利用闪电贷借取代币WFTM和BTC,将借取的代币与自己铸造的代币质押到SpiritSwap里增加流动性获取lp代币,而问题就出现在攻击者通过depositFor()实现质押的过程中。
通过Tenderly调试该笔交易,攻击者多次递归调用depositFor函数,利用该函数获取大量代币:
慢雾首席信息安全官:SIM交换攻击将在未来成为麻烦:7月17日消息,慢雾首席信息安全官23pds称,基于SIM交换的黑客攻击目前还不太普遍,但在不久的将来有进一步上升的巨大潜力。他表示,随着Web3的普及并吸引更多人进入该行业,由于其技术要求相对较低,SIM交换攻击的可能性也随之增加。他同时提到了过去几年涉及加密货币中SIM交换黑客的一些案例,如2021年10月,由于2FA漏洞,黑客从至少6,000名客户那里窃取了加密货币。
SIM交换黑客是身份盗窃的一种形式,攻击者接管受害者的电话号码,使他们能够访问银行账户、信用卡或加密账户。[2023/7/17 10:59:52]
Lido将提供100万枚OP激励wstETH在Optimism生态中的使用:金色财经报道,Lido和Optimism计划在未来6个月内向Beethoven X、Curve、KyberSwap、Uniswap和Velodrome上wstETH流动性提供者以及在Aave上进行wstETH借贷活动等行为提供总计100万枚OP激励。该激励是LidoOnLayer2的一部分,此外Lido还将继续提供LDO奖励。[2023/2/16 12:09:23]
0x03:漏洞分析
depositFor()函数位于的第1115行:
function?depositFor(address?token,?uint?_amount,address?user?)?public?{
?uint256?_pool?=?balance();
DeFi平台Crunchy推出Tezos代币追踪器V1版本:1月8日消息,DeFi平台Crunchy推出其Tezos代币追踪器的V1版本,用户可以查看价格(当前价格以美元为单位,未来将支持价格以XTZ显示)、市值、交易量和图表来追踪Tezos DeFi生态系统。目前的V1版本是基本版本,不久的将来会添加更多功能。(XTZ.news)[2023/1/8 11:01:14]
?IERC20(token).safeTransferFrom(msg.sender,?address(this),?_amount);
?earn();
?uint256?_after?=?balance();
?_amount?=?_after.sub(_pool);?//?Additional?check?for?deflationary?tokens
加密货币服务提供商Coinmotion在西班牙完成加密注册:金色财经报道,芬兰加密货币服务提供商Coinmotion,已获得西班牙银行的确认,成为法定货币虚拟货币兑换服务和电子钱包托管的有效提供商,注册号为D741。该公司成立于2012年,自2019年起正式被FIN-FSA监管为加密货币提供商。[2023/1/4 9:52:46]
?uint256?shares?=?0;
?if?(totalSupply()?==?0)?{
??shares?=?_amount;
?}?else?{
??shares?=?(_amount.mul(totalSupply())).div(_pool);
?}
?_mint(user,?shares);
}
Valkyrie Funds将提供加密独立管理账户:金色财经报道,加密资产管理公司Valkyrie Funds周二表示,它将提供独立管理账户(SMA),旨在使传统投资者接触到各种加密货币投资组合。新的SMA服务最初将支持三种主动策略:比特币(BTC)、比特币和以太坊(BTC),以及比特币、以太坊、SOL、MATIC。Valkyrie将向金融顾问、家族办公室和其他金融机构提供其SMA,然后这些机构可以向他们的客户推销。
Valkyrie是继Ark Invest和富兰克林邓普顿之后第三个宣布加密货币SMA计划的资产管理公司。(CoinDesk)[2022/10/5 18:39:30]
该函数的safeTransferFrom()方法从IERC20(token)调用,调用完该方法后,余额balance也会随之变动,最后通过_mint()方法向用户添加质押凭证代币。其中调用的变量token可控,导致攻击者可以自己实现safeTransferFrom()方法,将该方法重入到depositFor()发起攻击。
以实施了5次重入攻击为例,开始_pool的值为0,在重入depositFor方法的前四次里,攻击者一直传入自己铸造的代币,_pool的值会一直保持为0,但在第五次,也就是最后一次传入100个受认可的代币时,_after的值会变成100,而_afer-_pool的差值_amount也就是100,最后由于重入了5次,导致合约会向攻击者铸造100*5的质押凭证代币。
其后果就是攻击者向该合约质押自己铸造不受认可的代币,同样会增加质押总量,最后利用多出来的质押凭证实现套利。
0x04:修复方案
1.由于depositFor()方法里的token可控才是导致这次攻击事件的原因,因此只需要在传递参数的时候让token不可控就行:
function?depositFor(?uint?_amount,address?user?)?public
2.由于套利的原因是depositFor()方法里存在修改代币数量的函数,因此还可以将修改代币的方法单独实现,这样即使token变量可控,也无法成功套利:
function?depositFor(address?token,?uint?_amount,address?user?)?public?{
?IERC20(token).safeTransferFrom(msg.sender,?address(this),?_amount);
}
3.锁定交易token:
function?setLPToken(address?lp)?public?onlyOwner?{
lpToken?=?lp;
}
function?depositFor(uint?_amount,address?user?)?public?{
uint256?_pool?=?balance();
IERC20(lpToken).safeTransferFrom(msg.sender,?address(this),?_amount);
earn();
......
}
0x05:总结
经过完整分析,知道创宇区块链安全实验室明确了该次攻击事件的源头并非网传的闪电贷攻击,攻击者利用GrimBoostVault合约的depositFor方法参数可控,实施了重入攻击,将自己的铸造的无价值代币兑换成了质押凭证,最后通过withdrawAll方法实现套利,而闪电贷?攻击者只是利用闪电贷扩大了套利值。
对于合约代码而言安全性是十分重要的,每一个未经验证的传入参数都可能导致巨大的经济损失,开发者在编写重要操作方法时,须记住零信任原则,谨慎对待每一个传入参数。
来源:金色财经
“元宇宙”最近特别火,从国外火到国内,从理论界到各垂直领域,从资本到科技界一概如此。旅游行业包括大住宿业也开始关注这个新物种,大多数迷茫外,不屑一顾者有之,斥之为“噱头”甚至“局”者也有之.
1900/1/1 0:00:00最近整个加密圈爆火的概念无疑是NFT和元宇宙,众多项目似雨后春笋般冒出。社区几乎不缺乏热点,近期,CryptoGirlfriend以创新玩法席卷海内外社群,关注这个领域的玩家对于CryptoGirlfriend的爆火也充满了好奇.
1900/1/1 0:00:002021年是加密货币采用和突破的里程碑式的一年,我们预计这种势头将持续到2022年。在这里,我们看一下2021年加密货币领域五件大事,并分享我们对2022年可能发生的趋势的预测.
1900/1/1 0:00:00近日,美国《时代》周刊公布了2021年度风云人物——SpaceX公司创始人、特斯拉CEO埃隆·马斯克。并在评语中写道:“他的手指一挥,就会引起股价的暴涨或暴跌。他的每一句话都被一大群粉丝奉为圭臬.
1900/1/1 0:00:00华尔街投行杰富瑞?(Jefferies)发布了一份新报告,称加密货币在美国催生了新一代的奢侈品消费者。在美国,贫富差距从未像现在这样明显.
1900/1/1 0:00:00|罗Sir说原创出品?|和新加坡著名歌手林俊杰做邻居,在现实中很难,在元宇宙中却容易得多。2021年11月23日,林俊杰在Twitter上展示了他购买的三个虚拟地块,共花费约12.3万美元.
1900/1/1 0:00:00