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

评论

所有评论

推荐阅读

  • 日本央行行长植田和男:目前没有立即加息的必要

    Cointime 报道,4月28日,日本央行行长植田和男:目前没有立即加息的必要。

  • 字节、智谱、阿里入选《时代》AI影响力十强

    Cointime 报道,4月28日,《时代》今日公布“2026年最具影响力10家人工智能公司”名单。与单纯比较模型能力不同,这份名单更强调对产业、技术路径与社会影响的综合塑造力。入选公司有字节跳动、亚马逊、智谱、OpenAI、Alphabet、Meta、Anthropic、阿里巴巴、Mistral和Hugging Face。其中,国内公司占据三席,分别为字节、智谱和阿里。(东新社)

  • 中共中央政治局会议:全面实施“人工智能+”行动,发展智能经济新形态,完善人工智能治理

    Cointime 报道,4月28日,中共中央政治局4月28日召开会议,分析研究当前经济形势和经济工作。会议强调,要加快建设现代化产业体系,保持制造业合理比重。纵深推进全国统一大市场建设,深入整治“内卷式”竞争。全面实施“人工智能+”行动,发展智能经济新形态,完善人工智能治理。进一步深化国资国企改革。系统应对外部冲击挑战,提高能源资源安全保障水平,以高质量发展的确定性应对各种不确定性。(东新社)

  • Arthur Hayes:更关心美联储主席提名人沃什关于资产负债表的言论,而非短期利率走向

    Cointime 报道,4月28日, BitMEX创始人Arthur Hayes在Bitcoin 2026大会上谈到美联储时表示,“当凯文·沃什被提名为美联储SEC主席时,所有人都开始抓狂,因为在他担任美联储理事的任期内——我认为是从08年金融危机后直到本届总统之前——他一直对美联储非常庞大的资产负债表持批评态度。他曾公开表示,他认为美联储的资产负债表太大了,他必须想办法缩小它,与此同时,他也能够降低利率。现在,如果你读过我的文章,你就知道我是货币数量比其价格更重要的坚定拥护者。所以,我更关心他关于资产负债表的言论,而不是短期利率的走向。因此,如果市场认为,因为沃什在美联储的所作所为,系统中流通的美元流动性将会减少,那么他们就会看空比特币和其他风险资产。这就是我们在媒体上看到的关于沃什5月接任后将出现的鹰派美联储的讨论。现在,我不这么认为。我相信,本质上美联储会用储备、国债和回购进行置换,并将它们放入商业银行系统,而他们将在新法规的帮助下做到这一点,这些法规涉及银行如何在其资产负债表上持有资产以及他们需要为这些资产持有多少资本。最后,我认为要理解沃什在美联储会做什么或不会做什么,最重要的一点是,他有一个非常实质性的硬性约束,那就是他需要与财政部的斯科特·贝森特合作,确保他对美联储资产负债表的任何操作都不会损害贝森特出去出售数十亿、上万亿美元债券的能力。”

  • 消息称Meta为撤销收购Manus做准备 腾讯等投资者计划配合

    Cointime 报道,4月28日,据华尔街日报援引知情人士称,在中国发改委下属外商投资安全审查工作机制办公室依法对外资收购Manus项目作出禁止投资的决定后,Meta正在为不得不撤销该收购交易做准备。知情人士称,如果Meta推进撤销该交易的进程,包括腾讯、红杉中国以及真格基金在内的多家Manus前亚洲投资者已计划进行配合。

  • 美国现货比特币ETF昨日净流出2.632亿美元

    Cointime 报道,4月28日,据Farside Investors监测数据,美国现货比特币ETF昨日净流出2.632亿美元。

  • 美国现货以太坊ETF昨日净流出5040万美元

    Cointime 报道,4月28日,据Farside Investors监测数据,美国现货以太坊ETF昨日净流出5040万美元。

  • 日本央行维持利率不变 符合预期

    Cointime 报道,4月28日,日本央行连续第三次会议将目标利率维持在0.75%不变,符合市场预期。

  • DeFi United已募集超13.2万枚ETH 可完全覆盖Kelp DAO被攻击损失

    Cointime 报道,4月28日最新数据显示,Aave为应对Kelp DAO被盗事件发起的DeFi United已经募集到超3亿美元的13.2万枚ETH,已经完全覆盖Kelp DAO被攻击增发的2.92亿美元rsETH损失。目前的主要救助者有:Arbitrum DAO 追回的30765枚ETH;Consensys和起创始人Joseph Lubin提供的30000枚ETH;Mantle的30000枚ETH;Aave DAO的25000枚ETH;Aave创始人Stani Kulechov的5000枚ETH;Ether.Fi的5000枚ETH;Lido的2500枚ETH;Kelp的2000枚ETH Golem Foundation的1000枚ETH;Aave工程高级副总Emilio Frangella的500枚ETH;BGD Labs和起联创Ernesto的350枚ETH。

  • 伊朗据称已开始使用废弃油罐储存石油

    Cointime 报道,4月28日,据华尔街日报,由于美国海军实施封锁、谈判仍陷僵局,伊朗正急于寻找新的石油储存方法,以避免毁灭性停产。随着石油在国内堆积,伊朗正在重启被称为“垃圾储存”的废弃场地,使用简易容器,并试图通过铁路继续出口。这些非常规措施旨在推迟基础设施危机的发生,并削弱美国在霍尔木兹海峡对峙中的筹码。