宇宙链 宇宙链
Ctrl+D收藏宇宙链
首页 > 火币APP > 正文

细数DeFi预言机攻击套路,这六种安全措施你需要了解

作者:

时间:1900/1/1 0:00:00

译者注:价格预言机是去中心化金融的重要一环,然而,正是这一环节中可能存在的漏洞,导致很多DeFi项目遭受了灾难性损失,有的损失甚至达到了数千万美元,那这些攻击到底是怎么回事?又怎样去预防它们?在这篇文章中,知名白帽黑客、Paradigm研究合伙人Samczsun分析了5个关于价格预言机攻击的现实案例,并总结了6种抵御这类攻击的方法。

2019年末,我发表了一篇题为“利用低抵押获利”的帖子,在这篇文章中,我描述了一种针对以太坊dApp的经济攻击,这种攻击依赖于一个或多个代币的准确价格数据。现在是2020年末,不幸的是,很多项目都犯了类似的错误,最近的例子是HarvestFinance,其遭遇了黑客攻击,导致协议用户集体损失达3300万美元。

虽然开发者们已熟悉了可重入等漏洞,但预言机操纵显然不是经常被考虑的问题。事实上,基于可重入漏洞的攻击,在过去几年中有所下降,而基于价格预言机操纵的漏洞利用率,现在正在上升。因此,我认为是时候发表一些关于价格预言机操纵的确定性资料了。

这篇文章分为三个部分,在第一部分,我们会对那些不熟悉这一主题的人,对预言机和预言机操纵进行一个简单介绍。而第二部分,则是一些案例研究,那些想要测试自己知识的人,可以跳过它们。最后,我们总结了一些开发者可用来保护他们的项目不受预言机操纵的技术。

现实生活中的预言机操纵

时间回到2015年12月1日,假设你现在的身份是DavidSpargo,现在你正在澳大利亚墨尔本的PekingDuk演唱会,你想去后台休息室亲自见见这支乐队的成员,但有两名保安拦在你的面前,他们不可能让普通人直接进去。

你想知道,如果你表现得像PekingDuk乐队的亲属,保安会有什么反应。因为家庭成员肯定会被允许在后台访问乐队,所以你所要做的就是让保安相信你是乐队的亲戚。你想了一会儿,想出了一个计划,而这个计划只能被描述为“天才般”或“绝对疯狂的”。

推特用户:如果ben.eth不在54小时内支付开发者要求的赏金,将有失去热钱包全部资产:金色财经报道,推特用户vydamo_表示,如果ben.eth(PSYOP创始人)不在54小时内支付wentokens.xyz的开发者要求的100枚ETH赏金,ben.eth将有失去其热钱包全部资产的风险(约2200万美元),由于Ben在向持有人空投PSYOP、LOYAL和BEN代币时签署的交易,目前他的整个热钱包都被扣。在Ben使用该协议前1天,部署者调用了一个函数“isUpdateable”来推送对合约的更新。目前距离ben.eth离合约到期还有54小时。[2023/6/3 11:56:09]

在迅速安排好一切之后,你自信地走到保安面前。你自我介绍自己是DavidSpargo,是PekingDuk乐队的家庭成员,当警卫要求你提供证据时,你给他们看无可辩驳的证据——维基百科。

警卫挥手让你过去,让你稍等一下。一分钟过去了,两分钟过去了……五分钟后,你想知道你是否应该在执法人员出现之前逃跑。就在你准备放弃的时候,PekingDuk乐队成员ReubenStyles走了过来,然后你和他一起走进休息室,乐队对你的聪明才智印象深刻,最后你们一起喝了几杯啤酒,再后来,他们在自己的Facebook页面上分享了当晚发生的事情。

什么是价格预言机?

价格预言机,大可指你向其咨询价格信息的任何东西。当帕姆向德怀特询问一Schrute元的现金价值时,德怀特就扮演了一个价格预言机。

在以太坊上,一切都是智能合约,价格预言机也是如此。因此,区分价格预言机获取价格信息的方式更为有用。在一种方法中,你可以简单地从价格API或交易所获取现有的链外价格数据,并将其带到链上。而另一类方式,你可以通过咨询链上去中心化交易所来计算即时价格。

