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

评论

所有评论

推荐阅读

  • 5月16日晚间要闻速递

    1. ETH跌破3,000.00美元

  • 游戏平台Param Labs完成700万美元融资,Animoca Brands领投

    游戏平台Param Labs完成700万美元融资,Animoca Brands领投,Delphi Ventures和Cypher Capital参投。Param Labs的目标是建立一个由其原生PARAM代币管理的游戏生态系统,该代币即将推出。该公司的第一款游戏“Kiraverse”是一款边玩边赚钱的多人射击游戏。

  • 区块链SaaS解决方案AfriDex完成500万美元Pre-Seed轮融资,Endeavor Ventures领投

    总部位于英国伦敦的区块链软件即服务解决方案 AfriDex 宣布完成 500 万美元 Pre-Seed 轮融资,Endeavor Ventures 领投,African Crops Limited、Oldenburg Vineyards 和 Hank Oberoi 参投。AfriDex 目前主要专注于农业市场,通过全面的链上解决方案为供应链参与者提供支持和保护,利用区块链技术实现可追溯性、无摩擦支付、防欺诈交易、经过验证的认证、简化税收和补贴管理。(finsmes)

  • 以太坊上假冒NOT代币发生Rugpull

    据PeckShield监测,以太坊上假冒Notcoin NOT下跌100%。0xE0eB开头地址抛售了 1,645,040,633,338,481.95枚NOT并兑换为93.5枚WETH(价值28.13万美元)。 注:Rugpull代币与合法代币名称相同。

  • 瑞士联邦委员会计划实施加密资产报告框架以提高税收透明度

    瑞士联邦委员会(由七名成员组成,共同领导瑞士政府)打算实施加密资产报告框架(CARF),以提高税收透明度。15 日,联邦委员会发布了一份咨询文件,以调查加入国际税务机关合作打击偷税漏税的自动信息交换(AEOI)的民意。目前,瑞士加入 AEOI 的时间定于 2026 年 1 月 1 日。据悉,经合组织(OECD)为 20 国集团(G20)国家建立了 AEOI 和其他倡议,后来扩大到包括其他国家。瑞士此前在 2014 年采用了经合组织的共同报告标准(CRS),但未纳入监管加密资产及其提供商处理的 CARF。(Cointelegraph)

  • 埃及RWA金融科技初创公司Mnzl完成350万美元种子轮融资,P1 Ventures等领投

    金色财经报道,埃及RWA金融科技初创公司Mnzl宣布完成350万美元种子轮融资,P1 Ventures、Localglobe 和 Ingressive Capital领投,500 Global、Flat6Labs、First Circle Capital、Enza Capital、Beenok和一批未透露姓名的天使投资人参投。Mnzl 允许用户将汽车和房地产等非流动资产转换为流动资产,并将资产上传到数字钱包进行管理。

  • 4月加密项目融资额增环比增长3.8%至13.6亿美元

    Messari 发布 2024 年 4 月融资报告。2024 年 4 月,加密货币项目融资交易额环比增长 3.8%,达到 13.6 亿美元,自 2023 年 8 月低点(3.72 亿美元)以来持续 8 个月的增长趋势;但融资交易数量下降 16.7%,仅 259 笔。4 月网络领域的投资额占总投资额的 37.7%,大额融资项目包括 Monad(融资 2.25 亿美元)等。值得注意的是,4 月比特币 Layer2 项目激增,多个项目从隐身模式中脱颖而出。金融和基础设施领域也出现显著的融资活动,与前几个月相比,资本在各个类别中的分布更加均衡。

  • 摩根士丹利披露其对灰度GBTC投资近2.7亿美元,成为最大持有者之一

    5月16日消息,摩根士丹利(Morgan Stanley)在Q1提交给SEC的13F文件中披露,其通过灰度GBTC向现货比特币ETF投资了2.699亿美元。根据Fintel的数据,这笔投资使其成为继Susquehanna International Group(投资10亿美元)之后,GBTC的最大持有者之一。 摩根士丹利也是众多披露了对现货比特币ETF投资的全球系统重要性银行(G-SIB)之一,其他银行包括加拿大皇家银行、摩根大通、富国银行、法国巴黎银行和瑞银集团。

  • Coinbase计划为澳大利亚自助养老金部门提供服务

    Coinbase计划为澳大利亚的自助养老金部门提供服务。交易所亚太区总经理John O’Loghlen告诉彭博社:“我们不认为这会损害ETF玩家的利益。”Coinbase正在开发一项专门针对澳大利亚自助养老金部门的服务。自2019年3月以来,澳大利亚的自助基金越来越多地持有加密货币。根据澳大利亚税务局的最新数据,近10亿澳元(6.64亿美元)用于加密货币。成千上万的澳大利亚人使用自助养老金基金押注加密货币,甚至在2023年3月据路透社报道,有人损失了数百万美元。

  • CyberConnect 转型社交再质押模块化 L2「Cyber」,有何玩法?如何运行?

    CyberConnect 重塑为 Cyber,旨在将向社交再质押模块化以太坊 L2 转型,速读 Cyber L2 的参与方式和未来发展之路。