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)
Gao的头像Gao
上一篇 2023年1月31日 下午3:48
下一篇 2023年1月31日 下午4:14

相关推荐

  • 同源异流:Lens和CyberConnect的去中心化社交路径

    Web3 社交产品利用区块链技术将用户行为和数据上链,有望打破 Web2 社交平台的数据垄断和私有化,让用户真正拥有自己的数据。然而,这并未完全解决数据孤岛问题——不同智能合约间的数据标准、格式各异,应用之间的可组合性仍然受限。这也是为什么许多社交 Dapp 尚未在 Web3 社交领域取得突破的原因之一。

    2023年4月7日
    676
  • ETH合并之后,我们看好哪些投资机会?

    不同的解决方案都是在交易速度和安全性之间进行权衡。“可扩展性、安全、去中心化”是一个不可能三角,不论是PoW、PoS、DPoS,或是Solana的PoH,如果要提高交易速度,首先就是要提高出块速度。这里面有一个妥协,就是为了提高出块速度,要放弃多少中心化。如果运算量下降,单点安全性也会下降。

    2022年7月26日
    956
  • 合作CUCCI、保时捷,GEEIQ融资6000万,看好元宇宙?

    作为一家元宇宙数据分析和营销初创公司,GEEIQ 在 9 月份刚完成 660 万英镑(约合人民币 5925 万)A 轮融资。YFM Equity Partners(YFM)领导了这轮投资。

    2023年10月19日
    308

发表回复

登录后才能评论
微信

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