06.提案攻击
2023-06-23 20:22:31 # 00.security

提案攻击

简介

什么是提案?

提案攻击:DAO governance attacks

在去中心化自治组织 (DAO)中,参与者会提出关于未来协议升级、资金管理等一些提案。为了让提案生效,需要对其进行投票。在DAO中,参与者要想参与提案投票,需要持有对应的治理代币。拥有治理代币的持有者,可以进行发起提案、投票、执行提案一系列活动。

虽然提案治理有利于建设去中心化的未来,但是也存在一些缺陷。治理代币持有比例较小的用户对参与治理采取理性冷漠态度,这进一步导致 DAO 当中投票权的中心化,转而服务于少数人利益。持有较多治理代币的用户,拥有过多的投票权。

目前 DAO已经成为常见的 dapp协议的治理模式,在 DAO模式下,协议的资金管理、重要参数的修改、协议升级都通过 DAO合约进行管理。而治理代币的持有者可以向 DAO合约发起提案、投票、执行提案。

相应地,基于 DAO提案的攻击也成为了黑客的“新潮流”

提案常常存在以下风险:

  • 决策影响:很多因素很容易影响持有人。这可以通过付费公关活动、影响者营销,甚至通过贿赂人们对提案发表有偏见的意见来实现。
  • 垃圾提案:任何人都可以通过存入一定数量的该链代币来提出治理建议。这可能会导致垃圾邮件提案。它主要发生在代币价格下跌时,提出一个提案只需要几美元。
  • 参与度低:持币者有时候不能理解过强的技术性提案,例如升级软件版本的链式升级提议。因此做出不了正确的理解和参与治理的决定
  • 高投票权:拥有大量代币的持有者比拥有更少代币的持有者拥有更多的投票权。这意味着如果一个人拥有超过通过提案所需的代币数量,他们可以单独地为协议做出任何决定。

如何进行攻击?

攻击者通过获得足够的投票权来重塑规则,或者影响足够的代币持有者,对提案进行有偏见的投票。这样的行为,我们称之为提案攻击。

复现

暂无

相关案例

  1. 2022年4月17日,算法稳定币项目Beanstalk Farms遭黑客攻击。我们经过分析发现,投票合约中的票数是由账户中的BEAN3CRV-f代币持有量计算得到的。攻击者利用了该漏洞,通过闪电贷获得大量代币,将这些代币投入到矿池中,临时获得大量的BEAN3CRV-f代币,从而获得了绝对的票数优势,使得自己的提案可以由自己决定,而不需要其他人的投票。最终盗取了大量的Token。
  2. 2022年5月9日,Fortress Loans遭到黑客攻击。本次提案攻击发生的根本原因有两个:(1)价格预言机计算价格的数据来源Chain合约缺少签名地址的验证以及power的验证;(2)治理合约中,受到FTS价格影响,提案投票的最低支持票数(FTS数量)的总价值低,使得提案可以在付出较小的代价下通过并执行。
  3. 2022/7/24,据成都链安“链必应-区块链安全态势感知平台”安全舆情监控数据显示,Audius项目遭受恶意提案攻击。成都链安安全团队简析如下:攻击者先部署恶意合约并在Audius: Community Treasury 合约中调用initialize将自己设置为治理合约的监护地址,随后攻击者调用ProposalSubmitted 提交恶意85号提案并被通过,该提案允许向攻击合约转账1,856w个AudiusToken,随后攻击者将获得的AudiusToken兑换为ETH,总共获利约108W美元,目前获利资金仍然存放于攻击者地址上(0xa0c7BD318D69424603CBf91e9969870F21B8ab4c)。
  4. 区块链音乐平台Audius遭黑客以恶意提案攻击,705ETH已转入混币协议。Audius 受害金额达六百万美金价值的AUDIO 代币,已换成705 个ETH。攻击者变更了Audius 治理合约的参数,并执行恶意提案,导致1850 万个AUDIO 代币遭转出。黑客呼叫在治理合约中的initialize 功能已改变参数,像是投票期间、延迟执行与监护地址等; 接着攻击者提交了恶意提案ID 85。攻击者向恶意提案投票,并执行其内容,得到了AUDIO 代币并脱手获利。截稿前,黑客已将全数ETH 转入混币协议Tornado Cash

Beanstalk Farms

在这次攻击事件中,攻击者创建了一个恶意提案,通过闪电贷获得了足够多的投票,并执行了该提案,从而从协议中窃取了资产,总共获利差不多8000万美金

攻击流程

  1. 从跨链桥获取初始资金:https://etherscan.io/tx/0x1fb73ec5ed8c25b9ca7c9c3c465ab4bbca8554927094f939d96600271475e101
  2. 创建并提交提案
    1. 恶意提案:https://etherscan.io/address/0xe5ecf73603d98a0128f05ed30506ac7a663dbb69
    2. 创建:https://etherscan.io/tx/0x677660ce489935b94bf5ac32c494669a71ee76913ffabe623e82a7de8226b460
    3. 提交:https://etherscan.io/tx/0x68cdec0ac76454c3b0f7af0b8a3895db00adf6daaf3b50a99716858c4fa54c6f
  3. 发起攻击:https://etherscan.io/tx/0xcd314668aaa9bbfebaf1a0bd2b6553d01dd58899c508d4729fa7311dc5d33ad7

黑客使用的一些欺骗手法

在Beanstalk的治理合约中提供了emergencyCommit方法执行提案

