Staking和Staking还有差别?实现「睡后收入」如何避免翻车?

权益证明区块链依赖于用户(验证者)锁定(抵押)token,以参与共识算法,该算法负责生成区块并将其添加到链中。Staking 就像验证者在游戏中的皮肤证明——在某些区块链中,例如以太坊,提交欺诈性区块的验证者甚至可以削减其股份作为惩罚。

当我们谈论区块链生态系统中的Staking时,可能指的是两个不同的概念。

它可能是一种用于参与权益证明共识算法的质押,或者是用户将其 token 锁定在 DeFi 项目中以获得帮助增加其 TVL 或保留某些 token 价值的奖励。

本文将主要为大家讲解后者以及后者在 2022 年的表现,但在开启讨论之前,我们需要先了解一下这两者的区别。

在权益证明 (PoS) 区块链中进行质押

权益证明区块链依赖于用户(验证者)锁定(抵押)token,以参与共识算法,该算法负责生成区块并将其添加到链中。

Staking 就像验证者在游戏中的皮肤证明——在某些区块链中,例如以太坊,提交欺诈性区块的验证者甚至可以削减其股份作为惩罚。

权益证明 (PoS) 是作为工作证明 (PoW) 的替代方案而创建的。

权益证明的验证者主要是投资于网络的持续价值,因此往往以网络最大利益为出发点。

这与 PoW 不同,PoW 不要求矿工持有他们正在验证其交易的任何 token。权益证明相比于工作证明的主要优势在于其大大降低了能源消耗。此外,PoS 不需要像PoW那样使用高门槛的专用硬件设备。

DeFi Staking 项目

一些去中心化金融 (DeFi) 项目允许用户使用 stake coin 或 token 来增加他们的 TVL(总锁定价值),从而用更多的stake coin 或 token奖励这些用户。奖励的数量、种类和频率将取决于具体的 DeFi 项目。

这一类型较为知名的项目有 Yearn Finance、Curve Finance 和 Uniswap。

下表总结了所讨论的两种Staking系统之间的差异:

Staking和Staking还有差别?实现「睡后收入」如何避免翻车?

2022 年关于 Staking 及相关攻击的常见问题

通常,当计算用户奖励的智能合约未能使用基础 token 的正确价格或用户用于此类计算的 token 数量进行此类计算时,就会出现漏洞,允许攻击者获得比预期更多的奖励。

这些漏洞通常通过让攻击者操纵 Staking token 的价格或操纵用户暂时拥有的数量来起作用。同时让易受攻击的智能合约计算用户奖励,从而影响奖励 token 的价值或数量以谋取利益。

除此之外,合约中可能存在的其他典型漏洞,如可重入、合约变量未更新等,都可能让攻击者获得更多非法奖励。

以下是一些典型的 Staking 漏洞:

1.根据可操纵的 Stake 余额计算奖励

2022 年 11 月 21 日,CertiK Skynet 天网动态扫描系统发出预警:一笔闪电贷获取了巨大利润。经过专家团队调查,确定了 SportsDao token 奖励机制遭到恶意利用,奖励金额与合约 LP 余额成反比,任何人都可以通过 withdrawTeam () 函数「重置」该余额。经计算,总利润约为 1370 万 BSC-USD。

奖励是根据合约的 LP 余额计算的:

Staking和Staking还有差别?实现「睡后收入」如何避免翻车?

并且任何人都可以通过调用 withdrawTeam() 函数将所有 LP token 转移到团队钱包来清空合约里的 LP。

Staking和Staking还有差别?实现「睡后收入」如何避免翻车?

由于奖励率不仅由用户提供的流动性决定,而且与合约上(指定对的)LP token 余额成反比,一旦合约被清空,攻击者只需要质押一些 LP token(stakeLP() function)然后领取奖励(getReward() function):

Staking和Staking还有差别?实现「睡后收入」如何避免翻车?

攻击交易:https ://bscscan.com/tx/0xb3ac111d294ea9dedfd99349304a9606df0b572d05da8cedf47ba169d10791ed

2.使用单一第三方矿池计算奖励价值

2022 年 8 月 13 日,WarpStaking 项目遭到攻击,攻击者利用了奖励价格的计算错误来实施此次攻击。

尽管此次攻击最后的总损失仅为 0.09BTC(约合 2,293 美元),但本文仍将其收录在内,是因为这个案例非常典型且易于理解。

WarpStaking 奖励那些抵押 WRP token 的用户。因此攻击者从 PancakeSwap 上借出了 2 个 BTCB,并使用 BTCB-WRP 流动资金池将它们换成 WRP(提高了池子中 WRP 的价格)。随后调用 harvest() 函数获得质押奖励(单位为BTCB)。由于该函数使用上述池计算 BTCB 中 WRP 的价格,因此攻击者获得了比他们原本应得的更多奖励。

Staking和Staking还有差别?实现「睡后收入」如何避免翻车?

