Cointime

扫码下载App
iOS & Android

SharkTeam:Prisma Finance被攻击事件分析

2024年3月28日,Prisma Finance遭受闪电贷攻击,项目方损失约1221万美元。

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

攻击者1:0x7e39e3b3ff7adef2613d5cc49558eab74b9a4202(简记为0x7e39)

攻击合约1:0xd996073019c74b2fb94ead236e32032405bc027c(简记为0xd996)

攻击者2:0x7fe83f45e0f53651b3ed9650d2a2c67d8855e385

攻击合约2:0x4148310fe4544e82f176570c6c7b649290a90e17

被攻击的目标合约:0x1cc79f3f47bfc060b6f761fcd1afc6d399a968b6

攻击包含16笔交易,以第一笔攻击交易为例:

0x00c503b595946bccaea3d58025b5f9b3726177bbdc9674e634244135282116c7

攻击流程如下:

1. 读取地址0x56a201b872b50bbdee0021ed4d1bb36359d291ed(简记为0x56a2)在目标合约中的所有抵押物和债务。

返回结果如下:

地址0x56a2在目标合约中抵押物共有1,745 wstETH,总债务共有1,442,100 mkUSD。

2. 攻击者0x7e39通过攻击合约0xd996调用mkUSD债务合约中的flashLoan函数。

参数receiver设置为MigrateTroveZap,amount为上面查询到的全部债务。

然后,在flashLoan函数中会调用receiver(这里是MigrateTroveZap)中的onFlashLoan函数。

onFlashLoan函数通过闪电贷先偿还原来的所有债务,提取抵押物到receiver,然后receiver将一定数量的抵押物重新抵押,并借取一定的债务。其中主要调用了2个函数:

(1)closeTrove函数,偿还债务并将所有的抵押物(1745.08 swtETH)从troverManager提取到receiver(这里是MigrateTroveZap合约);

(2)openTrove函数,由receiver将463.18 wstETH重新抵押到troverManager中,并负债1,443,598 mkUSD。

从上面数据可以看出,flashLoan函数执行完成后,receiver中仍然保留了从troverManager中提取的属于地址0x56a2的抵押物,数量约为1745.08 – 463.18 = 1281.90 wstETH。

3. 攻击者0x7e39通过攻击合约0xd996从Balancer中通过闪电贷借取了1 wstETH。

然后,抵押1 wstETH并借取债务2000 mkUSD,加上fee,共计负债2200 mkUSD。

4. 与步骤2类似,调用mkUSD债务合约中的flashLoan函数,这里参数receiver仍然设置为MigrateTroveZap,amount为上一笔质押1 wstETH后的全部债务,即2000 mkUSD。在FflashLoan函数中会调用receiver中的onFlashLoan函数,然后调用closeTrove和openTrove函数。

只是,这里closeTrove和openTrove函数中的参数account不再是上面的地址0x56a2,而是质押了1 wstETH的攻击合约0xd996。

(1)closeTrove函数,偿还债务并将所有的抵押物(1 swtETH)从troverManager提取到receiver(这里仍然是MigrateTroveZap合约)。此时receiver中共有1281.90 +1=1282.90 wstETH.

(2)openTrove函数,由receiver将1282.80 wstETH(几乎全部)重新抵押到troverManager中,并负债2001.8 mkUSD。

实际上,这里抵押物中1281.80 wstETH是不属于攻击合约0xd996,而是属于上面的地址0x56a2。

5. 最后,攻击者0x7e39通过攻击合约0xd996单独调用closeTrove函数,将抵押的1282.80 wstETH 提取到了攻击合约0xd996中。

偿还闪电贷后,攻击者仍获利1281.80 wstETH,约2.30M USD。

本次事件的根本原因是项目合约存在逻辑和权限校验,使得攻击者可以利用该漏洞获取其他账户地址的质押资产。

攻击者最终获得的wstETH是原本地址0x56a2在troverManager合约中的抵押物,通过mkUSD合约的flashLoan函数,自定义MigrateTroveZap合约中onFlashLoan函数的参数,利用 MigrateTroveZap将其转变为攻击合约的抵押物,然后将其提取出来。

攻击者通过mkUSD合约中的flashLoan函数以及MigrateTroveZap合约中的onFlashLoan函数操纵其他账户地址的抵押和提取。

(1)flashLoan函数中缺少对参数receiver地址的校验,因为onFlashLoan函数中receiver会接收account的所有抵押物,因此需要对receiver进行可信的校验;

(2)onFlashLoan函数中缺少对account地址的校验,因为closeTrove和openTrove函数都是操作的account的资产,因此需要对account增加权限方面的校验;

除了对这两个地址参数的校验外,可能还需要对flashLoan函数中的数量参数以及实现逻辑进行校验。

针对本次攻击事件,我们在开发过程中应遵循以下注意事项:

(1)项目在设计和开发过程中,要保持逻辑的完整性和严谨性,尤其是涉及到资产的转移过程中,更要加强对函数调研权限的校验,保证调用者、调用函数、函数参数、转账逻辑等都是安全可信的。

(2)项目上线前,需要找专业的第三方审计团队进行合约审计。