提案从提交到执行,需要超过2/3的投票以及24小时的窗口期。一方面,黑客通过闪电贷获取足够的投票权;另一方面,黑客为了更好的的隐藏自己,使用了一些方法:

  1. 黑客的初始资金来自跨链桥,而不是混币器,可以在一定程度上躲避安全公司的监控,目前的混币器资金出入基本受到了各安全公司的监控
  2. 黑客还创建了一个正常的提案 IniBip18 ,用来混淆视线

提交恶意提案的交易

链接

提交伪装的正常提案的交易

链接

执行恶意提案

链接

附:对本次攻击更加详细的解读:链接1链接2

Fortress Loans

Fortress Loans协议是一个借贷协议,且通过 DAO治理,FTS是其治理代币,该协议在代码层面和经济层面都存在一些问题,最终被黑客利用,耗干了流动性。黑客获利接近300万美金。

攻击流程

  1. 缺陷合约
    1. 治理合约,通过提案的阈值太低:https://bscscan.com/address/0xe79ecdb7fedd413e697f083982bac29e93d86b2e#code
    2. 价格预言机,对FTS价格获取专门处理:https://bscscan.com/address/0x00fcf33bfa9e3ff791b2b819ab2446861a318285#code
    3. 可修改FTS价格:https://bscscan.com/address/0xc11b687cd6061a6516e23769e4657b6efa25d78e#code
  2. 攻击交易:https://bscscan.com/tx/0x13d19809b19ac512da6d110764caee75e2157ea62cb70937c8d9471afcb061bf

黑客攻击的成本

这是一起针对借贷协议的攻击,没有用到闪电贷,攻击成本主要体现在让恶意提案通过的投票成本,约为11个ETH,但最终获利1000多个ETH,可以说相对获利可忽略不计。

预防措施

在DAO中,治理代币分配的市场机制无法区分想要为项目做出宝贵贡献的用户和高度重视破坏或以其他方式控制项目的攻击者,这两个群体都是愿意高价格购买大量的治理代币。

这种不可区分性问题意味着去中心化治理不是免费的。相反,协议设计者面临着在公开去中心化治理和保护他们的系统免受试图利用治理机制的攻击者之间的根本权衡。越多的社区成员可以自由地获得治理权和影响协议,攻击者就越容易使用相同的机制进行恶意更改。

评估攻击的公式:

攻击所得利益=攻击将会得到的价值-获得投票权的成本-执行攻击的成本

以下做法来进行预防:

  • 降低攻击将会得到的价值

    • 项目越大越成功,它的价值越高,越容易成为黑客的攻击目标。为了在不破坏自身项目情况下,降低攻击的价值,相关设计人员可以限制提案治理范围来限制攻击的价值,比如限制提案中的更改协议参数的权限。
  • 增加获得投票权的成本

    • 一个项目还可以采取措施,使其更难获得攻击所需的投票权。代币的流动性越强,就越容易获得投票权——所以几乎自相矛盾的是,项目可能希望为了保护治理而减少流动性。人们可以尝试直接降低代币的短期可交易性,但这在技术上可能是不可行的。

      为了间接减少流动性,项目可以提供激励措施,使个人代币持有者不太愿意出售。这可以通过激励质押或赋予代币超越纯粹治理的独立价值来实现。代币持有者获得的价值越多,他们与项目的成功就越一致。

      独立代币的好处可能包括参加面对面的活动或社交体验。至关重要的是,像这样的好处对与项目保持一致的个人来说是高价值的,但对攻击者来说毫无用处。提供这些好处会提高攻击者在获取代币时面临的有效价格:由于独立的好处,当前持有者将不太愿意出售,这应该会提高市场价格;然而,虽然攻击者必须支付更高的价格,但独立功能的存在并没有提高攻击者获取token的价值。

  • 增加执行攻击的成本

    • 引入摩擦,使攻击者即使在获得代币后也更难行使投票权。例如,设计师可能需要某种用户身份验证才能参与投票,例如 KYC(了解您的客户)检查或信誉评分阈值。人们甚至可以首先限制未经身份验证的参与者获取投票代币的能力,可能需要一些现有的验证者来证明新政党的合法性。

另外的一些措施

  • 将投票和执行分离
    • 保证投票和执行不在同一个区块时间,即不能在同一笔交易内同时完成投票和执行,这样也可以避免闪电贷带来的风险。
  • 增加权限
    • 禁止合约投票,只能够通过EOA账户来投票,这样就可以规避闪电贷带来的影响。
  • 关注提案
    • 项目方以及社区成员应高度关注所有提案,对于有风险的提案, 应及时做出反应以及通知,尽可能的杜绝恶意提案的执行。
  • 合约审计
    • 在项目上线运行前,可以进行多次全面的合约审计,尽可能的保证合约的安全性。通付盾链上安全团队(SharkTeam)是领先的区块链安全服务团队,精通区块链和智能合约底层原理,为开发者提供合约审计和应急响应服务,合约审计包含近200项审计内容,覆盖高级语言层、虚拟机层、区块链层和业务逻辑层,全面保障智能合约安全。
  • 防止垃圾邮件提案
    • 当代币价格低且任何人都能负担得起提出提案所需的代币数量时,请确保将提交提案所需的存款金额增加到一个重要值,以防止垃圾邮件提案。

总结

Prev
2023-06-23 20:22:31 # 00.security
Next