损失超千万美元,Cork Protocol 被黑事件分析作者:Kong & Lisa
编辑:Liz
背景
5 月 28 日,慢雾(SlowMist) 检测到与 Cork Protocol 相关的潜在可疑活动并发布安全提醒,建议用户提高警惕,注意账户与资金安全。
(https://x.com/SlowMist_Team/status/1927705256915333359)
不久后,Cork Protocol 发布公告表示:「今日 UTC 时间 11:23,wstETH:weETH 市场发生安全事件。为防止风险扩大,Cork 已暂停所有其他市场交易,目前暂无其他市场受影响。团队正在积极调查事件原因,并将持续更新相关进展。」
(https://x.com/Corkprotocol/status/1927808041984086083)
事件发生后,慢雾安全团队第一时间介入分析,以下是对攻击手法及资金转移路径的详细解析。
前置知识
Cork Protocol 是一个旨在为 DeFi 生态提供类似传统金融中信用违约掉期(CDS) 功能的工具 —— Depeg 掉期,专门用于对冲稳定币、流动性质押代币、RWA 等挂钩资产的脱锚风险。其核心机制围绕稳定币和流动性质押代币的脱锚风险展开,允许用户通过交易风险衍生品,将稳定币或 LST/LRT 的价格波动风险转移给市场参与者,从而降低风险并提升资本效率,关键概念如下:
RA(Redemption Asset | 赎回资产):Cork 市场中用于赎回或结算脱锚事件的基准资产(例如 ETH::stETH 市场中的 ETH)。
PA(Pegged Asset | 挂钩资产):存在脱锚风险的资产,目标是与 RA 保持价格挂钩,但可能因市场波动、协议风险等因素偏离锚定汇率(例如 ETH::stETH 市场中的 stETH)。
DS(Depeg Swap | 脱锚掉期):Cork 协议发行的核心衍生工具,用于对冲脱锚风险,本质类似传统金融中的信用违约掉期(CDS),用户可以购买此类代币来规避脱锚风险。
CT(Cover Token | 覆盖代币):与 DS 配对的衍生工具,用于承担脱锚风险并赚取收益,类似 CDS 中的卖方角色,如果发生脱锚,持有者将承担损失。
Exchange Rate:衡量 PA 与 RA 之间价值关系的核心参数,直接影响脱锚事件的判定和衍生品交易的结算逻辑。目前,Cork 协议允许用户使用自定义 Exchange Rate Provider 创建市场。
Cork Vault:自动化管理跨期限的流动性,提升资本效率。
Peg Stability Module (PSM):负责铸造/销毁 DS 和 CT,设定市场期限,并通过 AMM 动态调整价格。其允许用户做以下兑换:
PA + DS = RACT + DS = RA
根本原因
此次攻击的根本原因在于一方面 Cork 允许用户通过 CorkConfig 合约创建以任意资产作为赎回资产(RA),使得攻击者可以将 DS 作为 RA 使用。另一方面任意用户都可以无需授权的调用 CorkHook 合约的 beforeSwap 函数,并允许用户传入自定的 hook 数据进行 CorkCall 操作,使得攻击者可以操控,将合法市场中的 DS 存入另一个市场中作为 RA 使用,并获得对应的 DS 和 CT 代币。
攻击分析
攻击者首先在合法市场上用 wstETH 购买了 weETH8CT-2 代币,以便最后可以与 DS 代币组合赎回作为 RA 的 wstETH 代币。
随后攻击者创建了一个新的市场并使用了自定的 Exchange Rate 提供商,此市场以 weETH8DS-2 代币作为 RA,wstETH 作为 PA 进行创建,因此新市场的关键代币对应如下:
RA: weETH8DS-2PA: wstETHCT: wstETH5CT-3DS: wstETH5DS-3
而 weETH8DS-2 所在市场的关键代币对应如下:
RA: wstETHPA: weETHCT: weETH8CT-2DS: weETH8DS-2
创建完新市场后,攻击者通过向市场添加一定的流动性以使得协议可以在 Uniswap v4 中初始化对应的流动性池,以便 CorkHook 后续可以在此池子执行 beforeSwap。
紧接着,最关键的是,只要在 Uniswap V4 Pool Manager 解锁的条件下,任何用户都可以调用 CorkHook 的 beforeSwap 函数传入任意参数,对协议的市场流动性进行操作。因此,攻击者通过 Uniswap V4 Pool Manager 在解锁时的 unlockCallback 功能,调用 CorkHook 的 beforeSwap 函数并传入其自定的市场以及 hook 数据。
beforeSwap 将回调合法市场的 CorkCall 函数,执行指定的 hook 数据:
CorkCall 信任由上层合法 CorkHook 传入的数据并直接进行解析执行:
这使得攻击者可以通过构造 hook 数据,将合法市场中指定数量的 weETH8DS-2 代币转入由其创建的新市场中作为 RA,并获得新市场对应的 CT 与 DS 代币。
而根据 PSM 的特性,攻击者可以使用获得的 CT 与 DS 代币在新市场赎回 RA 代币,即 weETH8DS-2 代币。
在获得 weETH8DS-2 代币后,攻击者即可将其与先前购买的 weETH8CT-2 代币匹配,以在原有的市场赎回 wstETH 代币。
至此,攻击者利用了市场未限制赎回资产类型以及协议并未验证 CorkHook.beforeSwap 的调用者与传入数据,使得其可以将合法的市场的 DS 流动性转移到另一市场作为 RA 进行赎回,来窃取任意市场的流动性。
MistTrack 分析
据链上反洗钱与追踪工具 MistTrack 分析,攻击者地址 0xea6f30e360192bae715599e15e2f765b49e4da98 获利 3,761.878 wstETH,价值超 1,200 万美元。
随后,攻击者通过 8 笔交易将 wstETH 兑换为 4,527 ETH:
此外,攻击者的初始资金来自 Swapuz.com 转入的 4.861 ETH。
截至目前,共有 4,530.5955 ETH 停留在攻击者地址上,我们将持续对资金进行监控。
总结
此次攻击的根本原因在于未严格验证用户传入的数据是否符合预期,从而使得协议流动性可以被操控转移到非预期的市场中,进而被攻击者非法赎回获利。慢雾安全团队建议开发者在进行设计时,应该谨慎验证协议的每一步操作是否都在预期中,并严格限制市场的资产类型。Tornado Cash 联创 Roman Storm:将退还 Cork Protocol 攻击者捐赠的资金Techub News 消息,在 Cork Protocol 攻击者昨日转移 4520 枚以太坊至 Tornado Cash,并向 Tornado Cash 开发者法律基金捐赠 10 枚以太坊后,Tornado Cash 联创 Roman Storm 发推表示,「我的辩护律师不能接受这些资金,这些资金将退还给 Cork 团队。」Cork Protocol 更新黑客事件进展:将重新部署市场以实现 LP 提款,并追回被盗资金Techub News 消息,Cork Protocol 更新黑客攻击事件进展,Cork Protocol 于 5 月 28 日遭遇漏洞攻击,导致 3761 枚 wstETH 从 wstETH:weETH 市场中被盗取,下一步将重新部署市场以实现 LP 提款,并且积极追回被盗资金。
Techub News 此前报道,Cyvers Alerts 发推称,检测到 Cork Protocol 疑似遭攻击,损失约 1200 万美元。Cyvers Alerts:Cork Protocol 疑似遭攻击,损失约 1200 万美元Techub News 消息,Cyvers Alerts 发推称,检测到 Cork Protocol 疑似遭攻击,损失约 1200 万美元。 攻击者在 2025 年 5 月 28 日 11:23:19 UTC 部署了一个恶意合约,该地址由 0x4771…762B(可能是某服务提供商)提供资金。 仅仅 16 分钟 45 秒后,攻击者便发起攻击,成功获得了 3,761.87 枚 wstETH,并迅速将其兑换为以太坊。目前资金尚未转移至其他地址。作者:Kong & Lisa 编辑:Liz 背景 5 月 28 日,慢雾(SlowMist) 检测到与 Cork Protocol 相关的潜在可疑活动并发布安全提醒,建议用户提高警惕,注意账户与资金安全。 (https://x.com/SlowMist_Team/status/1927705256915333359) 不久后,Cork Protocol 发布公告表示:「今日 UTC 时间 11:23,wstETH:weETH 市场发生安全事件。为防止风险扩大,Cork 已暂停所有其他市场交易,目前暂无其他市场受影响。团队正在积极调查事件原因,并将持续更新相关进展。」 (https://x.com/Corkprotocol/status/1927808041984086083) 事件发生后,慢雾安全团队第一时间介入分析,以下是对攻击手法及资金转移路径的详细解析。 前置知识 Cork Protocol 是一个旨在为 DeFi 生态提供类似传统金融中信用违约掉期(CDS) 功能的工具 —— Depeg 掉期,专门用于对冲稳定币、流动性质押代币、RWA 等挂钩资产的脱锚风险。其核心机制围绕稳定币和流动性质押代币的脱锚风险展开,允许用户通过交易风险衍生品,将稳定币或 LST/LRT 的价格波动风险转移给市场参与者,从而降低风险并提升资本效率,关键概念如下: RA(Redemption Asset | 赎回资产):Cork 市场中用于赎回或结算脱锚事件的基准资产(例如 ETH::stETH 市场中的 ETH)。 PA(Pegged Asset | 挂钩资产):存在脱锚风险的资产,目标是与 RA 保持价格挂钩,但可能因市场波动、协议风险等因素偏离锚定汇率(例如 ETH::stETH 市场中的 stETH)。 DS(Depeg Swap | 脱锚掉期):Cork 协议发行的核心衍生工具,用于对冲脱锚风险,本质类似传统金融中的信用违约掉期(CDS),用户可以购买此类代币来规避脱锚风险。 CT(Cover Token | 覆盖代币):与 DS 配对的衍生工具,用于承担脱锚风险并赚取收益,类似 CDS 中的卖方角色,如果发生脱锚,持有者将承担损失。 Exchange Rate:衡量 PA 与 RA 之间价值关系的核心参数,直接影响脱锚事件的判定和衍生品交易的结算逻辑。目前,Cork 协议允许用户使用自定义 Exchange Rate Provider 创建市场。 Cork Vault:自动化管理跨期限的流动性,提升资本效率。 Peg Stability Module (PSM):负责铸造/销毁 DS 和 CT,设定市场期限,并通过 AMM 动态调整价格。其允许用户做以下兑换: PA + DS = RACT + DS = RA 根本原因 此次攻击的根本原因在于一方面 Cork 允许用户通过 CorkConfig 合约创建以任意资产作为赎回资产(RA),使得攻击者可以将 DS 作为 RA 使用。另一方面任意用户都可以无需授权的调用 CorkHook 合约的 beforeSwap 函数,并允许用户传入自定的 hook 数据进行 CorkCall 操作,使得攻击者可以操控,将合法市场中的 DS 存入另一个市场中作为 RA 使用,并获得对应的 DS 和 CT 代币。 攻击分析 攻击者首先在合法市场上用 wstETH 购买了 weETH8CT-2 代币,以便最后可以与 DS 代币组合赎回作为 RA 的 wstETH 代币。 随后攻击者创建了一个新的市场并使用了自定的 Exchange Rate 提供商,此市场以 weETH8DS-2 代币作为 RA,wstETH 作为 PA 进行创建,因此新市场的关键代币对应如下: RA: weETH8DS-2PA: wstETHCT: wstETH5CT-3DS: wstETH5DS-3 而 weETH8DS-2 所在市场的关键代币对应如下: RA: wstETHPA: weETHCT: weETH8CT-2DS: weETH8DS-2 创建完新市场后,攻击者通过向市场添加一定的流动性以使得协议可以在 Uniswap v4 中初始化对应的流动性池,以便 CorkHook 后续可以在此池子执行 beforeSwap。 紧接着,最关键的是,只要在 Uniswap V4 Pool Manager 解锁的条件下,任何用户都可以调用 CorkHook 的 beforeSwap 函数传入任意参数,对协议的市场流动性进行操作。因此,攻击者通过 Uniswap V4 Pool Manager 在解锁时的 unlockCallback 功能,调用 CorkHook 的 beforeSwap 函数并传入其自定的市场以及 hook 数据。 beforeSwap 将回调合法市场的 CorkCall 函数,执行指定的 hook 数据: CorkCall 信任由上层合法 CorkHook 传入的数据并直接进行解析执行: 这使得攻击者可以通过构造 hook 数据,将合法市场中指定数量的 weETH8DS-2 代币转入由其创建的新市场中作为 RA,并获得新市场对应的 CT 与 DS 代币。 而根据 PSM 的特性,攻击者可以使用获得的 CT 与 DS 代币在新市场赎回 RA 代币,即 weETH8DS-2 代币。 在获得 weETH8DS-2 代币后,攻击者即可将其与先前购买的 weETH8CT-2 代币匹配,以在原有的市场赎回 wstETH 代币。 至此,攻击者利用了市场未限制赎回资产类型以及协议并未验证 CorkHook.beforeSwap 的调用者与传入数据,使得其可以将合法的市场的 DS 流动性转移到另一市场作为 RA 进行赎回,来窃取任意市场的流动性。 MistTrack 分析 据链上反洗钱与追踪工具 MistTrack 分析,攻击者地址 0xea6f30e360192bae715599e15e2f765b49e4da98 获利 3,761.878 wstETH,价值超 1,200 万美元。 随后,攻击者通过 8 笔交易将 wstETH 兑换为 4,527 ETH: 此外,攻击者的初始资金来自 Swapuz.com 转入的 4.861 ETH。 截至目前,共有 4,530.5955 ETH 停留在攻击者地址上,我们将持续对资金进行监控。 总结 此次攻击的根本原因在于未严格验证用户传入的数据是否符合预期,从而使得协议流动性可以被操控转移到非预期的市场中,进而被攻击者非法赎回获利。慢雾安全团队建议开发者在进行设计时,应该谨慎验证协议的每一步操作是否都在预期中,并严格限制市场的资产类型。
