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

评论

所有评论

推荐阅读

  • 美国对AI服务器电源等产品发起337调查 立讯精密、工业富联等20家企业列名

    10月10日,据同花顺消息,美东时间10月9日,美国国际贸易委员会(USITC)发布公告,对「特定垂直电力传输系统、其组件及含该系统的计算系统」发起337调查,针对AI服务器供电环节,共20家企业列名,包括立讯精密、工业富联、鸿海、鸿佰科技、台达电子、广达与云达、英飞凌、芯源系统、伟创力、天弘科技等,横跨中国大陆、中国台湾地区及美国、德国、新加坡、加拿大。调查源于马萨诸塞州电源模块厂商Vicor于9月9日提交的投诉,指控涉案产品侵犯其专利,请求发布有限排除令和禁止令,这是Vicor三年内第三次发起同类投诉。按USITC程序,立案后45天内将确定结案目标日期,本案距正式结论尚需较长时间。

  • Robinhood Crypto正与T.Rowe Price Digital Assets探索推出股票代币

    10月10日,Robinhood Crypto 正与管理资产规模达 1.9 万亿美元的 T. Rowe Price Digital Assets 探索在 Robinhood Chain 上推出与主动管理型 ETF 挂钩的股票代币。相关合作处于探索阶段,潜在产品的推出需完成法律尽职调查、获得发行方董事会批准、公布最终条款并取得相关司法管辖区的监管批准。目前无法保证合作推进或产品推出,具体形式、时间及适用地区尚未确定。

  • 英伟达被曝停产RTX 5090 顶级游戏显卡让位给高价专业卡

    10月10日,英伟达可能停产最强的消费级显卡RTX 5090,把核心芯片留给售价更高的专业显卡。硬件爆料者MEGAsizeGPU称,未来生产的GB202芯片将全部供应RTX PRO系列,不再用于RTX 5090;另一名爆料者hongxing2020晒出疑似工厂通知,称中国特供版本也在停产范围。两者使用同系列GB202芯片但价格相差很大:RTX 5090配备32GB显存,首发价1999美元;面向AI开发与设计的RTX PRO 6000拥有96GB显存,官网标价1.6万美元,为前者的8倍。RTX 5090此前已在美国市场缺货,第三方卖家一度挂出9600美元,若停产属实消费者今后只能依赖剩余库存。另有爆料称,英伟达准备推出24GB版RTX 5080取代RTX 5090成为最高端游戏显卡,而现款RTX 5080的CUDA核心数量仅约RTX 5090的一半,4K游戏性能低约30%。

  • 俄美元首通话 普京称俄目前不可能恢复与乌谈判

    10月10日,俄罗斯总统助理乌沙科夫当地时间10日凌晨介绍了俄美两国领导人通话的有关情况。乌沙科夫表示,普京在通话中详细介绍了俄罗斯为回应乌克兰武装部队实施的恐怖袭击而采取的措施。普京表示,乌克兰方面试图破坏俄罗斯国家杜马选举并对民众实施袭击,导致立即恢复谈判的可能性遭到破坏。普京还指出,乌克兰方面试图阻止俄罗斯军队推进的企图没有任何成功的前景,俄军目前完全掌握战场主动权,并正在持续向前推进。普京强调,由于乌克兰方面的立场,特别是其试图破坏俄杜马选举的行为,目前不可能恢复与乌克兰的谈判。特朗普已指示将普京在通话中传递的信息转达给乌克兰代表团。乌沙科夫称,关于举行普京与特朗普双边会晤的问题,双方目前尚未进行具体讨论。(央视新闻)

  • Telegram 内置 Gram 钱包更名为 Money 并向全体用户开放

    10月9日,Telegram 已将其原仅向部分用户开放的钱包服务“Gram wallet”更名为“Money”,并正式向全平台超过十亿用户全面推出。“Money”是针对 Gram 代币的内置钱包,支持存储、转账以及购买平台礼物与收藏级用户名。 此外,配套交易平台“Walt”提供超过 300 种资产服务,涵盖代币化股票、贵金属、永续合约及理财收益项目。用户可通过“Walt”向“Money”钱包进行即时划转且免收网络手续费。官方同时提示,加密资产投资存在相应风险。

  • Blockchain.com 寻求批准开展预测市场和加密货币衍生品交易

    10月9日,加密资产平台 Blockchain.com 已向美国商品期货交易委员会(CFTC)提交申请,寻求获得指定合约市场(DCM)和期货佣金商(FCM)牌照,以向美国用户提供事件合约(预测市场)及加密货币衍生品交易服务。

  • 贝森特:美国本周可能查扣约 10 亿美元与伊朗相关的加密货币

    美国财政部长贝森特周四在 Newsmax 于华盛顿举办的 NPolicy Summit 上表示,我们本周可能会查扣 10 亿美元的加密货币,并称「我们知道它在哪里,我们正在孤立他们」。贝森特表示,特朗普政府对伊朗的举措已从「极限施压」转为「绝对孤立」,措施包括海上封锁、限制航空出行及切断陆路通道,阿联酋和阿曼正与美方合作,美方也在与巴基斯坦和土耳其合作切断所有进出伊朗的陆路通道。

  • Zcash 开发团队计划于明年 1 月引入抗量子签名以保护公开支付

    隐私加密货币 Zcash(ZEC)开发团队计划于明年 1 月在网络中引入后量子签名操作码,以支持基于哈希的签名技术,从而抵御潜在的量子计算攻击。该方案主要针对透明(公开)支付池,目前约有 70% 的 ZEC 存放于该池中。尽管开发者将 1 月定为目标期限,但具体的网络激活时间尚未最终确定。 该升级旨在防止攻击者利用现有公钥反向推导私钥并伪造支付授权。此外,Zcash 节点验证程序 Zakura 还推出了一项基于私密信息检索(PIR)的钱包工具,允许用户在查询多地址余额时不向服务器泄露地址间的关联性。此前,以太坊研究员 Justin Drake 曾警告人工智能可能加速破解传统加密算法,并呼吁加密货币持有者应对潜在的安全威胁。

  • BTC突破83000美元

    行情显示,BTC突破83000美元,现报83017.3美元,24小时涨幅达到0.66%,行情波动较大,请做好风险控制。

  • 中共中央、国务院:全面实施“人工智能+”行动

    10月9日,中共中央、国务院印发《关于发展新质生产力的意见》。意见提到,全面实施“人工智能+”行动。推进人工智能对传统产业的改造,加快推进智能网联新能源汽车、人工智能手机和电脑、人形机器人等新一代智能终端场景应用。加快人工智能等数智技术创新,突破基础理论和核心技术,强化算力、算法、数据等高效供给。因地制宜、分业施策布局国家人工智能行业应用中试基地和高价值应用场景,大力推动人工智能在各行业应用。构建技术监测、风险预警、应急响应体系,确保人工智能安全、可靠、可控。