Puffer协议:访问控制机制为何重要以及如何提高其安全性

Puffer协议:访问控制机制为何重要以及如何提高其安全性

“Puffer 是一个构建在 Eigenlayer 之上的去中心化原生流动性再质押协议 (nLRP)”。它在短短几天内吸引了超过 6 亿美元的 TVL(总锁仓价值)。访问控制是防止协议上恶意操作的重要安全考量。

在这篇博客中,我们回顾了访问控制机制的整个架构及其在 Puffer 协议中的当前配置。这有助于社区更好地了解该协议。请注意,分析结果基于以太坊的当前状态(区块 19177155,2024 年 2 月 7 日,下午 03:17:35 +UTC)。

合约地址

下表列出了本博客中使用的智能合约。

地址 实现
PufferDepositor 0x4aa799c5dfc01ee7d79 0e3bf1a7c2257ce1dceff 0x7276925e42f9c4054af a2fad80fa79520c453d6a
PufferVault 0xD9A442856C234a39a81 a089C06451EBAa4306a72 0x39ca0a6438b6050ea2a c909ba65920c7451305c1
AccessManager 0x8c1686069474410E624 3425f4a10177a94EBEE11 -
TimeLock 0x3c28b7c7ba1a1f55c9c e66b263b33b204f2126ea -
Operation SafeWallet 0xC0896ab1A8cae8c2C1d 27d011eb955Cca955580d 0xd9db270c1b5e3bd161e 8c8503c55ceabee709552
Community SafeWallet 0x446d4d6b26815f9bA78 B5D454E303315D586Cb2a 0xd9db270c1b5e3bd161e 8c8503c55ceabee709552
Pausing SafeWallet 0x1ba8e3aA853F73ae809 3E26B7B8F2520c3620Df4 0xd9db270c1b5e3bd161e 8c8503c55ceabee709552

架构

整个协议主要包括两个与用户资产相关的智能合约。第一个是 PufferDepositor,第二个是 PufferVault

图 1:PufferDepositor 和 PufferVault 之间的主要关系
图 1:PufferDepositor 和 PufferVault 之间的主要关系

PufferDepositor 的主要功能是接受用户的资产,然后将它们存入 PufferVault。如果用户的存款资产不是 stETH,协议会自动执行兑换到 DEX。

PufferVault 是持有用户资产的主要合约。它也是存入 EigenLayer 的入口点。整个协议的主要访问控制在此智能合约中实现。

访问控制机制

整个访问控制是通过利用 OpenZeppelin 的 AccessManager 模块 来实现的。AccessManager 智能合约管理 PufferDepositorPufferVault 合约的权限。

AccessManager 定义了不同的角色(Roles),其中包含不同的地址。每个角色都可以被分配来调用 AccessManaged 合约(即 PufferDepositor 和 PufferVault)中的不同函数。AccessManager 支持对特定函数的延迟执行。因此,在向地址授予角色时,可以指定来自该地址在该角色下的操作是立即执行还是延迟执行。

当前访问控制配置

尽管如此,访问控制的有效性取决于其配置。我们观察到大量情况表明,ACL(访问控制列表)规则配置错误导致了安全漏洞。

为此,我们审查了 Puffer 协议的当前配置,并在下面展示了结果。请注意,这些结果仅反映截至区块 19177155(2024 年 2 月 7 日,下午 03:17:35 +UTC)的状态。

角色

下表概述了系统中的当前角色及其关联的地址。

角色 ID 拥有此角色的地址 延迟执行 备注
0 TimeLock 0x3c28b7c7ba1a1f55c9ce66b263b33b204f2126ea ADMIN 角色
1 Operation SafeWallet 0xc0896ab1a8cae8c2c1d27d011eb955cca955580d 是,延迟 604800 秒(7 天) 升级目标合约(PufferDepositor 和 PufferVault)
1 Community SafeWallet 0x446d4d6b26815f9ba78b5d454e303315d586cb2a 升级目标合约(PufferDepositor 和 PufferVault)
22 Operation SafeWallet 0xc0896ab1a8cae8c2c1d27d011eb955cca955580d 将资产存入 EigenLayer 并发起 EigenLayer 提款请求

执行 PufferVault 合约中的函数有不同的执行路径。一条路径涉及 TimeLock 合约(具有 ADMIN 角色 – 如图中路径 1 所示),另一条路径允许直接调用 Vault 中的函数,并将角色分配给调用者。在这两种情况下,调用都必须通过 AccessManager。

图 2:执行 PufferVault 合约中函数的不同执行路径
图 2:执行 PufferVault 合约中函数的不同执行路径

类型 I:来自 TimeLock 合约的调用

请注意,当从 TimeLock 合约调用函数时,分配的角色是 ADMIN。之所以如此指定,是因为从 Vault 的角度来看,调用者是 TimeLock 合约,该合约拥有 ADMIN 角色。因此,TimeLock 合约包含额外的延迟执行机制。

  • Operation SafeWallet:此组件可以在延迟 604,800 秒(约 7 天)后调用目标合约中的函数。
  • Community SafeWallet:此组件能够立即调用目标合约中的函数。它也有权取消 Operation SafeWallet 提交的队列中任何待处理的执行。
  • Pausing SafeWallet:此组件仅限于暂停目标合约,无权执行其他任何函数。

类型 II:直接调用 Vault 合约

接下来的方法涉及直接调用 Vault 合约中的函数。需要注意的是,AccessManager 决定了与每个角色关联的地址可以调用哪些函数。

角色 ID 目标合约 目标函数
1 PufferVault upgradeToAndCall(address,bytes)

