区块链浏览器可以逃离DoS的九阴白骨爪吗?

2020-07-29 11:22 栏目:经验之谈 来源:网络整理 查看()

这些浏览器是众所周知的,甚至我叔叔也提到过,它们是互联网的代言人和互联网的入口。

然而,如果有谁与互联网有背靠背的关系,那就是今天正如火如荼的区块链科技。

互联网改变生活,区块链科技改变互联网。那么毫无疑问,作为互联网的入口,浏览器必然离不开区块链技术。区块链浏览器作为一种常见的登陆产品,给区块链用户带来了相当大的便利。

区块链浏览器的安全性是什么

Blockchain浏览器是区块链的搜索引擎,用户可以用这个工具搜索区块链的具体信息。

例如,以太扫描是以太博物馆中的区块链浏览器。通过以太网扫描,用户可以很容易地获得关于以太网中的块、地址、事务和其他活动的信息。换句话说,区块链浏览器更像是一个区块链官方查询网站。

那么,当大多数区块链应用程序面临安全威胁时,区块链浏览器的安全性如何呢?

区块链浏览器可以逃离DoS的九阴白骨爪吗?

Blockchain浏览器应用程序的弱点相对较少。原因如下:

不涉及认证或授权,因此不会泄露任何私人信息;

网络框架(如Vue和Response)的广泛使用降低了XSS(跨站点脚本漏洞)的可能性;

这是否意味着区块链浏览器不会受到攻击?

或者被攻击可以吗?

答案是:不

块链浏览器攻击类型的分类

让我们来看看区块链浏览器可能会受到什么样的攻击。

因为区块链浏览器中的大多数功能都涉及到从后端数据库中搜索数据或者直接从区块链节点中查询数据。谈到搜索查询功能,人们通常会想到两个可能的漏洞:

SQL注入;

拒绝服务攻击;

然而,当检查不同的浏览器时,CertiK技术团队发现只有一个SQL注入,超过50%的区块链浏览器有被DoS攻击的危险。

什么是DoS攻击

举个简单易懂的例子,一个白胡子的爷爷看到小丑叔叔店里的炸鸡卖得越来越好,于是他找了几个混混来做事情。他们站在点餐桌前,照看他,并提出各种问题和要求。店员们被烧死了,点了两个小时的饭菜,但他们不知道歹徒想要什么。饥饿的客人迫不及待,一个接一个地离开了商店。这还不够。如果小丑叔叔店里面的店员脾气不好,一旦被外部矛盾激化,整个武术会直接上演,店内会一片混乱...

区块链浏览器可以逃离DoS的九阴白骨爪吗?

拒绝服务:拒绝服务的缩写,导致拒绝服务的攻击行为称为拒绝服务攻击,通常用于阻止系统向合法用户提供服务。

在服务器中,有一个事实,即客户端可以不费力地发送HTTP请求,但是服务器可能需要消耗大量资源来处理和响应请求。应用层DoS利用这一特性进行攻击。

一般来说,DoS攻击和防御类似于这样一个过程,最终的结果取决于谁拥有更多的资源。但是,如果后端代码实现有缺陷,一个请求就足以使服务器崩溃。

本文将与您分享DoS攻击的一些案例、DoS攻击的影响以及保护应用程序的相关建议。

DoS攻击案例分析

DoS攻击服务器的方式有很多。一般来说,目标会选择:

消耗所有的中央处理器和内存资源;

占用所有网络链接;

以下是一些可能受到DoS攻击的服务器的案例研究,其中一些是由代码实现错误引起的,而另一些是由配置错误引起的:

1.资源访问应用编程接口缺乏数量限制

https://fake.sample.com/api/v1/blocks?极限=10

上述请求以“限制”参数中指示的数量获得块信息。当限制设置为10时,它将返回最后10个块的信息。当数量很小时,请求可以正常工作。

但是,后端可能不会设置“限制”参数的上限。当CertiK技术团队将“限制”参数设置为999999并发送请求时,请求被处理了很长时间,并回复了“504网关超时”错误。当服务器处理上述请求时,其他应用程序接口的响应时间显著增加。

999999也超过了链中的总块数。

假设后端试图获取区块链中每个块的数据。如果攻击者发送大量具有高“限制”参数的请求,服务器将无法响应正常请求,甚至可能直接崩溃。

2.嵌套图形查询

在调查过程中,CertiK技术团队使用GraphQL遇到了一些区块链资源。GraphQL是一种面向应用编程接口的查询语言。与使用多个请求来请求多个资源的典型REST API相比,GraphQL可以通过一个请求获得应用程序所需的所有数据。GraphQL的使用率很高,但是如果在使用过程中没有部署相应的保护措施,可能会存在安全隐患。