这两种选择各有利弊。链外数据对波动性的反应通常较慢,这是好是坏,取决于你试图使用它的目的,而这种方式通常需要少数特权用户将数据推送到链上,因此你必须相信这些人不会做恶,也不会被迫推送坏的更新。而链上数据不需要任何特权访问,并且总是最新的,但这意味着它很容易被攻击者操纵,从而导致灾难性的失败。

报告:预计区块链零售市场规模2028年将达到2.0828亿美元:金色财经报道,Fortune Business Insights在一份报告中指出,2020年全球区块链零售市场规模为1.268亿美元,预计将从2021年的1.722亿美元增长到2028年的2.0828亿美元,在2021-2028年期间的CAGR为42.8%。对简化业务流程日益增长的需求推动了市场增长。

分析师认为,零售和供应链等终端用户对该产品的需求激增,预计将引导区块链零售解决方案的需求。[2023/3/7 12:47:31]

那可能出现什么问题?

让我们来看几个关于价格预言机集成问题导致DeFi项目重大财务损失的例子。

1、SynthetixsKRW预言机故障

Synthetix是一个衍生品平台,它允许用户访问其他货币等资产。为了实现这一目标,当时的Synthetix依赖于一个定制的链外喂价实现,其喂价数据以固定的时间间隔发布到链上。这些价格允许用户对支持的资产做多或做空。

2019年6月25日,Synthetix依赖的一份喂价报告称,韩元的价格比真实汇率高出1000倍。由于价格预言机系统中其他地方的错误,这一价格被系统接受并发布到链上,随后一个交易机器人迅速进出这个sKRW市场。

尽管Synthetix团队能与交易者协商,让其返还资金,但总的来说,这个机器人有能力赚取超过10亿美元的利润。

Synthetix正确地执行了价格预言机,并从多个来源获取价格,以防止交易者在价格变化发布到链上之前预测价格变化。然而,一个孤立的上游喂价故障导致了一次毁灭性的攻击。这说明了使用链外数据的价格预言机的风险:你不知道价格是如何被计算的,因此你的系统必须经过仔细设计,以便正确处理所有潜在的失败模式。

低抵押借贷

WISeKey与Continent 8将合作在直布罗陀部署节点:10月24日消息,网络安全物联网和人工智能公司WISeKey International Holding宣布与全球托管、连接和网络安全服务公司Continent 8 Technologies签署协议,将其业务扩展到直布罗陀,将在当地部署WISeKey节点,能够为数字身份、物联网和NFT相关项目提供可信管理服务(Trusted Managed Services)。(Globenewswire)[2022/10/24 16:36:59]

如上面提到的,我在2019年9月发表了一篇文章,其中概述了使用链上数据价格预言机的相关风险。虽然我强烈建议你阅读这篇文章,但是它的篇幅很长,技术细节也很繁重,这可能会让人难以理解。因此,我会在这里提供一个简化的解释。

想象一下,你把去中心化的借贷放到区块链上。用户可以将资产作为抵押品存放,也可以借入其他资产,而能够借入的最高金额由他们存入的资产价值决定。假设一个用户用ETH作为抵押品,然后借入USD,目前ETH的价格为400美元,抵押率为150%。

如果用户存入375ETH,则其存入的抵押品价值15万美元,根据每1.5美元抵押品可借入1美元的规则,那么该用户最多可以从系统那借款10万美元。

当然,在区块链上,这并不像简单地声明1ETH值400美元那么简单,因为恶意的用户可以简单地声明1ETH价值1000美元,然后从系统中拿走所有的钱。因此,开发者很容易会去接入像Uniswap、Kyber或其他去中心化交易所的现货价格。

乍一看,这似乎是正确的做法。毕竟,无论何时你想买或卖出ETH,Uniwap的价格总是大致正确的,因为套利者很快就会纠正任何偏差。然而,事实证明,去中心化交易所的即期价格在交易期间可能会非常不正确,如下面的示例所示。

