查看原文
其他

【复盘】TibetSwap V1 的漏洞

河马/HemaDAO HemaDAO 2023-11-16

TibetSwap V1 的漏洞分析报告

作者:Yakuhito     2023年5月1日

4 月 26 日,我们确认了 TibetSwap v1 谜题(puzzle)中的一个严重错误。不久之后发布了一条要求用户撤销流动性的推文,并且没有证据表明该漏洞被利用来窃取任何资金。本文将报告有关发生的情况、漏洞(bug)和我们下一步规划的更多详细信息。

发生了什么

13 点 57 分,fizpawiz 在 Keybase 上给我发了一条消息,详细说明了代码中可能存在的错误。不到 10 分钟后,我看到了这条消息,然后回到我的宿舍进行调查。在接下来的一个小时里,我确认了这个错误,选择了最好的行动方案(通知撤回+将包含代码的存储库设为私有),并与 jde5011 取得联系以寻求建议。

到 15:17,我们讨论了策略并设计了一条合适的推文。该通知于15:18发布。在 Chia 社区的共同努力下,消息迅速传播开来,一个小时内就撤回了 50% 的流动性。我密切监控提款,审查错误并帮助遇到问题的人。 发布通知后两小时,2/3 的流动性被撤回。 发布通知 24 小时后,协议中只剩下不到 1% 的资产。

漏洞是什么

该错误存在于单例对(pair singleton)和流动性 TAIL 之间的通信机制中。简而言之,两者通过每次铸币或销毁操作的两个公告进行交流。单例根据所需的操作(“铸造”或“销毁”)、CAT 的硬币 ID 以及被销毁或铸造的代币数量创建公告。然后TAIL 根据正在执行的操作创建一个公告——“铸币”或“销毁”。

虽然这种机制类似于 p2_singleton 使用的机制并且最初看起来很安全,但 fizpawiz 指出了一个严重的缺陷,所有公告中均未包含该单例的硬币 ID。因此,攻击者可以通过将单例对的两个版本“锁定”到同一 CAT 来两次消耗流动性。

解决方法很简单:在公告中包含硬币对 id(pair coin id),从而通过确保他们为每次花费(spend)生成和消费不同的公告来防止两个单例锁定到同一个 CAT。然而,TibetSwap 被设计成不可变的并且没有管理密钥,这意味着即使是最小的代码更改也需要重新部署。

继续前行

安全是 TibetSwap 的重中之重。虽然错误现在已修复,但我们认为最好的行动方案是至少返回测试网两周。

根据社区的建议,我们还启动了漏洞赏金计划!TibetSwap 的启动钱包 - (xch1yej80zwys9m2kkpch0ywltflxtdyprm2qfd0adwm8ur6qhhnex3qj0sknl)TibetSwap.xch - 将用于保存为支出预留的资金。该钱包已经包含 NameDAO 慷慨捐赠的 200 个 NAME 代币和我贡献的 10 个 XCH。社区可以为错误赏金捐赠更多资金——如果你发送了一些东西,请联系我,这样我就可以适当地感谢你!

最后,这是一个更加透明的机会。虽然我们的代码仍然是开源的,但我们认识到开始探索它可能仍然具有挑战性。考虑到这一点,我为我在伦敦 XCH 的演讲制作了一个后续视频,在那里我讨论了 TibetSwap 的整体设计。可以在项目主存储库的新 SECURITY.md (链接:https://github.com/Yakuhito/tibet/blob/master/SECURITY.md)文件中找到幻灯片、视频和更多资源。

致谢

首先,请花几秒钟时间对这条推文做出反应。fizpawiz 和 jde5011 都应该得到比他们得到的更多的荣誉,其他社区成员也是如此,他们出于善意为 TibetSwap V1 的发展做出了贡献,不期望任何回报。这些人都是英雄!

最后,我想通过感谢 Chia 社区来结束这篇文章。上周很疯狂。TibetSwap 上线两天就受到了热烈的欢迎,表现超出了我的预期。通知下发后,Chia社区对此表示理解。我真的很幸运能成为这样一个美妙社区的一员——谢谢!

现在请原谅,但我必须给我的宠物牦牛读这篇文章,以确保一切都很好

直到下一次,破解世界。

yakuhito,结束。

发表于 2023 年 5 月 1 日

   

V2 将在测试网上至少运行两周——您可以通过以下链接访问它:


https://v2-testnet10.tibetswap.io




我很高兴地宣布,我将加入 @PWA_Labs 的伟大团队,就从……今天开始!@MorganWBender & co 与@Storedotapp 一起做了很棒的产品 ,我真的很高兴能为一个未来而努力,在这个未来,Apple 和 Google 不会规定你可以在手机上安装什么。

Yaku同时宣布,加盟了PWA Labs团队,并将继续运营TibetSwap。

https://pwalabs.com/

继续滑动看下一个

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

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