news 2025/12/23 17:04:58

安全事件:链上实时计算的滑点就等于没有滑点

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
安全事件:链上实时计算的滑点就等于没有滑点

DRLVaultV3 就是一个基于 USDC 的 Uniswap V3 [WETH, USDC] 流动性收益协议:用户只需要存 USDC 和取 USDC,项目方(operator)负责所有添加流动性、调仓、收手续费的复杂操作,最终收益和本金都以 USDC 形式归用户所有。

造成本次事件的原因是在 DRLVaultV3.swapToWETH() 中采用了 Quoter.quoteExactInputSingle() 在线计算滑点,这个途径计算得到的滑点并不会起作用。这导致了白帽可以对 swapToWETH() 函数进行三文治攻击挽救协议资产。

相关地址:

DRLVaultV3: 0x6A06707ab339BEE00C6663db17DdB422301ff5e8

Quoter: 0x61fFE014bA17989E743c5F6cB21bF9697530B21e

WhiteHat: 0xC0ffeEBABE5D496B2DDE509f9fa189C25cF29671

攻击交易:

https://app.blocksec.com/explorer/tx/eth/0xe3eab35b288c086afa9b86a97ab93c7bb61d21b1951a156d2a8f6f5d5715c475

Trace 分析

白帽先从 Morpho 闪电贷了 USDC 来完成资金准备

重点是三文治攻击的手法

首先用 USDC → WETH 抬高 WETH 的价格

然后调用 DRLVaultV3.swapToWETH() 在被操纵的价格基础上,进行 USDC → WETH 进一步抬高 WETH 的价格

最后 WETH → USDC 兑换出超额的 USDC 完成获利

代码分析

在 DRLVaultV3.swapToWETH() 函数中,它通过 Quoter.quoteExactInputSingle() 计算与滑点相关的最少换出数量。最后调用 swapRouter.exactInputSingle() 将合约中的 USDC 兑换成 WETH。

注意它的滑点是通过计算得到的,而不是从传入参数得到的

而在 Quoter.quoteExactInputSingle() 中,则是通过执行一个 revert swap 的形式来获取 amountOut 的数量,并在返回值中返回。由于此时 USDC/WETH 的价格已经被 Sandwich1 操纵了,所以通过该函数计算得到的值也是失真的,是不正常的,是无效的。

因为这个 Quoter 合约不持有任何代币,所以它发起的 swap 是必然 revert 的。

最终 DRLVaultV3.swapToWETH() 兑换得到的 WETH 会小于实际的数量。白帽再利用 Sandwich2 将失衡的价格恢复到正常

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/16 21:09:58

小程序商城搭建 自带拼团砍价功能 快速引爆销量

小程序商城搭建的核心技术框架微信小程序开发基础:WXML/WXSS/JavaScript后端技术选型:Node.js/Python(Django/Flask)或PHP(ThinkPHP/Laravel)数据库设计:MySQL/MongoDB存储用户、订单、拼团数据…

作者头像 李华
网站建设 2025/12/15 11:53:43

海外网红营销:超越促销,用“圣诞故事”绑定品牌情感

每到圣诞季,全球品牌都会涌入折扣大战,但真正能在用户心里留下印记的,往往不是促销力度,而是能让消费者“感同身受”的情绪触点。圣诞节承载着人们对家庭、传统、温暖、陪伴与仪式感的期待,而海外网红营销真正的价值&a…

作者头像 李华
网站建设 2025/12/22 19:59:07

Qwen3-32B双模式大模型:重构企业AI效率的范式革命

Qwen3-32B双模式大模型:重构企业AI效率的范式革命 【免费下载链接】Qwen3-32B Qwen3-32B具有以下特点: 类型:因果语言模型 训练阶段:训练前和训练后 参数数量:32.8B 参数数量(非嵌入)&#xff1…

作者头像 李华
网站建设 2025/12/23 5:05:20

9、深入探索AppStack:创建、分配、测试与管理全流程

深入探索AppStack:创建、分配、测试与管理全流程 1. AppStack分配与测试 AppStack分配 为已创建的AppStack完成分配后,重复此过程,将其他AppStack分配给示例实验室中的不同Active Directory组: Evernote和VLC媒体播放器AppStack分配给销售组。 OpenOffice AppStack分配给…

作者头像 李华
网站建设 2025/12/15 11:50:35

12、ThinApp与App Volumes结合应用及Horizon View集成指南

ThinApp与App Volumes结合应用及Horizon View集成指南 1. 利用ThinApp创建AppStack 在使用ThinApp创建AppStack时,首先可以查看ThinApp创建的文件,为方便后续操作,需将这些文件复制到文件服务器的共享文件夹,以便供预配虚拟桌面机访问。 创建ThinApp AppStack的步骤如下…

作者头像 李华