澳大利亚证券交易所已在区块链股票结算系统上投入1.5亿美元:金色财经报道,根据澳大利亚证券交易所(ASX)年度业绩公告披露,截至2022年6月底,该交易所已在区块链股票结算系统上花费2.16亿澳元(1.5亿美元),据悉这笔费用包括了他们自2016年以来的所有工作成本,但不包括其对软件开发商Digital Asset的投资,按照相关规划,Digital Asset的DAML智能合约语言将用于澳大利亚证券交易所的区块链结算系统CHESS ,VMware Blockchain提供分布式账本技术(DLT)。 (ledgerinsights)[2022/8/18 12:34:21]

思考一下Uniswap的存储功能,价格以储备资产金额为基础计算,但由于用户在ETH和USD之间交易,储备所持有的资产会发生变化。如果恶意用户在从平台贷款之前和之后执行交易,会怎样?

在用户贷款之前,他们以200万USD的价格购买了5000ETH,现在,Uniswap交易所计算的价格为1ETH=2,600USD。现在,他们的375个ETH可以作为抵押,并借取最高65万美元的资产。最后,他们将200万美元换回5000ETH,这将重置价格,而你的借贷平台则损失了55万美元。

这个案例研究,说明了将去中心化交易所用作价格预言机时遇到的最常见的错误——攻击者在交易过程中几乎完全控制了价格,而试图准确读取该价格就像在完成结算之前先读取磅秤上的重量一样。

你可能会得到错误的数字,根据具体情况,这可能会花费你很多钱。

2、SynthetixMKR操纵

2019年12月,Synthetix再次遭受价格预言机操纵攻击,值得注意的是,这次攻击跨越了链上数据和链外数据的界限。

用户名为u/MusaTheRedGuard的Reddit用户观察到,一名攻击者对sMKR和iMKR进行了一些非常可疑的交易。攻击者首先通过购买sMKR来做多MKR,然后从UniswapETH/MKR资产交易对中购买大量MKR。在等待了一段时间后,攻击者将他们的sMKR换成了iMKR空头仓位,并将他们的MKR卖回Uniswap。然后他们重复了这个过程。

Paxos与PicPay合作面向巴西用户推出加密货币交易功能:金色财经报道,美元稳定币USDP发行方Paxos宣布已与巴西金融科技应用PicPay合作推出加密货币交易功能,将数字资产带给PicPay的3000万活跃用户。PicPay用户现在可以购买、出售和持有比特币、以太坊和USDP(Paxos完全受监管的美元支持的稳定币)。

PicPay还将支持加密货币支付功能,并将在今年晚些时候推出。(paxos.com)[2022/8/11 12:17:33]

在幕后,攻击者通过Uniswap进行的交易,允许他们随意移动Synthetix上MKR的价格。这很可能是因为Synthetix所依赖的链外喂价,实际上依赖于MKR的链上价格,而且套利者没有足够的流动性来将市场重新设置到最佳条件。

这起事件说明了一个事实:即使你认为自己在使用链外价格数据,但实际上你可能仍然在使用链上价格数据,而且你可能仍然会因为使用这些数据,而遭遇到复杂的攻击。

3、bZx黑客事件

2020年2月,bZx在几天内遭受两次黑客攻击,损失价值约为100万美元。你可以这里找到由palkeo编写的关于两次黑客攻击的优秀技术分析文章,但我们在这只关注第二次攻击。

在第二次黑客攻击中,攻击者首先使用ETH购买了Kyber上几乎所有的sUSD,然后,攻击者从Synthetix平台购买了第二批sUSD,并将其存放在bZx上。利用sUSD作为抵押品,攻击者借用了他们被允许的最大数量的ETH,然后他们把sUSD卖回给了Kyber。

如果你注意到了,你会发现,这本质上是同样的低抵押借贷攻击,但使用了不同的抵押品和不同的去中心化交易所。

4、yVault漏洞

2020年7月25日,我报告了一个关于yEarn推出的新yVault合约的漏洞,你可以在这里读到关于这个漏洞的官方公告,但我将在下面简要总结一下。

