这样恶意的GraphQL请求对处事器造成的影响取决于查询的巨大性和处事器的机能,处事器大概在耗费许多时间之后最终可以或许乐成响应查询,但也有大概由于CPU利用率过高,处事器直接瓦解。假如你想相识有关GraphQL安详性的更多信息,可以会见文章末端的参考链接1。
附录
这是一个示例剧本,用于测试Cosmos节点是否容易受到DOS进攻。通过修改“url”变量可以测试差异的应用措施。
DoS进攻的影响
碰着DoS进攻时,易受进攻的处事器将无法响应正常的用户请求。一些处事器可以在进攻遏制后当即或在一段时间后规复到正常状态,而另一些处事器将完全瓦解并需要从头启动。
在上文提到的案例中,GraphQL API可以配置最大层数限度以有效防止轮回查询的DoS进攻,而块数据获取API则可以将最大块数限制为像50这样的公道数值。
在确定代码可以或许按预期事情之后,下一步要做的是确保进攻者不能操作非通例的输入滥用API。雷同于获取9999999区块的数据或处理惩罚1000级轮回的GraphQL查询的请求不该该被答允。
Web框架(如Vue和React)的遍及利用使得XSS(跨站点剧本裂痕)的产生大概性低落;
那么在如今大部门区块链应用都面对安详威胁的场景下,区块链欣赏器的安详性又如何呢?
1.速率限制
当处事器处理惩罚此类Graphql请求时的CPU利用率
这些家喻户晓甚至大爷都说的上来的欣赏器,是互联网的代言人,更是互联网的进口。
DoS:Denial of Service的简称,既拒绝处事,造成DoS的进攻行为被称为DoS进攻,往往是被用来阻止系统向正当用户提供处事。
在处事器里,有一个事实就是:客户端可以不费任何力气发送HTTP请求,可是处事器大概需要耗损大量资源对请求举办处理惩罚和响应。应用层DoS正是操作这样的特性来举办进攻。
1. https://www.apollographql.com/blog/securing-your-graphql-api-from-malicious-queries-16130a324a6b/
在这里,CertiK技能团行列出了一些发起,以最洪流平地淘汰应用措施被进攻的机率:
4.不要袒露节点RPC
3.输入验证和参数限制
2. https://github.com/tendermint/tendermint/blob/master/docs/tendermint-core/running-in-production.md#hardware
以上请求以“limit”参数中指示的数量获取区块信息。当限制配置为10时,它将返回最后10个区块的信息。当数字较小时,该请求可以正常事情。
这代表着区块链欣赏器不会受到进攻吗?
可是假如说有谁和互联网是勾肩搭背的干系,那就是现今如日中天的区块链技能了。
https://fake.sample.com/api/v1?feature=Always_time_out
下面临一些可被DoS进攻的处事器举办案例阐明,个中一些是由于代码实现错误引起的,而另一些是由于设置错误而引起的:
区块链欣赏器安详性如何
区块链欣赏器是区块链的搜索引擎,用户可利用此东西搜索区块链上的特定信息。
针对包罗区块链欣赏器、钱包、生意业务所、智能合约,甚至底层区块链协议的实此刻内的区块链相关业务,如需举办全面的安详审计,CertiK拥有多年的实战防护履历及最先进的形式化验证技能,将是你最值得信赖的安详专家。
因为区块链欣赏器中的大大都成果都涉及从后端数据库中搜索数据,或直接从区块链节点中查询数据。而当提到搜索查询成果时,各人一般会想到两个大概存在的裂痕:
开拓人员可以按照代码实现和措施设计,总结出最符合当前措施的的输入验证和限制的方案。
差池用户提供的变量举办验证和限制,那么进攻者就可以滥用API。
2. 嵌套的GraphQL查询
办理方案之一:环绕Cosmos RPC API建设一层包装API,并建设一个存储区块链数据的数据库,该数据库从节点同步区块链数据。外层的包装API向公家果真,并吸收和处理惩罚用户请求,随后再将请求通报到Cosmos RPC或在后端数据库中搜索数据。添加外层API有效地防备了用户直接与节点RPC API举办交互。数据库可以防备节点被搜索查询请求所沉没,而且开拓人员可以凭据他们所但愿的方法优化数据库。
该图可以分为三个阶段:
请不要对未经许可的应用措施运行。
区块链欣赏器进攻范例分类
先来看看区块链欣赏器大概会受到什么范例的进攻。
DoS(Denial-of-service拒绝处事进攻);
3. 直接袒露的Cosmos RPC API
精采的措施设计和代码实现能在沟通的硬件条件下表示出更好的机能,这种结果在与数据库搜索和数据处理惩罚相关的成果方面表示得越发突出。可是在思量机能之前,,首先要确保代码没有错误。
无法利用区块链欣赏器会给用户带来很大的困扰。因为用户无法等闲的获取有关链上勾当的信息。另外,在基于Cosmos的链上,假如节点蒙受DoS进攻,不只毗连的区块链欣赏器无法从该节点获取数据,用户也无法利用API执行诸如发送代币或将代币委托给验证者的操纵。
在观测进程中,CertiK技能团队碰着了一些利用GraphQL的区块链资源。GraphQL是一种用于API的查询语言。对比于典范的 REST API 利用多个请求来请求多个资源,GraphQL以通过一次请求就获取应用所需的所有数据。GraphQL的利用率很高,可是假如利用进程中没有陈设相应的掩护法子,很大概会存在安详隐患。
因此,所有用户输入均应被视为不行信的,处事器应在处理惩罚用户输入之前对其举办验证。
占用所有的网络链接;
该图显示在DoS进攻下,处事器在短短几分钟内就瓦解了。由于处事器瓦解后无法利用SSH毗连随处事器,操纵员不得不从头启动处事器。
可是,后端大概没有对“limit”参数配置上限。当CertiK技能团队将“limit”参数配置为9999999并发送请求时,请求在被处理惩罚好久之后回覆了“504 way time-out”错误。在处事器处理惩罚以上请求的同时,其他API的响应时间明显增加。
9999999也高出了该链中的区块总数。
发送这样的嵌套查询大概会导致处事器上的CPU利用率大幅上升。一般环境下,几个这样的请求就能使CPU利用率提高到100%以上,从而导致处事器无法响应正常用户的请求。
4.请求处理惩罚措施有缺陷
CertiK技能团队碰着了一个会不断加载,过了一会儿就显示超时的API, 可是向处事器发送多个请求并不会影响其他API的响应时间。劈头揣摩是该特定API的处理惩罚要领不占用CPU或内存。由于此区块链欣赏器不是开源的,因此无法得到有关API代码实现的相关信息,也无法按照其名称确定该API端点的用途。
https://fake.sample.com/api/v1/blocks?limit=10
1. 资源会见API缺少数量限制
Grafana CPU利用率面板
节点的RPC处事器假如在几秒钟内收到数百个上面描写的搜索请求,将会对所有的API请求返回以下错误。一些节点处事器可以错误中自行规复,而另一些则需要被重启。
举个例子,Etherscan是以太坊的区块链欣赏器,通过Etherscan,用户可以轻松获取以以太坊上的区块、地点、生意业务和其他勾当的信息。也就是说,区块链欣赏器,更像是一个区块链官方查询网站。
纵然陈设了上述所有防止机制,用户照旧需要留意运行API处事器或譬喻Tendermint(详见参考链接2)这样的不叛变点对硬件的最低要求。假如处事器在处理惩罚来自普通用户会见网站所发生请求就有坚苦的时候,那么打点员需要思量进级硬件了。
谜底是:No
区块链欣赏器应用措施的可被进攻点相对较少。原因如下:
总结
DoS进攻大概会使诸如区块链欣赏器之类的应用措施陷入瓦解,这对大部门企业来说可以称得上是致命的威胁。
节点瓦解,无法将新数据提供应Grafana
发起
任何应用措施都存在被DoS进攻的威胁,世界上不存在一种办理方案可以完美的防御DoS进攻。但有些要领可以用来增加进攻本钱从而使潜在的进攻者难以执行进攻操纵,并低落区块链欣赏器应用中的存在裂痕的概率。
好比,开拓人员并不推荐去改Cosmos RPC API的代码。Cosmos SDK中某些搜索查询的机能不是很好,那么该怎么办?
本文即将为你分享:DoS进攻的一些案例、DoS进攻的影响以及掩护应用措施的相关发起。
说到欣赏器,各人脑海里蹦出来的必然是“百度一下,你就知道”、“上网从搜狗开始”......
照旧说,被进攻了也没事?
举个例子,“sleep_to_handle_request”函数演示了一个请求可以耗损很少的CPU和内存,可是会加载很长时间并占用网络毗连的环境。
DoS进攻是什么
举个通俗易懂的例子,某白胡子爷爷眼看某小丑大叔店的炸鸡越卖越好,因此找了几个地痞去搞工作。他们站在点餐台前,顾阁下而言他,提出了各类问题和需求,伙计焦头烂额,点了两个小时的餐也不知道地痞到底想要什么,饥肠辘辘的客人等不下去纷纷离店了。这还不足,假如小丑大叔店内部原来伙计性情就欠好,一旦被外部抵牾激化,直接上演全武行,店肆一片散乱..................
5.切合发起的硬件要求
纵然后端API在实现上足够安详,进攻者也可以通过向处事器发送大量请求来举办进攻。因此,API在任何环境下都应该配置速率限制来临时或永久屏蔽恶意IP。
因此,在API陈设到出产情况前编写单位测试上投入大量时间长短常值得的,以此来确保它们可以或许按预期事情。
节点面对DoS进攻,系统CPU利用率到达97%
固然速率限制并不能完全办理问题,但操纵起来相对便捷,可以组成针对DoS进攻的第一道防地。
https://fake.cosmos.api.com/txs?message.action=send&limit=100&tx.minheight=1
互联网改变糊口,区块链技能改变互联网。那么毫无疑问,作为互联网的进口,欣赏器一定也与区块链技能脱不开干系。由此降生的区块链欣赏器,作为各人耳熟能详的落地产物,更是为区块链用户带来了相当水平的便利。
与其他三个处事器完全瓦解,或需要很长时间才气规复的案例对比,此案例中的处事器在进攻遏制后当即规复了。
下图的“dos_query”展示了嵌套graphql的例子:
并非所有API的代码实现都在开拓人员的节制之下。
SQL注入;
然而,在考查差异的欣赏器时,CertiK技能团队仅发明一例SQL注入, 别的高出50%的区块链欣赏器面对着被DoS进攻的危险。
尽量进攻此API不太大概使处事器瓦解,但进攻者可以通过发送这类“Always hang and time out”请求来占用所有网络毗连,从而阻止其他用户会见此处事器上的API。
CertiK专业的安详技能团队在应用措施裂痕评估,针对诸如Solidity、RUST和Go等差异语言的代码审计,以及以太坊,Cosmos和Substrate等平台的安详维护方面拥有富厚的履历和专业的安详常识。
耗损所有CPU和内存资源;
节点已启动并正在运行,系统的CPU利用率为35%
在Cosmos论坛上,用户“kwunyeung”也提出了一种办理方案:利用HTTP署理(譬喻Nginx或Caddy)来掩护RPC端口。总的来说想表达的概念是一致的:RPC端口不能直接向公家果真,同时还要采纳掩护法子。
一般来说,DoS攻防雷同于就像是这样的进程,最终功效取决于谁拥有更多的资源。可是,假如后端代码实现有裂痕,单个请求就足以让处事器瓦解了。
测试区块链欣赏器时,CertiK技能团队发明白个中一个欣赏器利用了GraphQL接口,其界说的两个范例存在着彼此包括的干系,这就答允用户结构一个很是巨大的的嵌套查询。
DoS进攻案例阐明
对处事器举办DoS进攻的途径多种多样。一般来说,方针会选择:
假设是后端实验获取区块链中每个区块的数据。假如进攻者发送了大量的高“limit”参数的请求,该处事器会无法对正常请求举办响应甚至大概直接瓦解。
为了使读者更好地领略上述问题并演示其结果,CertiK技能团队配置了一个完全同步的Cosmos全节点,并利用上面提到的查询进攻该节点:“https://fake.cosmos.api.com/txs?message.action=send&limit = 100&tx.minheight = 1”。
参考链接:
不涉及身份验证或授权,因此不会泄漏任何私人信息;
上面的Cosmos API从区块1开始搜索100笔发送出去的生意业务。停止今朝,Cosmos主网中已经有2712445个区块。在CosmosHub中袒露了RPC API节点里,我们找不到任何节点可以处理惩罚该请求。接管到此请求的处事器在一段时间后,将返回“502 Bad way”错误,表白请求失败。
2.改善设计和实现
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。