在过去的一周里,陆续发生了几起安全事件,包括PolyNetwork和DaoMaker等造成大额资金损失的安全事件。虽然后续损失资金大部分或者全部被追回,但仍然给DeFi的安全敲响了警钟。
PolyNetwork:6亿美金
DaoMaker:700万美金
Maze:500万美金
PunkProtocol:800多万美金
在本文中,我们主要从安全研究的视角来分析一下PolyNetwork攻击事件,包括如何对安全事件进行分析和复盘以及如何能将整个生态的安全性做的更好。
0x1PolyNetwork安全事件
事件发生在2021年8月10日傍晚,网上一些渠道传出PolyNetwork被攻击的消息,但是对于攻击的手段是什么,项目方的漏洞成因并没有准确的消息。对安全研究团队来说,第一时间需要能搞清楚问题的根本原因所在。在明白问题所在之后,才能对事情的性质做基本判断:是代码漏洞所致、还是人为因素造成、亦或者是虚假消息。
0x1.1确定攻击交易
BlockSec团队首先从以太坊的攻击交易入手,这源于我们已经有一个比较好的交易trace分析系统(https://tx.blocksecteam.com),能用可视化的方式将函数调用过程恢复。
报告:全球超过30%的主要交易所没有计划提供加密货币交易服务:金色财经报道,一个行业组织周二表示,受监管的金融交易所正在讨论如何利用人们对加密货币的兴趣,但其最新调查的三分之一受访者表示,他们没有计划提供该资产类别。总部位于伦敦的世界交易所联合会(WFE)的一份报告称,各交易所表示,他们担心缺乏统一的监管标准、市场波动以及与加密资产相关的潜在网络安全风险。
在回应WFE调查的29家交易所中,有12家提供加密货币相关产品或服务,而17家则不提供。该组织表示,在目前没有加密货币相关产品的公司中,只有7家计划在未来推出这些产品,而10家则没有。WFE调查的交易所中,约有 38% 已经建立或计划建立工作组,专注于加密相关资产或服务。
WFE表示,超过四分之一的受访者表示,他们预计加密资产将在不久的将来成为主流。WFE的成员包括美国纳斯达克(NDAQ.O)、德国德意志交易所(DB1Gn.DE)和瑞士 SIX Group。[2023/9/5 13:18:45]
因此,我们首先在分析系统中重放了以太坊上的一笔攻击交易,交易hash值是:0xd8c1f7424593ddba11a0e072b61082bf3d931583cb75f7843fc2a8685d20033a。
动态 | 经济学家Paul Krugman称其没有区块链钱包:纽约时报(New York Times)经济学家兼专栏作家Paul Krugman在收到一封电子邮件,说他的“区块链钱包”收到了一笔付款,他对此公开表示困惑。Krugman表示:“我没有区块链钱包。这有可能是欺诈。”[2019/12/7]
函数调用非常清晰和简单,这和之前利用价格操纵来进行攻击的情况有非常显著的区别。在价格操纵中,攻击的trace往往非常复杂,攻击者需要经过多次的trade才能完成攻击。而在本次攻击中,攻击者只进行了有限的操作,最后就完成了资金转账。
0x1.2分析合约代码
在捋清楚调用序列后,我们需要研究攻击合约和被攻击合约的源代码。有意思的是,被攻击合约在etherscan上是没有提交源代码验证的。也就是说,这样一个高TVL的项目方的合约居然未发布验证的源代码!
虽然etherscan上并没有源代码,但是我们通过项目方的github一些线索和函数签名,找到了可能的源代码。因此接下来的事情就是分析源代码了。
在分析源代码的过程中,我们仔细比对了代码逻辑,并没有发现明显的逻辑漏洞。我们将该攻击交易和其他正常交易的trace进行了比较,攻击的整个调用trace和一条正常合法的交易并没有本质区别。?
声音 | 央行数字货币研究所蒋国庆:法定数字货币与区块链没有直接关系:6月30日,由南方财经全媒体集团指导、《21世纪经济报道》主办的2018中国金融科技发展论坛在上海举行,央行数字货币研究所研发部负责人蒋国庆表示,“法定数字货币和区块链其实并没有直接关系,甚至并没有技术上的必然联系。区块链只是法定数字货币将来流通的一个可选手段。”[2018/7/1]
0x1.3恢复关键状态
自此,分析进入了死胡同,而时间也到了深夜。在从外围没办法打开局面的情况下,我们只能去对执行过程中的关键变量进行恢复。整个的攻击过程是从函数VerifyHeaderAndExecuteTxEvent开始,我们恢复出来了函数的调用参数和函数执行过程中关键变量的值。这就有了我们当时在blog?中所提到的关键参数的值。
通过这个过程,我们发现验证的keeper只有一个(如上图)。由于这个值是从真实的攻击交易中恢复出来的,因此是准确的。并且我们发现攻击者的交易确实在整个过程中都通过了签名校验。结合只有一个keeper的发现,当时我们的判断是唯一的keeper私钥泄露了或者服务端签名程序有bug。
社科院专家:十年来区块链技术没有大差异:日前,中国社科院金融研究所支付清算研究中心特约研究员赵鹞受访时指出,不管是纵向上来看,从十年前区块链技术出现到今天,还是横向上来看,目前市场上相关企业掌握的区块链技术,都没有太大的变化和差异,区块链应用需要解决的是基础理论上的问题,这是政府部门、科研机构牵头承担的任务。[2018/3/14]
这里我们犯了一个错误,做攻击分析,要像剥洋葱一样一层一层深入进行,只有找到真正的“rootrootrootcause”才能结束。因此,虽然我们从当时的表象“一个keeper,签名校验也是通过的”得出了两个可能“私钥泄露或者服务端签名有bug”,但是没有并没有进一步去研究keeper是否被人修改过,而这正是整个攻击比较关键的一步。写完初步分析文章已经是凌晨3点,于是就各自回家休息。
0x1.4?新的线索
在早上醒来后,发现twitter上Kelvin和慢雾都分别给出了新的线索。新的线索表明,keeper曾经被修改过,并且修改keeper是通过hash碰撞来完成的。
这个时候,我们意识到第一次的分析还不完整。
因此,根据新的线索,我们很快也确认了修改keeper的交易是
0xb1f70464bd95b774c6ce60fc706eb5f9e35cb5f06e6cfe7c17dcda46ffd59581。修改keeper的交易并没有复杂之处。
韩国总理:没有国民议会的批准 关闭加密货币交易是不可能的:据韩联社消息,韩国总理李洛渊今日表示,未经国会批准,关闭加密货币交换是不可能的,因为需要新的立法。[2018/1/16]
但是请注意,在这一次修改keeper的交易中,keeper还没有被修改,是4个keeper,而且这4个keeper和合法交易一样--说明key是官方的。这一笔恶意交易也完整地通过了签名校验。那么攻击者是如何能让这一笔攻击交易上链并且能得到执行呢?也就是说,这个时候,最根本的原因还没有找到。
0x1.4寻找源头交易
由于有了第一次的教训,我们并没有到此就结束分析,而是继续挖掘下去,并且在twitter上和社区交流。
既然从以太坊来看这是一条合法的交易,那么这个交易是怎么最初到以太坊上的呢?我们沿着这个思路,仔细研究了项目的白皮书和源代码。Poly是一个跨链的平台,用来在不同的链之间进行资产转移。因此在以太坊上的调用是目标链,那么必然存在一条源头链,用来发起交易。
我们通过以太坊上的交易进而找到了polychain上的交易。根据polychain上的中间交易,进而找到了源头的Ontology链。
这里有一个非常隐蔽的点,曾经困扰了我们很久。因为有了修改keeper的以太坊交易trace,我们已经能恢复出来关键的交易hash。比如下图中的txHash。从ChainID,我们很容易知道Polychain和Ontology链上的交易hash,但是我们使用这个hash并没有在这两个链上找到完整的交易,难道是恢复出来的数据不对?
经过一番的努力,我们终于发现,是因为参数中的hash和在链上的交易hash数据表达方式不同。比如图中的polychain的txHash是0x80cc978479eb082e1e656993c63dee7a5d08a00dc2b2aab88bc0e465cfa0721a。
但是在polychain浏览器中,hash是1a72a0cf65e4c08bb8aab2c20da0085d7aee3dc69369651e2e08eb798497cc80。发现这个关键的点之后,我们找到了polychain上的交易以及源头本体链上的交易,于是在11号下午16:55我们在tg上向社区分享了我们的发现。
0x1.5寻找根本原因
但是这个时候,仍然不能回答”为什么这个交易会被上链“?如果不能回答这个问题,对于漏洞仍然没有找到根本原因。因此我们继续从Ontology链入手,追踪整个交易流向。我们发现整个交易的流向如下:
Ontologytransaction->Ontologyrelayer->Polychain->Ethereumrelayer->Ethereum
因此想要弄清楚问题的本质,还需要对Ontology和relayer进行研究。我们通读了Ontology和relayer的代码,发现原因是Ontology的relayer对交易缺乏验证。在团队成员反复讨论和互相challenge之后,我们认为这个发现是接近事实真相的。因此在12号凌晨2点41Twitter上公布我们的发现,并且在medium上公开我们的分析全文。
自此我们的分析结束,其他安全厂商也陆续发布独立的分析报告,比如派盾在12号早上也公布了是由Ontology链发起了攻击交易。
0x2经验和教训
本次事件对于整个DeFi社区是非常重要的一起安全事件,虽然攻击者最终返还了被攻击的数字货币,但就像余弦所说”这种能力太过消耗,成本也非常高,也有运气成分”。我们不能期待每一次的攻击事件都会有好的结局。因此,社区如何做才能让整个生态的安全变得更好?
要让安全渗透到项目方的血液当中,包括安全的意识、设计、编码、管理、运营、监控、事件处理等每一个方面。一个好的DeFi项目必须首先要是一个安全优先的项目,否则用户将资产投入到项目里面,他们的资产安全由谁来守护?很遗憾的是,从这个事件来看,项目方的安全设计意识是不足的。作者本人在讲授本科生的软件安全课程,我们在软件安全第一堂课就会讲威胁模型和攻击面。很显然,这一次的跨链设计并没有对攻击面做一个梳理,没有在预防可能的攻击面上有过深入思考。或者有过深入的分析,但是最后的实现并没有完全能遵循设计。
项目方的上线合约代码没有经过验证,虽然项目方在github开源了一些代码,但是其在链上并没有上传经过验证的代码。去中心的基础是信任,信任的基础是透明。而这样一个没有验证源代码的黑盒项目居然有那么大的锁仓量,说明社区在繁荣的同时,用户也缺乏必要的安全意识。如何在用户安全意识上破局,需要新的解决方案。
团队与投资人 1、xxnetwork的创始人&CEO是著名密码学家、加密货币之父、网络安全先驱:DavidChaum,他同时也是密码朋克的发起人,全球第一个加密货币eCash创始人.
截至8月8日,今年全球已有30笔区块链项目融资规模过亿美元。2021年以来,NFT行业取得了前所未有的发展,NFT成为继DeFi之后第二个「明星赛道」,受到资本方青睐.
DeFi数据 1.DeFi总市值:1010.2亿美元 市值前十币种排名数据来源DeFiboxDeFi总市值数据来源:Coingecko2.过去24小时去中心化交易所的交易量:46.
在瞬息万变的加密世界,想要寻求相对稳定的收入简直有点天方夜谭。非要找一个就应该是质押。但以太坊2,0需要32个以太坊才能成为验证者,那么没有32个以太坊的普通人,又应该如何进行质押呢?本文介绍了.
DeFi已经成了业内最热议的话题之一,每月都有数十个新的DeFi项目启动。DeFi应用使得创建能够自动执行的金融合约成为可能。总的来说,这些合约有利于促进密码学资产的发行、借贷、交易和管理.
以太坊基金会今日发布了以太坊目前资助支持的团队名单,其中关于layer2扩容项里有重点提到了zkopru,这是一个综合技术解决方案.