在测试区块链浏览器时,CertiK的技术团队发现其中一个浏览器使用了GraphQL接口,并且它定义的两种类型相互包含,这使得用户可以构建一个非常复杂的嵌套查询。

发送这种嵌套查询可能会导致服务器上的CPU使用率显著增加。一般来说,一些这样的请求可以将CPU利用率提高到100%以上,这导致服务器无法响应普通用户的请求。

区块链浏览器可以逃离DoS的九阴白骨爪吗?

下面的“dos_query”显示了一个嵌套的graphql示例:

区块链浏览器可以逃离DoS的九阴白骨爪吗?

这种恶意GraphQL请求对服务器的影响取决于查询的复杂性和服务器的性能。在花费大量时间后,服务器可能会成功响应查询,但也可能会由于高CPU使用率而直接崩溃。如果您想了解更多关于GraphQL安全性的信息,您可以访问本文末尾的参考链接1。

3.直接暴露宇宙RPC应用编程接口

https://fake.cosmos.api.com/txs?message . action=send limit=100 tx . Minh ight=1

上面的宇宙应用编程接口搜索来自块1的100个发送的事务。到目前为止,宇宙主网共有2,712,445个区块。在CosmosHub中公开的RPC API节点中,我们找不到任何节点来处理这个请求。一段时间后,接收此请求的服务器将返回“502坏网关”错误,表明请求失败。

如果节点的RPC服务器在几秒钟内收到数百个上述搜索请求,它将向所有应用编程接口请求返回以下错误。一些节点服务器可以从错误中恢复,而其他节点服务器需要重新启动。

区块链浏览器可以逃离DoS的九阴白骨爪吗?

为了让读者更好地理解上述问题并展示其效果,CertiK技术团队建立了一个完全同步的Cosmos full节点,并用上述查询攻击该节点:“https://make . Cosmos . API.com/txs?message . action=send limit=100 & tx . min h8=1 ".

区块链浏览器可以逃离DoS的九阴白骨爪吗?

格拉夫纳中央处理器使用面板

地图可以分为三个阶段:

A.节点已启动并运行,系统的CPU利用率为35%

B.该节点面临DoS攻击,系统的CPU利用率达到97%

C.节点崩溃,无法向Grafana提供新数据

该图显示,在DoS攻击下,服务器在几分钟内崩溃。运营商不得不重启服务器,因为在服务器崩溃后,他们无法使用SSH连接到服务器。

4.请求处理程序有缺陷

https://fake.sample.com/api/v1?功能=总是超时

CertiK的技术团队遇到了一个应用编程接口,它会在一段时间后继续加载并显示超时,但是向服务器发送多个请求不会影响其他应用编程接口的响应时间。初步猜测是,这个特定应用编程接口的处理方法不占用中央处理器或内存。由于这个区块链浏览器不是开源的,所以不可能获得关于应用编程接口代码实现的相关信息,也不可能根据其名称来确定应用编程接口端点的用途。

虽然攻击此应用编程接口不太可能使服务器崩溃,但攻击者可以通过发送“总是挂起并超时”请求来占用所有网络连接,从而阻止其他用户访问此服务器上的应用编程接口。

例如,函数“sleep_to_handle_request”演示了一个请求可以消耗很少的CPU和内存,但是它会加载很长时间并占用网络连接。

区块链浏览器可以逃离DoS的九阴白骨爪吗?

与服务器完全崩溃或需要很长时间才能恢复的其他三种情况相比,这种情况下的服务器在攻击停止后会立即恢复。

DoS攻击的影响

当遇到DoS攻击时,易受攻击的服务器将无法响应正常的用户请求。一些服务器可以在攻击停止后或一段时间后立即恢复到正常状态,而其他服务器将完全崩溃,需要重新启动。

无法使用区块链浏览器会给用户带来很大的麻烦。因为用户不容易获得有关供应链活动的信息。此外,在基于Cosmos的链上,如果一个节点遭受DoS攻击,不仅连接的区块链浏览器不能从该节点获得数据,而且用户也不能使用API来执行诸如发送令牌或委托令牌给验证者的操作。

建议

任何应用程序都受到DoS攻击的威胁,世界上没有完美的解决方案来防止DoS攻击。但是,某些方法可能会增加攻击成本,从而使潜在攻击者难以执行攻击操作,并降低区块链浏览器应用程序中出现漏洞的可能性。