SharkTeam的愿景是保护Web3世界的安全。团队由来自世界各地的经验丰富的安全专业人士和高级研究人员组成,精通区块链和智能合约底层理论。提供包括风险识别与阻断、智能合约审计、KYT/AML、链上分析等服务,并打造了链上智能风险识别与阻断平台ChainAegis,能有效对抗Web3世界的高级持续性威胁(Advanced Persistent Threat,APT)。已与Web3生态各领域的关键参与者,如Polkadot、Moonbeam、polygon、Sui、OKX、imToken、Collab.Land等建立长期合作关系。

官网:https://www.sharkteam.org

Twitter:https://twitter.com/sharkteamorg

Telegram:https://t.me/sharkteamorg

Discord:https://discord.gg/jGH9xXCjDZ

评论

所有评论

推荐阅读

  • BTC跌破75000美元

    行情显示,BTC跌破75000美元,现报74988美元,24小时跌幅达到3.19%,行情波动较大,请做好风险控制。

  • Michael Saylor:Strategy 或在2026 年前出售部分比特币

    据Strategy董事长Michael Saylor 表示,公司不太可能完全不卖出比特币,或将在2026年底前出售部分BTC,并动态管理美元现金储备,以实现每股比特币数量最大化目标。截至目前,Strategy持有约84.38万枚BTC,总价值约650亿美元,平均买入成本约为7.57万美元。当前比特币价格约为7.6万美元,接近其整体持仓成本线。

  • 知情人士:美筹备对伊朗发动新一轮军事打击 但仍未最终决定

    5月23日讯,据知情人士透露,尽管外交努力仍在持续,特朗普政府当日仍在筹备对伊朗发动新一轮军事打击。截至当日下午,关于是否发动打击尚未有最终决定。特朗普在社交媒体发文称,受“与政府事务相关的特殊情况��影响,他将无法出席本周末儿子小唐纳德·特朗普的婚礼。他此前原计划在“阵亡将士纪念日”周末前往其位于新泽西州的私人高尔夫球场度假,但现已决定返回白宫。据多位消息人士透露,鉴于可能发生军事打击,美国军方和情报界的部分人员已取消了原定的“阵亡将士纪念日”周末休假计划。国防和情报官员已开始更新美国海外军事基地的紧急召回名册。与此同时,驻扎在中东的部分美军部队正分批轮换撤离战区。(央视新闻)

  • 新任美联储主席沃什:将领导一个以改革为导向的美联储

    5月23日,第17任美联储主席沃什于周五在白宫宣誓就职。沃什表示: “美联储的使命是促进物价稳定和充分就业。”他说,“当以智慧和清晰的思路、独立和坚定的决心去追求这些目标时,通胀可以降低,经济增长可以更强劲,实际到手工资可以更高,美国可以更加繁荣,而且同样重要的是,美国在世界上的地位也会更加稳固。”他补充说:“为了完成这项使命,我将领导一个以改革为导向的美联储,从过去的成功和错误中吸取教训,既要摆脱静态的框架和模式,又要坚持明确的诚信和绩效���准。”

  • 美国新版战略比特币储备法案取消“100万枚BTC”购买目标,已持有BTC拟锁定20年

    5月23日,美国众议院提出新版两党法案《American Reserve Modernization Act of 2026》(ARMA),拟将美国政府持有的比特币纳入战略储备,并要求至少锁定 20 年。与此前提出的 BITCOIN Act 不同,新法案不再要求美国政府购买 100 万枚 BTC,而是主要将通过刑事和民事没收等方式已持有或未来获得的比特币纳入储备。 同时,法案还将设立独立的数字资产库存,用于管理联邦政府持有的非比特币加密资产。根据草案,进入战略储备的比特币在 20 年内不得出售、交换、拍卖、抵押或以其他方式处置。锁定期结束后,财政部长可建议在任意两年内出售最多 10% 的储备资产。法案还要求政府按季度公开储备证明,并对比特币持仓进行第三方审计。支持者认为,美国不应出售战略性数字资产,而应将其作为现代化国家储备体系的一部分长期持有。

  • 美SEC推迟开放代币化股票交易

    5月23日,据彭博社,由于面临监管担忧及外界反对,美国 SEC 已推迟允许代币化股票交易的相关计划。报道称,SEC 目前正重新评估相关风险及市场影响。

  • BTC跌破76000美元

    行情显示,BTC跌破76000美元,现报75997.97美元,24小时跌幅达到2.28%,行情波动较大,请做好风险控制。

  • 交易员已完全预期到2026年底美联储将加息25个基点

    5月22日,市场定价显示,交易员已完全预期到2026年底美联储将加息25个基点。消息面上,美联储理事沃勒表示,美联储不应再释放降息信号,短时间内应按兵不动。

  • 现货黄金、纽约期金双双失守4500美元

    5月22日,现货黄金、纽约期金双双失守4500美元/盎司,日内跌0.94%。交易员完全定价美联储截至2026年底将加息25个基点。

  • BTC跌破77000美元

    行情显示,BTC跌破77000美元,现报76977.52美元,24小时跌幅达到0.18%,行情波动较大,请做好风险控制。