查看原文
其他

【更新】HashgreenSwap V3.1事后分析

河马/HemaDAO HemaDAO 2023-11-16

为了确保剩余资金的安全,我们使用相同的漏洞将剩余资产暂时转移到 Hashgreen 托管地址。我们正在积极制定一项计划来补偿受此漏洞影响的用户。

【托管地址Spacescan查阅】:https://www.spacescan.io/address/xch1u4nx3dj0ycqh652ats8yrkmqnz43krdv4fmz4cmxtjnnyf3drvyqe3avxe

Harry在Chia官方Discord公告:

大家好,对于我们在社区中造成的所有干扰,我们深表歉意。我很高兴看到来自开发方和用户方的大量支持,我们一定会吸取教训并变得坚强。不幸的是,黑帽黑客在利用漏洞之前没有给我们留下缓解漏洞的机会,并决定危害生态系统。如果我们能够将用户迁移到 CAT1 标准和TibetSwap v1 等更新版本,那就太好了。攻击者确实具有快速部署此攻击的强大洞察力。我们正在采取后续行动,例如修复合同,并弄清楚如何补偿原始资产持有者。请参照我们的最新分析报告。

HashgreenSwap 合约V3.1事后分析

概述
世界标准时间 2023年11月10日上午06:54:12,Chia 区块链上的区块 4498086,[HashgreenSwap](https://swap.hash.green) 被人利用,有 270 多个XCH(Chia 币)和9个其他 CAT(Chia 资产代币)被发送到销毁地址 `[xch1gfpyysjzgfpyysjzgfpyysjzgfpyysjzgfpyysjzgfpqcjkap4](https://www.spacescan.io/address/xch1gfpyysjzgfpyysjzgfpyysjzgfpyysjzgfpyysj zgfpyysjzgfpqcjkap4?tab=Tokens)`,导致平台用户无法取回其在协议中质押的资产 。
本文是 HashgreenSwap 编写的一份文件,旨在全面披露已经发生的事情,以及将发生在 HashgreenSwap 社区以及更广泛的 Chia 社区的事情。
时间线
1. 2023年11月10日 06:54 UTC (区块 4498086)

攻击者针对以下池发起了一系列攻击,攻击跨越区块44980864498090,影响了270.540个XCH及其附带代币。

- XCH/PEPE

- XCH/SDT

- XCH/42

- XCH/LKY8

- XCH/CC

- XCH/TICA

- XCH/DBX

- XCH/MZ

- XCH/CH21

2. 2023年11月10日 08:57 世界标准时间,Hashgreen 注意到该应用程序的 TVL 显著下降,即已开始调查。
3. 2023年11月10日 09:42 世界标准时间,MintGarden 的 Acevail 已公开发布有关该事件的信息。
链接:https://twitter.com/acevail_/status/1722912491271852252?s=20
4. 2023年11月10日10:31(世界标准时间),Hashgreen 已将该问题确定为某个合约漏洞,并立即采取措施:
- 暂时禁用HashgreenSwap的交易引擎,以防止用户进一步添加流动性。
- 将开源合约的可见性改为私有,以降低漏洞暴露。
链接:https://github.com/hashgreen/hashgreenswap-contract
- 将 Cypher 库的可见性更改为私有,以降低漏洞暴露。
https://github.com/hashgreen/cypher-chialisp
5. 2023年11月10日 10:39 世界标准时间
来自TibetSwapYakuhito已与我们就该漏洞的技术问题发起了一次会议。通过与 Acevail 以及其他对 Chia 有深入了解的专家长达一小时的通话,我们能够得出有关此漏洞的调查结果(如果您当时在会议中,请告诉我是否应该添加您)。(https://discord.com/channels/920892922969354311/1172485392734359553/1172485394605023263)
6. 2023年11月10日10:53(世界标准时间),Hashgreen 已公开发布有关该漏洞的信息:

链接:https://twitter.com/HashgreenLabs/status/1722930543485210771

7. 2023年11月10日下午(世界标准时间),Hashgreen团队已经整理了一系列行动方案来解决这一问题。
行动方案
- [x] 耗尽池中的剩余资金以保护和保管仍在协议中的任何资金。(截至 2023 年 11 月 13 日完成)
- [ ] 盘点受影响的资产
- [x] 转移资产去向清单(截至2023年11月13日完成)
- [ ] 资产持有人及其有权资产的列表
- [ ] 将此文档发布到社区
- [x] 起草这份事后分析文件(截至 2023 年 11 月 13 日完成)
- [ ] 在 Twitter 上发布
- [ ] 在 Discord 上发帖
- [ ] 找出补偿用户质押资产的途径
- [ ] 重新启动HashgreenSwap协议
- [ ]社区开发者之间更大规模的合同审查
- [ ] 招募更多社区开发者重建协议
受影响的资产
资产持有者(待添加)
我们正在该漏洞影响协议之前编制一份资产持有者及其资产的列表。根据资产清偿的情况,我们会将资产返还给相应的持有人。
当前资产位置
下面是利用该漏洞从协议中转出的资产列表。
类型
  • “已烧毁Burned” 是指利用者将资产转移到烧毁地址“xch1gfpyysjzgfpyysjzgfpyysjzgfpyysjzgfpyysjzgfpyysjzgfpqcjkap4”(谜题哈希“0x42424242424242424242424242424242424242” 42424242424242424242424242`),并且无法检索。
  • “托管Custody” 意味着该资产现在位于 HashgreenSwap 的托管钱包中,地址为“xch1u4nx3dj0ycqh652ats8yrkmqnz43krdv4fmz4cmxtjnnyf3drvyqe3avxe”(拼图哈希“e56668b64f26017d515d5c0e41db6098ab1b0dacaa” 762ae3665ca732262d1b08`),并被暂时锁定,以防止被利用者进一步榨干。


当前位置资产清单:
(链接:https://www.notion.so/73d20813b7734d8183b60a6a5c4d5643?pvs=21)

END



社区讨论汇总

【编者按:关于此次攻击HashgreenSwap的漏洞及其原因分析,引发了社区争论,即部分社区成员认为这次攻击的漏洞,与TibetSwap上线后遭遇的攻击有类似之处,但HashgreenSwap的创始人Harry博士认为,两次攻击有很大不同。HemaDAO摘抄了双方部分观点,供愿意进行技术探讨和学习的小伙伴深入了解,并防止未来出现同类问题。

Hashgreen在发现遭遇攻击后,及时止损,立即行动,并广泛与社区技术专家沟通,分析并找到漏洞,同时发布了后续拯救措施。我们相信Hashgreen能妥善处理好这次危机,在未来的发展中,稳步前进。HemaDAO社区也将继续支持包括Hashgreen在内的所有Chia生态开发者。】

Acevail(Mintgarden创始人)
好吧,现在 HashGreen 的Swap池已经被掏空了,让我们看看上周五发生了什么,当时攻击者耗尽了区块 4498086 中的大部分流动性,使其成为第一个 Chia 智能币黑客攻击:
【编者注:xch.even是一个实时记录和跟踪Chia区块链上活动的网站,并可以通过图形可视化,让区块和硬币之间的逻辑关系一目了然,开发者Acevail】
https://xch.events/blocks/4dfd3a44f16ff4d2ad2fc76e0daaf9338955c4d11d098b085a0e2d48a929f063
这次攻击看起来像这样:
首先,攻击者为自己获得了一笔 $XCH 闪贷。(请记住,您可以凭空打印任意数量的 XCH,只要您在第一个块中再次销毁它即可。)
通过闪电贷,他们使用了 HashGreen Swap 的(通常很棒且用户友好的)Zap 功能,通过仅提供 XCH 来增加代币对的流动性。对于每个受到攻击的货币对,他们通过这种方式将流动性增加了一倍,并收到了相应数量的流动性代币。
现在,他们烧毁了流动性代币,消除了一半的流动性。这次,金额分为一半为 XCH,一半为 CAT 代币。到这里为止,一切都按预期进行。现在,攻击发生了。
由于该 Chialisp 代码存在漏洞,燃烧流动性代币时创建的公告可能会被使用两次!这基本上是重放攻击。因此,攻击者可以撤回另一半货币对流动性,清空整个资金池。
最后,耗尽的 XCH 的一部分用于偿还闪贷。其余的已发送至4242424242424242424242424242424242424242424242424242424242424242,有效燃烧。
这次攻击经过精心设计,可以在一个区块内完成。一个输入的 XCH 代币首先被分成 5 个,然后用于为每对获取适量的闪电贷。
如果您想查看完整的图表,可以在上面链接中找到。
如果整个攻击听起来有点熟悉,某个 Yak 的某个博客也对此进行了描述:
参见HemaDAO文章:【复盘】TibetSwap V1 的漏洞
Ykuhito(TibetSwap创始人)
我认为每种语言都有其不同类别的漏洞——有些很容易发现,有些则几乎不可能发现。以太坊带来了可重入性和(很长一段时间)整数溢出,但我们仍在弄清楚 Chialisp 带来了什么。不管语言多么好,人们仍然会犯错误。但重要的是发现它们并对最常见的进行分类,以便更容易避免/发现它们。而且,像所有其他语言一样,我们在每一份报告/事后分析中都这样做。
不幸的是,HashgreenSwap 被导致  TibetSwap v1 召回的同一种漏洞利用攻击了。当时进行的救援交易也是“公开的”(即链上交易)——尽管它涉及不同的 AMM 并使用了略有不同的方法,但可以说这次攻击的记录相当广泛。
我很高兴看到 HashgreenLabs 到目前为止处理得很好。我犯了同样的错误 - 并且多次错过,直到 @fizpawiz 指出它。话虽这么说,我认为从过去的错误/漏洞中吸取教训很重要。
Harry(HashgreenSwap创始人)
如果说 @HashgreenLabs 上的漏洞与 @TibetSwap V1 相同,就相当于说“这些合约的 chialisp 代码中都存在漏洞”。从技术观点看,他们截然不同。
Yakuhito:
好吧,让我们解决这个问题。我在下面链接了 V1 和 V2 流动性 TAIL 之间的差异。使用公告将 CAT 链接到配对单例的方式是否有任何显着差异?
据我所知,唯一的一个是你使用的是 delta (等于正值或负值硬币数量来指示它是薄荷还是燃烧),而 V1 使用关键字来完成相同的工作(“烧毁(burn)”/ “铸造(mint)”)。
链接:https://github.com/Yakuhito/tibet/commit/b96b05425c2ce34efbb399da22c85f772af4d47e
Harry:
我确实想将讨论从“噢,开发人员正在犯同样的错误”的背景中转移出来,因为如果你深入研究,CAT v1 也受到伪造公告的能力的影响,只是表现形式与 AMM 合约不同。这里没有误解的信息。
如果您足够了解 CAT v1 的 chialisp,那么您就知道我的答案是对的。声称所有漏洞都是相同的会造成 Chia 不安全的错误观点,Chia基础技术是好的。
Yakuhito:
CAT v1 漏洞的发生是因为未检查硬币谱系证明属性的长度,并且 sha256 只是连接其参数,这意味着您可以“切碎”拼图哈希以增加感知数量(因为 coin_id = sha256(parent_id + puzzle_hash + amount ))。这也有很好的记录,这也是我们现在通过calculate_coin_id(检查长度)计算硬币ID或手动执行检查的原因。我绝不会仅仅因为它与公告相关而将其标记为“相同”(尽管我认为 CAT v1 与公告无关,而是与不正确的代币 ID 计算相关)。我之所以这样称呼它,是因为它发生的机制与 tibet v1 中的机制相同,并且是由相同的错误引起的(使用单例拼图而不是硬币 id,这允许发生“重放”)。相同的攻击类别,相同的地点。
对于关注此讨论的人:我不是一个优秀的作家,但您可以在此处找到有关 CAT v1 漏洞的更多信息:
参见HemaDAO文章【观点】Chia报告CAT1代码漏洞。你都需要知道些什么?
Gena Hoffman(Chia 首席执行官)

Chialisp 的一个关键特征并不是不会出现问题,而是它们很容易完全修复。

正如我今天早些时候所说,Chialisp 与其他智能合约环境之间的主要区别之一是这些问题的修复非常简单并且持久。然而,发现“容易犯的错误”是一个自然沉淀的过程,我们将努力编写简洁的文档来说明需要注意的陷阱。在其他环境中,存在一类令人痛苦的漏洞,除了“仔细审核并祈祷”之外,没有直接的解决方案。


立冬


继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存