yVault系统允许用户在不需要自己管理的情况下存入代币并赚取收益。在内部,这个金库跟踪铸造的yVault代币的总金额以及存放的基础代币的总金额。单个yVault代币的价值,由铸造的代币与存入的代币的比率来确定。金库获得的任何收益,都会分摊到所有铸造的yVault代币上。

第一个yVault允许用户通过向BalancerMUSD/USDC储备池提供流动性来获得USDC收益。当用户向Balancer提供流动性时,他们会收到BPT作为凭证。因此,yVault根据其BPT可赎回的MUSD/USDC金额计算其持有的价值。

这似乎是正确的实现,但不幸的是,与前面提到的原理相同——交易期间,Balancer池的状态是不稳定的,因此不可信任。在这种情况下,由于Balancer选择的联合曲线,在USDC和MUSD之间进行交换的用户将不会获得1:1的汇率,但实际上会在储备池中留下一些MUSD。这意味着BPT的值可以暂时膨胀,这使得攻击者可以随意操纵价格并随后耗尽金库。

这一事件表明,价格预言机并不总是可靠的,开发者需要警惕他们正在摄取什么样的数据,并考虑这些数据是否可以被非特权用户轻易操纵。

5、HarvestFinance黑客攻击

2020年10月26日,一位匿名用户用一种技术攻击了HarvestFinance储备池。你可以在这里阅读官方的分析报告,但我要再次为你总结下:攻击者通过执行交易使得Curve池中的USDC价格降低,然后以降低的价格进入Harvest池子,通过逆转先前的交易恢复价格,并以更高的价格退出Harvest池子。这最终导致用户损失了3300万美元。

如何自我保护?

现在,我希望你了解了价格预言机操纵攻击,此外,如果你不采取适当的防御措施,攻击者可能会你的协议,让其乖乖把钱交给他们。虽然目前并没有适用于所有情况的解决方案,但还是有一些曾在其他项目中奏效的解决方案,也许其中一款也会适合你。

建议1:不跳入浅市场

就像跳入游泳池的浅水区一样,跳入一个浅市场也是痛苦的,这可能会导致巨大的损失,从而永远改变你的生活。在考虑具体的价格预言机计划之前,先考虑一下代币的流动性是否足以保证与你的平台集成。

建议2:一鸟在手胜过两鸟在林

看到Uniswap上的潜在汇率可能会让人着迷,但在你真正点击“trade”按钮,并将代币放到钱包中之前,一切都不会是最终的。同样,要确定两种资产之间的汇率,最好的方法就是直接交换资产。这种方法很好,因为没有撤消,也没有假设。然而,对于贷款平台这样的协议来说,它可能不起作用,因为这些协议需要保留原始资产。

建议3:几乎去中心化的预言机

总结依赖链上数据预言机所存在的一种问题是,它们的更新有点过快。如果是这样,为什么不引入一点人为的延迟呢?写一个合约,用去中心化交易所的最新价格更新自己,但需要通过少数特权用户。现在,即使攻击者可以操纵价格,他们也无法利用这一点。

这种方法实现起来很简单,而且很容易见效,但它也有一些缺点——在区块链拥堵的时候,你可能无法按自己希望地那样快速更新价格,而且你仍然容易受到三明治攻击。另外,现在,你的用户还需要信任你会保持价格的更新。

建议4:增加最短延迟

操纵价格预言机是一种对时间敏感的操作,因为套利者总是在观察,并希望有机会优化任何次优市场。如果攻击者想把风险降到最低,他们会想在单笔交易中完成操纵价格预言机所需的两笔交易,这样套利者就没有机会跳到中间。作为协议开发者,如果你的系统支持它,那么只需要在用户进入和退出系统之间实现一个最短的延迟就足够了。

当然,这可能会影响可组合性,并且矿工与交易者的合作正在增加。在未来,不良行为者有可能在多笔交易中执行价格预言机操纵,因为他们知道矿工将确保没有人能够跳入中间并从中获利。

建议5:时间加权平均价格

UniswapV2引入了一种时间加权平均价格预言机,以供链上开发者使用。这篇文档详细地介绍了这种预言机提供的确切安全保证,一般来说,对于长时间没有链拥堵的大型资产池,这种TWAP预言机对预言机操纵攻击具有很强的抵御能力。然而,由于其实施的性质,它可能无法对市场剧烈波动的时刻做出足够快的反应,而且它只适用于具有链上流动性的代币资产。

