原文标题:《DAOrayaki|从100个攻击事件分析加密攻击类型、工具、防范方法和未来预测》
撰文:KofiKufuor
编译:DAOctor
加密安全启示录
黑客今年从加密应用程序中窃取了超过2B美元。DAOrayaki去中心化编辑委员会撰写此文时,又发生两起黑客攻击事件:Rabbywallet、Solana生态去中心化金融平台Mango。随着加密生态系统的发展并吸引更多的恶意行为者,问题只会变得更糟。有些事情必须改变。是时候退后一步,反思过去的错误,并改变我们在这个行业中处理安全性的方式。
在这篇文章中,我们将:
提出一个对加密货币黑客进行分类的框架
概述迄今为止最有利可图的黑客所使用的方法
回顾目前用于防止黑客的工具的优势和劣势
讨论加密货币安全的未来
1、加密货币黑客攻击分类框架
加密应用生态系统由可互操作的协议组成,由智能合约提供支持,依赖于主链和互联网的底层基础设施。
由于堆栈的每一层都有其独特的漏洞。我们可以根据被利用的堆栈层和使用的方法对加密黑客进行分类。
基础设施
对基础设施层的攻击利用了支持加密应用程序的底层系统的弱点:它依赖于达成共识的区块链、用于前端的互联网服务以及用于私钥管理的工具。
智能合约语言
这一层的黑客利用了Solidity等智能合约语言的弱点。智能合约语言中存在众所周知的漏洞,例如可重入性和错误的委托调用实现的危险,可以通过遵循最佳实践来缓解这些漏洞。
DYDX基金会发布Epoch 4回顾,dYdX第二层协议总交易量超过610亿美元:12月28日消息,DYDX基金会发布Epoch 4回顾,dYdX第二层协议总交易量超过610亿美元,平均每日交易量升至22亿美元,期末未平仓合约小幅降至10亿美元,TVL增至9.43亿美元。[2021/12/28 8:09:55]
有趣的事实:用于执行6000万美元TheDAO黑客攻击的漏洞实际上是由LeastAuthority在对以太坊的安全审计中发现的。有趣的是,如果在发布前已经修复,事情会有多不同。
协议逻辑
此类攻击利用单个应用程序的业务逻辑中的错误。如果黑客发现错误,可以使用它来触发应用程序开发人员无意的行为。
例如,如果一个新的去中心化交易所在确定用户从exchange中获得多少的数学方程式中存在错误,则可以利用该错误从exchange中获得比本应可能的更多的钱。
协议逻辑级攻击还可以利用现有的治理系统来控制应用程序的参数。
生态系统
许多最具影响力的加密黑客利用了多个应用程序之间的交互。最常见的变体是黑客利用从另一个协议借来的资金利用一种协议中的逻辑错误来扩大攻击规模。
通常,用于生态系统攻击的资金是通过快速贷款借入的。在执行闪电贷款时,只要资金在同一笔交易中归还,您就可以从Aave和dYdX等协议的流动资金池中借入尽可能多的资金,而无需提供抵押品。
2、数据分析
从2020年起,我们采集了100个最大的加密黑客数据集,被盗资金总计5B美元。
生态系统攻击最常发生。占样本组的41%。协议逻辑漏洞导致的损失最大。
路透社发文回顾比特币被主流采用历程:近日,路透社发文《比特币走向主流的旅程》称,比特币是世界上第一个也是最著名的加密货币,由于获得了资产的合法性而创下了新高。美国大型机构对其的兴趣大大推动了比特币价格上涨。文章回顾了2020年以来比特币被一些主流机构采用的历程。例如:1.基金经理Paul Tudor Jones认为比特币是价值储存。2.MicroStrategy首次宣布以2.5亿美元的价格购买21,454枚比特币。3.特斯拉对BTC投资15亿美元并预计在不久的将来开始接受比特币支付等内容。[2021/2/15 19:49:13]
数据集中最大的三次攻击,即Roninbridge攻击、PolyNetwork黑客和Binancebridge黑客,对结果产生了巨大的影响。
如果排除前三种攻击,则基础设施黑客攻击是损失资金影响最大的类别。
3、黑客如何执行
基础设施攻击
在样本组中61%的基础设施漏洞利用中,私钥被未知方式破坏。黑客可能已经通过网络钓鱼电子邮件和虚假招聘广告等社交攻击获得了对这些私钥的访问权限。
智能合约语言攻击
重入攻击是智能合约语言级别上最流行的攻击类型。
Block.one发文回顾近期EOSIO版本更新:Block.one近日发布EOSIO版本最近更新回顾,并表示将在发布最新版本的同时,对早期版本进行各种 Bug修复和稳定性更新补丁。
1. EOSIO-explorer v1.2.0:2020年5月5日,发布eosio-explorer v1.2.0,并将其更新为EOSIO v 2.0.5。
2. EOSIO v 2.0.5:2020年4月21日,发布EOSIO v 2.0.5。此版本中的更新包括安全性,稳定性和其他更改。
3. EOSIO-swift v0.4.0:2020年4月14日,发布 eosio-swift v0.4.0。
4. Elemental Battles(元素之战):2020年4月27日,发布Elemental Battles v1.1.12,并将其更新为 EOSIO v 2.0.5。(MEET.ONE)[2020/6/18]
在重入攻击中,易受攻击的智能合约中的函数调用恶意联系人的函数。或者,当易受攻击的合约向恶意合约发送代币时,可以触发恶意合约中的功能。然后,在合约更新其余额之前,该恶意函数会在递归循环中回调易受攻击的函数。
例如,在SirenProtocolhack中,提取抵押代币的功能很容易被重入并被反复调用,直到所有抵押品都被耗尽。
协议逻辑攻击
协议层上的大多数漏洞都是特定应用程序独有的,因为每个应用程序都有独特的逻辑。
访问控制错误是样本组中最常出现的问题。例如,在PolyNetworkhack中,「EthCrossChainManager」合约具有任何人都可以调用以执行跨链交易的功能。
动态 | CoinMarketCap 发布 2019 年度回顾:平台币涨幅跑赢 BTC:加密货币行情网站 CoinMarketCap 发布 2019 年度回顾,在 BTC 对比其他加密资产的价格表现环节,市值前五的平台币( BNB、HT、LEO、FTT、ZB )全年平均涨幅(+98%)超过 BTC(+87%),智能合约平台代币(ETH、EOS、XTZ、TRX、ADA)全年平均涨幅为 34%,隐私代币(XMR、ZEC、KMD、XVG、ZEN)全年平均涨幅为 -15%。从时间线来看,2019 年一二季度,平台币和智能合约代币的表现都要优于 BTC,当市场转为看跌向下时,智能合约代币回撤的幅度让全年表现大打折扣。[2020/1/11]
该合约拥有「EthCrossChainData」合约,因此如果您将「EthCrossChainData」设置为跨链交易的目标,则可以绕过onlyOwner()审查。
剩下要做的就是制作正确的消息来更改哪个公钥被定义为协议的「保管人」,夺取控制权并耗尽资金。普通用户永远无法访问「EthCrossChainData」合约上的功能。
注意:在许多情况下,多个协议使用相同的技术被黑客入侵,因为团队分叉了一个存在漏洞的代码库。
例如,CREAM、HundredFinance和VoltageFinance等许多Compound分叉成为重入攻击的受害者,因为Compound的代码在允许交互之前没有检查交互的效果。这对Compound来说效果很好,因为他们审查了他们支持的每个新代币的漏洞,但分叉团队并没有做这样的努力。
赵长鹏发文回顾币安系统维护事件:赵长鹏发布长文回顾了前两日币安维护过程中的细节:2月8日上午在进行数据库迁移时,由于硬件故障导致数据被破坏,而在重新同步时面对了巨大的数据量导致同步变慢;团队连续工作34个小时;官网同时受到严重的DDoS攻击。此前币安从2月8日8时许开始维护,直至2月9日18时才重新开放交易。[2018/2/11]
生态系统攻击
98%的生态系统攻击都使用了闪电贷。
Flashloan攻击通常遵循以下公式:使用贷款进行大规模掉期,从而推高AMM上的代币价格,而AMM将其用作价格馈送。然后,在同一笔交易中,使用膨胀的代币作为抵押,获得远高于其真实价值的贷款。
4、何时执行黑客攻击
数据集不够大,无法从时间分布中得出有意义的趋势。但我们可以看到,不同类型的攻击在不同的时间更频繁地发生。
2021年5月是生态系统攻击的历史新高。2021年7月的协议逻辑攻击最多。2021年12月发生的基础设施攻击最多。很难判断这些集群是否是巧合,或者它们是否是一个成功的成功案例,激励同一演员或其他人专注于特定类别。
智能合约语言级别的漏洞利用是最罕见的。该数据集始于2020年,当时该类别中的大多数漏洞利用已经广为人知,并且很可能很早就被发现。
随着时间的推移,被盗资金的分布有四个主要峰值。2021年8月有一个高峰,这是由PolyNetwork黑客驱动的。2021年12月,由于大量基础设施黑客攻击导致私钥遭到破坏,例如8ightFinance、Ascendex和VulcanForged,又出现了另一次高峰。然后,由于Ronin黑客攻击,我们看到了2022年3月的历史新高。最后的峰值是由BNBbridge被攻击引起的。
5、黑客在哪里执行
根据托管资金被盗的合约或钱包的链来分割数据集。以太坊的黑客数量最多,占样本组的45%。币安智能链以20%位居第二。
造成这种情况的因素有很多:
以太坊和BSC的锁定总价值最高,因此对于这些链上的黑客来说,奖金的规模更大。
大多数加密开发人员都知道Solidity,这是以太坊和BSC上选择的智能合约语言,并且有更复杂的工具支持该语言
以太坊被盗的资金量最大,BSC位居第二。以太坊、BSC和Polygon上的资金被盗的黑客在一次事件中排名第三。这主要是因为PolyNetwork攻击事件。
涉及跨链桥或多链应用的黑客对数据集有巨大影响。尽管只占事件的10%,这些黑客占了25.2亿美元的被盗资金。
6、我们如何防止黑客入侵
对于威胁堆栈的每一层,我们可以使用一些工具来及早识别潜在的攻击向量并防止攻击发生。
基础设施
大多数大型基础设施黑客攻击都涉及黑客获取敏感信息,例如私钥。遵循良好的运营安全(OPSEC)实践并进行经常性威胁建模可降低发生这种情况的可能性。拥有良好OPSEC流程的开发人员团队将:
识别敏感数据
识别可能的威胁
识别现有安全防御中的漏洞和弱点
确定每个漏洞的威胁级别
创建并实施计划以减轻威胁
智能合约语言和协议逻辑
模糊测试
像Echidna这样的模糊测试工具可以测试智能合约如何对大量随机生成的交易做出反应。这是检测特定输入产生意外结果的边缘情况的好方法。
静态分析
静态分析工具,如Slither和Mythril,自动检测智能合约中的漏洞。这些工具对于快速挑出常见的漏洞是很好的,但它们只能抓住一组预定义的问题。如果智能合约有一个不在工具规范中的问题,它将不会被看到。
形式验证
形式验证工具,如Certora,会将智能合约与开发人员编写的规范进行比较。该规范详细说明了代码应该做什么及其所需的属性。例如,开发贷款应用程序的开发人员会指定每笔贷款都必须有足够的抵押品支持。
如果智能合约的任何可能行为不符合规范,正式验证者将识别该违规行为。
形式化验证的弱点是,测试只和规范一样好。如果所提供的规范没有考虑到某些行为,或者过于宽松,那么验证过程将无法捕获所有的错误。
审计和同行评审
在审计或同行评审中,一个受信任的开发者小组将测试和评审项目的代码。审计员会写一份报告,详细说明他们发现的漏洞以及如何修复这些问题的建议。
让第三方专家审查合约是识别原团队所遗漏的漏洞的一个好方法。然而,审计师也是人类动物,不可能发现所有的东西。另外,还必须对此信任,如果审计师发现了问题,他们会告诉你,而不是自己去利用它。
生态系统攻击
令人沮丧的是,尽管生态系统攻击是最常见和最具破坏性的变体,但工具箱中并没有多少工具适合防止这些类型的攻击。
自动化安全工具专注于一次发现一个联系人中的错误。审计通常无法解决如何利用生态系统中多个协议之间的交互。
Forta和TenderlyAlerts等监控工具可以在发生可组合性攻击时发出预警,以便团队采取行动。但在闪电贷攻击期间,资金通常在单笔交易中被盗,因此任何警报都来得太晚,无法防止巨额损失。
威胁检测模型可用于在内存池中查找恶意交易,其中交易位于节点处理之前,但黑客可以通过使用flashbots等服务将交易直接发送给矿工来绕过这些检查。
7、加密安全未来预测
1)我相信最好的团队将从将安全视为基于事件的实践转变为一个持续的实践过程。他们将:
对主代码库的每个添加运行静态分析和模糊测试。
在每次重大升级时运行形式验证。
使用响应操作设置监控和警报系统。
让一些团队成员专门负责制定和维护安全自动化和攻击响应计划。
安全性不是一组要填写和搁置的复选框。安全工作不应在审计后结束。在许多情况下,例如Nomadbridgehack,漏洞利用是基于审计后升级中引入的错误。
2)加密安全社区应对黑客攻击的流程将变得更有条理和精简。每当发生黑客攻击时,贡献者就会涌入渴望提供帮助的加密安全群组聊天,但缺乏组织意味着重要的细节可能会在混乱中丢失。我看到未来其中一些群聊会转变为更结构化的组织:
使用链上监控和社交媒体监控工具快速检测主动攻击。
使用安全信息和事件管理工具来协调工作。
独立的工作流,有不同的渠道来沟通白黑客工作、数据分析、根本原因理论和其他任务。
整理:胡韬,链捕手1、《对话王峰:看好功能性NFT方向,Element与OpenSea的唯一差距是时间》8月中旬,NFT聚合交易平台Element2.0版本正式上线.
1900/1/1 0:00:00作者:MarioGabriele,TheGeneralist创始人?原文标题:《TheWisdomList:SamBankman-Fried》编译:Tia.
1900/1/1 0:00:00撰文:Jessie,?海外独角兽单体区块链需要每个节点执行每笔交易,其本质上是不可扩展的。因此,多链世界不可避免,我们认为模块化区块链可能是通往多链世界的最佳路径.
1900/1/1 0:00:00链捕手消息,Web3安全生态基础设施GoPlusSecurity发布官方推特表示,已全面支持KCC生态上的Token安全检测功能.
1900/1/1 0:00:00采访:flowie,链捕手受访者:ChandlerSong,Ankr创始人没有节点,就没有区块链,节点基础设施的构建对于Web3的发展至关重要.
1900/1/1 0:00:00链捕手消息,据Theblcok报道,NEAR生态EVM扩容网络Aurora向发现关键漏洞的两位黑客支付200万美元赏金.
1900/1/1 0:00:00