上述代码中调用了 rewardTokenPriceInToken () 函数计算奖励 token 的价格。鉴于它使用单个 PancakeSwap 池,价格很容易被攻击者操纵。

这种情况中,CertiK 建议使用多个可靠的链上价格预言机来源,例如 Chainlink 或 Band 协议,或使用时间加权平均价格 (TWAP) 。

通过 Bscscan 观察受影响的交易:https://bscscan.com/tx/0xa8dd1a8ecb5e7975f0e9830bbd3894cb81547338ce75b3cabcdf04dc1976a757。

值得一提的是,在过去我们曾观察到其他事件错误地使用单个第三方池来计算在质押时应铸造的 share(股)数量。他们不会像上文所述那样滥用第三方池来计算奖励价值,而是使用质押时获得的 share 数量。但这些攻击也会导致奖励计算出现问题。

3.在提供闪电贷的同时计算奖励

Equalizer 允许用户使用他们 vault 中的资金进行闪电贷。合约 FlashloanProvider 可以让用户从 vault 中闪电贷资产,同时在同一个区块中向其抵押新的 token。这使得兑换率容易被操纵。攻击者通过攻击多个 vault(约 33 WETH、约 831 USDC、约 651 UNI、约 77 LINK 和约 164 WBNB)总共获得了价值约 11.2 万美元的 token。

在下图的代码中,函数 getRatioForOneEToken () 使用当前合约的抵押 token 来计算 token 的比率,这样乍一看可能并不容易受到攻击。但是,该合约还提供了闪电贷功能,这使得该合约的 token 比例可以被任意操纵。

Staking和Staking还有差别?实现「睡后收入」如何避免翻车?

通过 Etherscan 观察其中一笔受影响的交易:https ://etherscan.io/tx/0x9b17f61d2c7fc4463ff94c5edfea6695d131584a6e07fed5b9ed298c16c17f41/advanced

4.合约变量未更新

2022 年 10 月 26 日,StakeUpFarm 项目遭到攻击,攻击者利用了该项目 staking 时间参数未正确更新,从而获利 12,328 BUSD。

StakeUpFarm 在解锁质押 token 时没有更新 startTime 状态变量。因此,可以多次质押并累积所有奖励(其中那些新质押的 token 可以按照第一次质押的 token 的时间来获取奖励)。

Staking和Staking还有差别?实现「睡后收入」如何避免翻车?

上图的代码调用了 userRewardMINT() 函数来计算用户的奖励,但是当用户解除质押时,claimTimeMINT[_user].startTime 变量并没有更新,从而让用户获得更多的奖励。

漏洞交易:https ://bscscan.com/tx/0x368a52b5b657ee7152d99ebbf595e09163d3847f47a9eb52b9c8618adbd21368

5.重入攻击

2022 年 3 月 13 日,Paraluni 项目遭到重入漏洞攻击。经过多笔恶意交易后,该项目约有170 万美元被盗。

Staking和Staking还有差别?实现「睡后收入」如何避免翻车?

在上图的代码中,addLiquidityInternal() 过程完成之前,攻击者触发了 MasterChef.deposit() ,使得恶意 token 将 LP token 存入了合约。

因为函数 addLiquidityInternal() 检查前后的合约余额,所以合约认为存款人提供了更多的 LP 代币。这样,攻击者就有了两条存款记录。

该攻击比直接利用可重入性问题要复杂一些,因为它涉及创建两个假 token,这些 token 将在调用 transferFrom()函数时重入。

漏洞交易示例:https://bscscan.com/tx/0x70f367b9420ac2654a5223cc311c7f9c361736a39fd4e7dff9ed1b85bab7ad54

6.系统设计

a. 对敏感功能缺乏访问控制

2022 年 2 月 20 日,DonationStaking 因缺乏访问控制的问题遭到攻击,损失了 15 ETH(约 40000 美元)。没有对 setStakingContract()函数的访问控制,因此任何人都可以调用它来修改 Staking 合约和 Staking token。

Staking和Staking还有差别?实现「睡后收入」如何避免翻车?

以下交易显示了攻击者如何调用 setStakingContract() ,将精心制作的恶意「L token」作为 DonationStaking 合约的抵押合约:https ://etherscan.io/tx/0x09e026dcd64e2ebc5c59e77b3faf5543bcc3b774342ac7a980e388c3c33c84d9 。

上述函数缺乏访问控制导致该行为具备可能性。

b. 缺乏输入验证

2022 年 8 月 2 日,Reaper Farm 的 ReaperVaultV2 合约被利用,损失超过 160 万美元。

攻击者利用了 ReaperVaultV2 合约中的一个漏洞,任何人都可以销毁其他用户的 vault share 并提取 token。主要问题是 vault share 持有者可以是 msg.sender 以外的账户。

Staking和Staking还有差别?实现「睡后收入」如何避免翻车?