0x4f1ef286

22 PufferVault depositToEigenLayer (0x008e0590)

initiateETHWithdrawalsFromLido (0x593961de)

initiateStETHWithdrawalFromEigenLayer (0x402064a7)

Operation SafeWallet 和 Community SafeWallet 都可以直接调用 upgradeToAndCall 函数来升级目标合约。关键区别在于时机:Community SafeWallet 无延迟地执行此操作,而 Operation SafeWallet 则受延迟限制。

此外,Operation SafeWallet 能够立即执行将资产转入 EigenLayer 和发起提款请求的函数。

更新于 [2024 年 2 月 8 日上午 10:02:59 +UTC]

一项旨在将 Operation SafeWallet 从角色 1 中移除的操作已安排。此操作计划在区块 1707940908 之后执行,该区块对应大约 7 天的延迟。使用 BlockSec Phalcon 模拟了这些排队的交易。

图 3:BlockSec Phalcon 中排队交易的模拟
图 3:BlockSec Phalcon 中排队交易的模拟

查看此 Fork 中的所有交易

更新于 [2024 年 2 月 16 日下午 8:10:23 +UTC]:

图 4:Etherscan 的结果
图 4:Etherscan 的结果

安全钱包配置

安全钱包的配置也会影响协议的安全性。

钱包 所有者 阈值
0xC0896ab1A8cae8c2C1d 27d011eb955Cca955580d [0xb7d83623906AC3fa577F45B7D2b9D4BD26BC5d76] [0xD6475ce37d964d4816715FdafFEeAAf2958948bE] [0xD70aa9d7280E6FEe89B86f53c0B2A363478D5e94] [0xa5F84b556d5FD8959165Eff0324DCFEa164fA089] [0xf061f1FceFa32b3bbD5d18c5A623DB64bfBc107D] [0x206846dE1F372A9a603e672ba97A5238cC89aeAA] 3
0x446d4d6b26815f9bA78 B5D454E303315D586Cb2a [0xb7d83623906AC3fa577F45B7D2b9D4BD26BC5d76] [0x3B16821A5dBBFF86E4a88eA0621EC6be016cd79A] [0x648aA14e4424e0825A5cE739C8C68610e143FB79] [0x27c7CEd729280060577A68A54A94075D18614D19] [0xa9aE3B8FC1CBaAed74fE5889260f7cD743c50363] [0x161f479021044cB1C9e3DEF98aF945A8D972D3B2] 3
0x1ba8e3aA853F73ae809 3E26B7B8F2520c3620Df4 [0xb7d83623906AC3fa577F45B7D2b9D4BD26BC5d76] [0x3B16821A5dBBFF86E4a88eA0621EC6be016cd79A] [0x648aA14e4424e0825A5cE739C8C68610e143FB79] [0x27c7CEd729280060577A68A54A94075D18614D19] [0xa9aE3B8FC1CBaAed74fE5889260f7cD743c50363] [0x161f479021044cB1C9e3DEF98aF945A8D972D3B2] [0xD6475ce37d964d4816715FdafFEeAAf2958948bE] [0xD70aa9d7280E6FEe89B86f53c0B2A363478D5e94] [0xa5F84b556d5FD8959165Eff0324DCFEa164fA089] [0xf061f1FceFa32b3bbD5d18c5A623DB64bfBc107D] [0x206846dE1F372A9a603e672ba97A5238cC89aeAA] [0xaACA1eDbb656206Ce2a82Da7d7BD3e1Bb8138F22] 1

更新于 [2024 年 2 月 8 日上午 10:02:59 +UTC]:

总结

在这篇博客文章中,我们回顾了 Puffer 协议使用的安全机制。总的来说,整个权限系统的设计是全面的。

社区应积极关注潜在风险:

  • Community SafeWallet 所有者私钥的安全性至关重要。如果三个私钥被泄露,攻击者将能够升级 Vault。
  • 依赖协议(如 EigenLayer)的安全性也应积极监控。
Sign up for the latest updates
Weekly Web3 Security Incident Roundup | Feb 9 – Feb 15, 2026

Weekly Web3 Security Incident Roundup | Feb 9 – Feb 15, 2026

During the week of February 9 to February 15, 2026, three blockchain security incidents were reported with total losses of ~$657K. All incidents occurred on the BNB Smart Chain and involved flawed business logic in DeFi token contracts. The primary causes included an unchecked balance withdrawal from an intermediary contract that allowed donation-based inflation of a liquidity addition targeted by a sandwich attack, a post-swap deflationary clawback that returned sold tokens to the caller while draining pool reserves to create a repeatable price-manipulation primitive, and a token transfer override that burned tokens directly from a Uniswap V2 pair's balance and force-synced reserves within the same transaction to artificially inflate the token price.

Top 10 "Awesome" Security Incidents in 2025

Top 10 "Awesome" Security Incidents in 2025

To help the community learn from what happened, BlockSec selected ten incidents that stood out most this year. These cases were chosen not only for the scale of loss, but also for the distinct techniques involved, the unexpected twists in execution, and the new or underexplored attack surfaces they revealed.

#10 Panoptic Incident: XOR Linearity Breaks the Position Fingerprint Scheme

#10 Panoptic Incident: XOR Linearity Breaks the Position Fingerprint Scheme

On August 29, 2025, Panoptic disclosed a Cantina bounty finding and confirmed that, with support from Cantina and Seal911, it executed a rescue operation on August 25 to secure roughly $400K in funds. The issue stemmed from a flaw in Panoptic’s position fingerprint calculation algorithm, which could have enabled incorrect position identification and downstream fund risk.