这里,CertiK技术团队列出了一些建议,以最大限度地减少应用程序攻击的机会:

1.利率限制

即使后端应用编程接口实现得足够安全,攻击者也可以通过向服务器发送大量请求来进行攻击。因此,在任何情况下,应用编程接口都应该设置速率限制,以暂时或永久屏蔽恶意知识产权。

虽然速率限制不能完全解决问题,但它操作起来相对方便,可以构成抵御DoS攻击的第一道防线。

2.改进设计和实施

良好的编程和代码实现可以在相同的硬件条件下表现出更好的性能,这种效果在与数据库搜索和数据处理相关的功能中更加突出。但是在考虑性能之前,首先要确保代码没有错误。

因此,在将应用编程接口部署到生产环境之前,花大量时间编写单元测试是值得的,以确保它们能够按预期工作。

3.输入验证和参数限制

如果不验证和限制用户提供的变量,攻击者可能会滥用该应用编程接口。

在确认代码按预期工作后,下一步是确保攻击者不能通过非常规输入滥用应用编程接口。不允许类似于获取块999999的数据或处理具有1000个周期的GraphQL查询的请求。

因此,所有用户输入都应该被认为是不可信的,服务器应该在处理用户输入之前对其进行验证。

在上述情况下,GraphQL应用编程接口可以设置最大层限制,以有效抵御循环查询的DoS攻击,而块数据获取应用编程接口可以将最大块数限制在合理的值,如50。

根据代码实现和程序设计,开发人员可以总结出最适合当前程序的输入验证和限制方案。

4.不要公开节点RPC

并非所有的应用编程接口代码实现都在开发人员的控制之下。

例如,开发人员不建议更改宇宙RPC应用编程接口的代码。宇宙软件开发工具包中的一些搜索查询的性能不是很好,那么我该怎么办?

解决方案之一是围绕宇宙RPC API创建一个包装API,并创建一个用于存储区块链数据的数据库,该数据库同步来自节点的区块链数据。外部包装应用编程接口对公众开放,接收和处理用户请求,然后将请求传递给宇宙RPC或在后端数据库中搜索数据。添加外部应用编程接口有效地防止了用户直接与节点的RPC应用编程接口进行交互。数据库可以防止节点被搜索查询请求淹没,开发人员可以按照他们想要的方式优化数据库。

在宇宙论坛上,用户“坤扬”也提出了一个解决方案:使用超文本传输协议代理(如Nginx或Caddy)来保护RPC端口。总的来说,表达的意见是一致的:RPC端口不能直接向公众公开,应该采取保护措施。

区块链浏览器可以逃离DoS的九阴白骨爪吗?

5.满足推荐的硬件要求

即使部署了上述所有防御机制,用户仍然需要注意运行应用编程接口服务器或稳定节点(如嫩薄荷)的最低硬件要求(详见参考链接2)。如果服务器难以处理普通用户访问网站的请求,管理员应考虑升级硬件。

摘要

DoS攻击可能会使区块链浏览器等应用崩溃,这对大多数企业来说是一个致命的威胁。

CertiK的专业安全技术团队在应用程序漏洞评估、不同语言(如Solidity、RUST和Go)的代码审计以及以太网、宇宙和基底等平台的安全维护方面拥有丰富的经验和专业的安全知识。

对于与区块链相关的业务,包括区块链浏览器、钱包、交易所、智能合同,甚至底层区块链协议的实施,CertiK拥有多年的实际保护经验和最先进的正式验证技术,将成为您最值得信赖的安全专家。

附录

这是一个测试宇宙节点是否容易受到拒绝服务攻击的示例脚本。您可以通过修改url变量来测试不同的应用程序。

请不要在未经许可的应用程序上运行。

导入请求

导入线程

导入urllib3

URL lib 3 . disable _ warnings(URL lib 3 . exceptions . InsecureRequestwarnings)

#修改网址

URL=' https://make . cosmos . API/txs?' message . action=send limit=100 tx . Minh ight=1 '

def dos_thread():

而(1):

响应=请求。请求(' GET ',url,验证=False)

打印(response.text.encode('utf8 '))

if __name__=='__main__':

对于范围(300):内的I

t=线程。线程(目标=dos _线程)

t.start()

参考链接:

1.https://www . apollographql.com/blog/secure-your-graphql-API-from-whole-query-16130 a 324 a6b/

2.https://github.com/嫩薄荷/嫩薄荷/blob/master/docs/嫩薄荷-core/试生产. md#hardware

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发