建议6:M-of-N报告者机制

有时候人们会说,如果你想把事情做好,就自己去做。那如果你把N个值得信赖的朋友集合起来,让他们提交他们认为正确的链上价格,然后取M个最好的答案汇聚成当前价格,那会怎么样呢?

如今,很多大型项目都在使用这种方法:Maker运行一组由可信实体操作的喂价,Compound创建了OpenOracle,并有像Coinbase这样的预言机报价者,Chainlink聚合了来自Chainlink运营商的价格数据,并在链上公开了这些数据。请记住,如果你选择使用这些解决方案之一,那么你现在已经将信任委托给了第三方,而你的用户也必须这样做。要求报价者在链上手动发布最新信息也意味着,在市场高度波动及区块链拥堵的时期,价格更新可能无法按时完成。

结论

价格预言机对于DeFi安全性而言,是一个重要,但经常被忽视的组成部分。安全地使用价格预言机是很困难的,有很多方法可以让你以及你的用户都措手不及。在这篇文章中,我们讨论了一些价格预言机被操纵的例子,并确定在交易过程中读取价格信息可能是不安全的。我们还讨论了其他项目在过去采用的,用于抵御预言机价格操纵的一些技术。最后,每一种情况都是独一无二的,你可能会发现自己不确定是否正确地使用了价格预言机。如果是这种情况,请随时寻求建议。

特别感谢DanRobinson和GeorgiosKonstantopoulos审阅了这篇文章。

标签:USDETHTHEMKRPCUSDC币ETHM价格Doge Father Tokenmkr币价格

火币APP热门资讯
大唐财金:11.11BTC晚间行情分析及操作策略

:一样的风景不一样的天,鲜花盛开的春天,风和日丽适合春游,如果阴雨绵绵你只能猫起来躲雨,风景没变但是时境变了就会带来不一样的感觉;同样的行情,不一样的操作,也会带来不同的结果;但是唯一不变的是风险控制!如果你风险控制做不好.

1900/1/1 0:00:00
ETH 行情分析及操作建议供参考

前言: ???在这个市场,如果你处于一直亏损的状态,不如换个环境换个老师试一试,也许正是你的一次改变,会给你带来不一样的结果。是因为我们懂的处于一个困境之中时,会通过改变自身,去适应环境的变化,从而跳脱出来.

1900/1/1 0:00:00
慕岩说币: 11/11 比特币止盈提醒300美金以太坊止盈提醒9美金(下一波策略已在布局)

午间比特币给出操作建议15300附近位置多单进场,止盈目标已到达300个点,以太坊止盈目标到达9个点,目前点位已抵达多单止盈目标,跟上操作的朋友已收入囊中,证明老师思路是正确的,给足了你们操作时间.

1900/1/1 0:00:00
波卡插槽拍卖在即 DOT或将迎来紧缺时代?

2020年的加密货币市场跌宕起伏,在寒冬与牛市之间跳跃得太快,大多数人的反应都慢了甚至不止半拍。比特币在年初时一度跌破3800美元,后来又逆势上扬,一浪更比一浪强,前两天更是逼近16000美元.

1900/1/1 0:00:00
区块链希乐;11.11 下午 BTC 行情分析

???作为交易者一定要克制住自己的欲望。交易市场是将人性弱点放大N倍的市场,一旦交易者控制不住自己的欲望,走火入魔是早晚的事,也许能够获得短期暴利但总有一天会还给市场。做交易犹如我们做人,心思不正的人是不可能长期在市场中存活的.

1900/1/1 0:00:00
大将军:11.11晚间ETH行情分析及操作建议

各位朋友们,大家晚上好,我是币圈大将军(BTC219)。本着负责、诚恳、认真的态度用心写好每一篇分析文章,特点鲜明,不夸张,不含糊,力求能让大家看懂大的趋势分析以及小范围的多空搏杀力度!OPNX宣布推出基于信用的稳定币oUSD,可与U.

1900/1/1 0:00:00