在上面的 withdraw () 函数中,参数 owner 可以是任意地址,而不仅仅是调用者的地址。此外,地址所有者和 msg.sender 之间的关系是未检查的,这意味着用户可以使用不同的所有者值从 vault 中提取其他用户的资产。

漏洞交易示例:https://ftmscan.com/tx/0xc929f3b9312ff26be0adb1c3ff832dbdafdcbcaad33d002744effd515e53c9d5

c. 对输入参数的处理有误

2022 年 4 月 23 日,一名攻击者利用 SmoltingInu token 合约中的 gambling 功能 flipcoin()函数赢得 SmoltingIn token。攻击者将所得 token 抛售,导致其价格下跌 99%。

在 SmoltingInu 合约中,flipCoin()函数接受用户的存款,生成_randomNumber 并确定用户是否获胜。所有步骤在一个块内完成。攻击者编写了一个合约来与 flipCoin()函数交互,并在丢失时恢复交易。

Staking和Staking还有差别?实现「睡后收入」如何避免翻车?

漏洞交易示例:https://bscscan.com/tx/0x6bfb3abbdc546959d4cb64840672920389ffb1ff4f0ccb276629ee26df3d08d6

为什么 Staking 会吸引这么多黑客?

鉴于价格操纵攻击通常利用闪电贷攻击来进行,它们易于操作且成本较低。

即便攻击失败,付出的成本也就是一点手续费罢了。但如果攻击成功,获取巨额利润可以让成本直接被忽略不计。

部分合约本身存在逻辑漏洞,如合约部分变量未更新、合约方法中缺乏权限控制、合约经济模型不合理等。

Web3.0 领域已成为黑客的新目标,尤其是 DeFi。不仅许多项目在没有审计的情况下直接上线,更有那些即便已完成审计的项目因新的媒介被攻击。

此外,DeFi 项目很少会实施完备的 AML 或 KYC 验证,因此通过另一个 DeFi 交易所进行攻击和洗钱相对容易且难以被察觉。

基于这一分析,很明显在 DeFi 安全方面我们还有很多工作要做。

尽管 Web3.0 领域已在安全、采用和监管批准方面取得了重大进展,但数字资产仍然算是一个新兴市场,其未来也在持续的构建当中。

如何保护涉及 Staking 的项目

保护 Staking 项目免受攻击的最佳方法是对奖励计算进行审计,以确保所有奖励符合设计且是可持续的。

此外,建议使用可靠的去中心化预言机,如 Chainlink(或通过聚合许多不同价格来源的预言机)。

如果平台决定使用链上预言机,那么可以采取一些预防措施来提高安全性。例如通过使用时间加权平均价格(TWAP)来计算资产价格,这样攻击者就很难操纵价格。

另一种防止闪电贷攻击 Staking 项目的方法是在与平台交互所需的步骤之间增加轻微的延迟。这一延迟防御了闪电贷攻击,因为他们必须在同一个区块中开始和结束。虽然这种措施可能会限制可组合性和用户体验,但仍是一种颇为有效的解决方案。

最后,确保合约中不存在典型的漏洞,如重入、缺乏访问控制、合约变量未更新等。为此,建议始终遵循安全最佳实践,进行测试,完成来自于业内领先安全机构的代码审计,并随时了解最新的黑客攻击方式,防患于未然。

(声明:请读者严格遵守所在地法律法规,本文不代表任何投资建议)

(0)
上一篇 2023年1月31日 下午3:48
下一篇 2023年1月31日 下午4:14

相关推荐

  • Web3钱包竞赛加剧,如何在饱和市场中找到新机会?

    在本文中,我不会深入探讨技术细节,将钱包划分为 EOA、AA、MPC 和 ERC-4337 等。虽然这些技术分类很重要,但它们通常只代表了钱包特定层次内的区别。相反,我的重点是提出三个框架,以了解 Web3 钱包的业务和战略定位。这些框架将为构建者和投资者提供对钱包生态系统的更清晰理解,解答问题,比如:在这个饱和市场中,现有项目如何捕获额外价值?

    2023年11月9日
    462
  • zkSync空投将至?一文了解zkSync主网最新进展及链上应用

    据数据分析平台 0xScope 显示,在 Arbitrum 宣布空投后,其他有潜力空投的项目近日的每日活跃用户激增,其中 zkSync 和 StarkNet 跨链桥增长最为明显,日活用户数增长约 10 倍以上。Dune 数据显示,3 月 23 日,zkSync 链上日交易量为 3 万笔,存入了 3304ETH,价值 560 万美元,创下单日历史新高。

    2023年3月25日
    899
  • Michael Saylor的比特币「中场战事」

    Saylor 是一个与天才一样古怪的商人和发明家。同样也是技术大亨、MicroStrategy 前首席执行官、以及 40 多项专利的发明家,并与麦当劳签订了价值 1000 万美元的合同,以开发分析其促销效率的应用程序。

    2022年10月31日
    614

发表回复

登录后才能评论
微信

联系我们
邮箱:whylweb3@163.com
微信:gaoshuang613