草庐IT

区块链常见漏洞万字总结【Web3从业者必备】

FeelTouch Labs 2023-04-21 原文

网络层

P2P

女巫攻击

  • 严重性:高
  • 描述:
    攻击者可以通过将某个恶意节点伪装成多个虚拟节点,创建大量假身份来攻击区块链系统。可造成 DoS 或 DDoS 等攻击。
  • 建议:
    增加节点的最大连接数,限制单个IP地址的主机数。
  • 参考:
    利用分布式矿工行为监测防止区块链女巫攻击

日蚀攻击

窃听攻击

  • 严重性:低

  • 描述:
    攻击者被动监听网络通信以窃取节点身份标识、路由表等敏感数据。攻击者可以利用这些信息来破坏网络中的节点或路由的可用性。

  • 建议:
    使用加密协议(例如 TLS)加密通信。

  • 参考:
    RLPx 传输协议

拒绝服务攻击

  • 严重性:中

  • 描述:
    攻击者通过发送大量的请求,使受害系统资源耗尽,服务暂时中断或停止,导致正常用户无法使用网络服务。

  • 建议:

    1. 增加不同区域的节点数量。
    2. 避免畸形数据导致软件崩溃。
    3. 限制内存大小。

BGP 劫持攻击

异形攻击

  • 严重性:低
  • 描述:
    异形攻击漏洞最早由慢雾团队发现,又称地址池污染,是指诱使同类链的节点互相侵入和污染的一种攻击手法,漏洞的主要原因是同类链系统在通信协议上没有对不同链的节点做识别。
  • 建议:
    为P2P连接协议添加网络标识,如以太坊中的 chain ID,比特币中的 Magic。
  • 参考:
    来自P2P协议的异攻击形漏洞的公链

时间劫持

  • 严重性:高
  • 描述:
    时间劫持是比特币时间戳处理中的一个理论漏洞。攻击者在网络添加多个具有异常时间戳的虚假节点并强制其他节点接受替代区块链。
  • 建议:
    通过限制可接受的时间范围或使用节点的系统时间来防止时间劫持攻击。

RPC

窃听攻击

  • 严重性:低
  • 描述:
    攻击者被动监听网络通信以窃取节点身份标识、路由表等敏感数据。攻击者可以利用这些信息来破坏网络中的节点或路由的可用性。
  • 建议:
    使用加密协议(例如 HTTPS)加密通信。

拒绝服务攻击

  • 严重性:中
  • 描述:
    节点因接收到畸形格式参数请求而崩溃。
  • 建议:
    1. 防止格式错误的参数导致软件崩溃。
    2. 限制内存大小。

以太坊黑色情人节漏洞

  • 严重性:低
  • 描述:
    以太坊黑色情人节漏洞最早由慢雾团队发现。当节点解锁其钱包时,黑客可以通过远程 RPC 请求窃取加密货币。
  • 建议:
    1. 禁用 RPC 接口的外部请求。
    2. 禁用公共节点的钱包功能。
  • 参考:
    以太坊生态发现的一起级代币盗窃大案

HTTP 输入攻击

  • 严重性:低
  • 描述:
    包括XSS/模板注入/第三方组件漏洞/HTTP参数污染/SQL注入/XXE注入/反序列化漏洞/SSRF/代码注入/本地文件包含/远程文件包含/命令注入/缓冲区溢出/ 格式化字符串等
  • 建议:
    进行渗透测试。
  • 参考:
    SlowMist Exchange 安全审核计划

跨域钓鱼攻击

  • 严重性:低
  • 描述:
    黑客诱骗受害者打开恶意网页,通过跨域请求连接到加密钱包的RPC端口,然后窃取加密资产。
  • 建议:
    禁止RPC允许跨域访问。

分类帐层

共识

长程攻击

  • 严重性:高
  • 描述:
    长程攻击是攻击者从创世区块分叉链,新链与主链部分或完全不同。当攻击者制造的分叉变得比主链更长时,则攻击成功。长程攻击分为三种:简单攻击、变节攻击和权益流损。
    在某种意义上,PoS 中的长程攻击与 PoW 协议的自私挖矿攻击类似,因为两种情况下的攻击者都在试图添加保密区块。不过由于 PoW 对计算量的要求,自私挖矿攻击无法从创世区块开始,所以造成的影响是有限的。这两种攻击都分叉了主链,并尝试在伪造的区块中包含不同的交易。
  • 建议:
    等到交易被足够的区块确认后,交易所或接收方再支付。
  • 参考:
    长程攻击调查权益证明协议

贿赂攻击

  • 严重性:高
  • 描述:
    贿赂攻击也被称为 短程攻击 。攻击者通过向验证者或矿工支付大于等于区块奖励的金额,贿赂验证者或矿工来产生特定的区块或分叉。这样一来,攻击者可以将任意交易放入区块,并让不诚实的节点通过区块验证。
    一种被称为P+epsilon 攻击的贿赂攻击,表明可以在无需支付费用的情况下贿赂用户,因为系统会将贿赂奖励给不诚实的节点,使该分叉成为主链。
    攻击者在贿赂攻击中,面临着一个严重的问题:如果恶意分叉由于某种原因被还原(攻击者无法继续贿赂,不诚实的节点停止在该分叉上工作),攻击者将不得不支付巨额贿赂,因为随着恶意铸造的区块累积,需要的贿赂金额也在增长。在 PoS 系统中,这类攻击是可行的。
  • 建议:
    在这两种情况下,PoS 通过强制惩罚或释放攻击者者来解决这个问题。
  • 参考:
    长程攻击调查权益证明协议

竞争攻击

  • 严重性:高
  • 描述:
    竞争攻击指攻击者创建两个冲突的交易。如果第一笔交易被发送给受害者,受害者没有等待交易确认就接受了付款并执行承诺(例如发送产品等)。同时,另一笔冲突的交易被广播到网络,最终使第一笔交易无效。
  • 建议:
    交易被足够的区块确认后,交易所或接收方再支付。
  • 参考:
    区块链攻击向量

活性冻结攻击

  • 严重性:高
  • 描述:
    活性冻结攻击是 PoS 协议中拒绝服务攻击的一种形式。在这种攻击中,部分或全部验证者停止产生区块,从而阻止新区快的验证和产生。对验证者的活跃度进行评估,减少活跃度小的验证者的权益,能确保即使大多数验证者处于离线状态或执行活性冻结攻击,也不会危害网络的可用性。
  • 建议:
    在无法评估活跃度的情况下,社区将能够决定(链下治理)并移除不活跃的验证者。在这种情况下,即使存在漏洞利用条件,试图进行攻击的验证者也会考虑攻击是否划算。
  • 参考:
    长程攻击调查权益证明协议

审查攻击

  • 严重性:高
  • 描述:
    区块链中的审查是一个棘手的问题,有许多相关的讨论。根据不同区块链的性质,它可能区块链的特性,也可能带来危害。由于验证者可以控制哪些交易将被添加到一个区块中,这使他们可以将某些地址列入黑名单,即不打包在黑名单中的地址。在验证者执行审查的情况下,由于时间限制,某些交易可能会延迟或失效。一旦执行进行审查的验证者数量增加,区块链的抗审查性可能受到挑战。
  • 建议:
    对验证者的活跃度要求可以确保交易的最终过程并消除对区块链的审查。除此之外,还可以惩罚未按照协议预定的顺序创建区块的节点。另一个更有效的解决方案是利用零知识简洁非交互式知识论证(zk-SNARKs),它可以可用于隐藏交易发送者的身份。
  • 参考:
    长程攻击调查权益证明协议

芬尼攻击

  • 严重性:高
  • 描述:
    将一个交易预挖到一个块中,并且在该块被放入到网络之前,发送了一个相同的交易,从而使该交易在区块发布后失效。
  • 建议:
    等到交易被足够的区块确认后,交易所或接收方再支付。
  • 参考:
    区块链攻击向量

Vector76 攻击

  • 严重性:高
  • 描述:
    Vector76 是竞争攻击和芬尼攻击的组合。
    恶意矿工创建两个节点,其中一个仅连接到交换节点,另一个连接到区块链网络中的正常节点。之后,矿工创建两笔交易,一笔高价值,一笔低价值。然后,攻击者从交易所服务中预挖并扣留具有高价值交易的区块。某个区块发布后,攻击者迅速将预挖区块直接发送到交易所节点,试图使交易所与一些矿工一起将预挖区块视为主链并确认此交易。
    交易所服务确认高价值交易后,攻击者向主网发送低价值交易,最终拒绝高价值交易。最终,攻击者的交易所账户被记入了高价值交易的金额。尽管这种类型的攻击有可能成功,但并不常见,因为它需要交易所钱包,在一次确认后就接受付款,以及一个将交易发到交易所的节点。
  • 建议:
    等到交易被足够的区块确认后,交易所或接收方再支付。
  • 参考:
    区块链攻击向量

替代历史攻击

  • 严重性:高
  • 描述:
    也称为区块链重组攻击
    如果黑客拥有大量的计算能力,在区块被多次确认后也能完成重组攻击。在这种情况下,恶意用户将发送交易,同时在分叉链上发送另一个同样价值的交易。即使接收方等到若干区块确认后,并认为交易有效,此时攻击者放出更长的分叉链并取回代币,从而导致接收方损失代币。
  • 建议:
    等到交易被足够的区块确认后,交易所或接收方再支付。
  • 参考:
    区块链攻击向量

51% 攻击

  • 严重性:高

  • 描述:
    也称为多数攻击
    在 PoW 系统中,在特定时间范围内控制大部分算力的攻击者可以完全控制区块链。例如,拥有超过 51% 算力的攻击者可以分叉主链并在他的分叉上开始挖矿。该分叉可以逐渐超越主链并取代它。
    在 PoS 协议中,这种攻击仍然可行,但影响略有不同。当一个验证者或一群合伙的验证者拥有超过 34%的权益,这种攻击就可能发生。

  • 建议:
    等到交易被足够的区块确认后,交易所或接收方再支付。

  • 参考:
    长程攻击调查权益证明协议

权力压迫攻击

  • 严重性:高

  • 描述:
    也称为预计算攻击
    攻击者在获得记账权的时候,利用自己手中的权利实施一些计算或者一些操作让系统的随机数产生偏斜,来增加自己下一次获得记账权的可能。

  • 建议:
    等到交易被足够的区块确认后,交易所或接收方再支付。

  • 参考:
    长程攻击调查权益证明协议

币龄累积攻击

  • 严重性:高
  • 描述:
    在早期版本的 Peercoin 协议中,用户质押的时间越长,其权重就会越多,没有任何时间限制。如果有足够的时间,攻击者将积累大量权重,这使他们能够接管网络。
  • 建议:
    在去中心化系统较稳定后,取消币龄系统。
  • 参考:
    长程攻击调查权益证明协议

自私挖矿攻击

  • 严重性:高

  • 描述:
    在自私挖矿攻击(也称为区块扣留)中,攻击者在自己的区块链分叉中挖掘区块,并且不将它们发布到网络。当攻击者计算出一定数量的区块,再将它们发布到网络中,并尝试替代主链。这种攻击可以做到:通过浪费诚实节点的计算资源来破坏网络;增加恶意节点挖矿的奖励。

  • 建议:
    削减恶意攻击者的奖励及权益。

  • 参考:
    长程攻击调查权益证明协议

区块双产

  • 严重性:高

  • 描述:
    攻击者在某个区块高度上生产多个区块,这可能是长程攻击或短程攻击的前兆。

  • 建议:
    惩罚恶意攻击者。

加密

密码学攻击

  • 严重性:高
  • 描述:
    常见攻击方法:分析攻击/实施攻击/统计攻击/暴力破解/频率分析/已知明文攻击/选择密文攻击/选择明文攻击/中途相遇攻击/中间人攻击/生日攻击/重放攻击/碰撞攻击
  • 建议:
    不要使用未知的加密库。

私钥预测

  • 严重性:高
  • 描述:
    如果密钥的生成依赖于随机数生成,而该随机数生成器可预测,则密钥可能被窃取。
  • 建议:
    使用密码学安全伪随机数生成器 (CSPRNG) 或密码学伪随机数生成器 (CPRNG)。
  • 参考:
    密码安全的伪随机数生成器

长度扩展攻击

  • 严重性:低
  • 描述:
    对于部分摘要算法,若已知Hash(message1)length(message1) ,则可以直接计算出由攻击者控制的 message2 和对应的 Hash(message1 ‖ message2)。无需知道 message1 的内容。
  • 建议:
    像 MD5、SHA-1 和大多数基于 Merkle-Damgård 结构的 SHA-2 算法很容易受到这种攻击,使用时需要注意。
  • 参考:
    长度扩展攻击

交易

重放攻击

  • 严重性:高
  • 描述:
    也称为双花攻击。
    双花是区块链技术从一开始就试图解决的问题之一。攻击者尝试将相同的货币花费至少两次,所以叫做双花。
    在现实中,这种攻击是不可能的。因为无法从一个供应商那里购买资源,然后将完全相同的钞票支付给另一个供应商。
    而在区块链中,可以通过在不同的分叉中利用冲突的交易来实现。攻击者尝试执行交易,等待商家批准,然后将其还原并在另一个分叉的交易中花费相同的货币。
  • 建议:
    1. 检查 UTXO 是否已经被花费过
    2. 使用 nonce 来防止事务重放。

交易延展性攻击

  • 严重性:高
  • 描述:
    交易延展性攻击允许攻击者做到,在任意交易被比特币网络确认之前,篡改该交易的TXID。此更改使该攻击者可以假装交易没有发生,以实施对交易所的攻击,例如双重存款或双重提款。
    签名延展性
    延展性的第一种形式是在签名本身。每个签名都可以表示为一个八字节的 DER 编码 ASN.1 ,但 OpenSSL 不强制执行该操作,只要签名没有严重格式错误,该签名就会被接受。
    另一种方法为,由于使用椭圆曲线签名算法,根据其特点,对于某个消息的 ECDSA 签名 (r,s),签名 (r, -s (mod N)) 也是该消息的有效签名。
    ScriptSig 延展性
    比特币中使用的签名算法在创建签名时,不签署任何 scriptSig 。虽然对整个 scriptSig 进行签名是不可能的,但可以添加额外的数据,将指令放到堆栈中,并且在所需的签名和公钥之前。所以攻击者可以添加 OP_DROP 指令,从而做到在scriptPubKey被执行前离开堆栈。
  • 建议:
    检查签名库是否具有延展性。
  • 参考:
    Transaction_Malleability
    bip-0066-严格 DER 签名
    eip-2-Homestead 硬分叉变更

交易时间锁攻击

  • 严重性:低
  • 描述:
    在转账时,通过指定代币在某个区块高度后才能被使用,造成代币接收者无法使用代币。
  • 建议:
    接收代币时检查交易是否有时间锁定。
  • 参考:
    XMR转账锁

假充值攻击

  • 严重性:高
  • 描述:
    发起特殊结构的交易以进行虚假转账,但交易所以为是真实充值。
  • 建议:
    1. 检查事务事件日志中的所有字段。
    2. 等到交易被足够的区块确认后,交易所或接收方再确认支付。
  • 参考:
    USDT假充值
    EOS假充值
    XRP 虚假充值
    ETH假充值
    BTC RBF虚假充值
    UTXO 多重签名假充值

Rug Pull

  • 严重性:高
  • 描述:
    Rug Pull在加密货币行业中,专指项目开发人员放弃项目并拿走投资者的资金。Rug Pull通常发生在去中心化金融 (DeFi) 项目中,尤其是在去中心化交易所 (DEX) 上。例如攻击者创建一种代币并将其上架到 DEX 上,然后将其与以太坊等具有高价值的加密货币组建交易对,受害者用以太坊换取恶意代币后,攻击者撤出流动性,拿走用户的以太坊。
  • 推荐:
    检查开发团队是否放弃了项目的所有权,即不再具有撤出全部流动性,无限增发代币等较高权限。

有关区块链常见漏洞万字总结【Web3从业者必备】的更多相关文章

  1. 区块链之加解密算法&数字证书 - 2

    目录一.加解密算法数字签名对称加密DES(DataEncryptionStandard)3DES(TripleDES)AES(AdvancedEncryptionStandard)RSA加密法DSA(DigitalSignatureAlgorithm)ECC(EllipticCurvesCryptography)非对称加密签名与加密过程非对称加密的应用对称加密与非对称加密的结合二.数字证书图解一.加解密算法加密简单而言就是通过一种算法将明文信息转换成密文信息,信息的的接收方能够通过密钥对密文信息进行解密获得明文信息的过程。根据加解密的密钥是否相同,算法可以分为对称加密、非对称加密、对称加密和非

  2. ruby - 如何配置 Ruby Mechanize 代理以通过 Charles Web 代理工作? - 2

    我正在使用Ruby/Mechanize编写一个“自动填写表格”应用程序。它几乎可以工作。我可以使用精彩CharlesWeb代理以查看服务器和我的Firefox浏览器之间的交换。现在我想使用Charles查看服务器和我的应用程序之间的交换。Charles在端口8888上代理。假设服务器位于https://my.host.com。.一件不起作用的事情是:@agent||=Mechanize.newdo|agent|agent.set_proxy("my.host.com",8888)end这会导致Net::HTTP::Persistent::Error:...lib/net/http/pe

  3. 区块链入门教程(6)--WeBASE-Front节点前置服务安装 - 2

    文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定

  4. iNFTnews | 周杰伦18年前未发布的作品Demo,藏在了区块链技术里 - 2

    当音乐碰上区块链技术,会擦出怎样的火花?或许周杰伦已经给了我们答案。8月29日下午,B站独家首发周杰伦限定珍藏Demo独家访谈VCR,周杰伦在VCR里分享了《晴天》《青花瓷》《搁浅》《爱在西元前》四首经典歌曲Demo背后的创作故事,并首次公布18年前未发布的神秘作品《纽约地铁》的Demo。在VCR中,方文山和杰威尔音乐提及到“多亏了区块链技术,现在我们可以将这些Demos,变成独一无二具有收藏价值的艺术品,这些Demos可以在薄盒(国内数藏平台)上听到。”如何将音乐与区块链技术相结合,薄盒方面称:“薄盒作为区块链技术服务方,打破传统对于区块链技术只能作为数字收藏的理解。聚焦于区块链技术赋能,在

  5. 玩以太坊链上项目的必备技能(初识智能合约语言-Solidity之旅一) - 2

    前面一篇关于智能合约翻译文讲到了,是一种计算机程序,既然是程序,那就可以使用程序语言去编写智能合约了。而若想玩区块链上的项目,大部分区块链项目都是开源的,能看得懂智能合约代码,或找出其中的漏洞,那么,学习Solidity这门高级的智能合约语言是有必要的,当然,这都得在公链``````以太坊上,毕竟国内的联盟链有些是不兼容Solidity。Solidity是一种面向对象的高级语言,用于实现智能合约。智能合约是管理以太坊状态下的账户行为的程序。Solidity是运行在以太坊(Ethereum)虚拟机(EVM)上,其语法受到了c++、python、javascript影响。Solidity是静态类型

  6. 适用于Web开发的Python还是Ruby? - 2

    Asitcurrentlystands,thisquestionisnotagoodfitforourQ&Aformat.Weexpectanswerstobesupportedbyfacts,references,orexpertise,butthisquestionwilllikelysolicitdebate,arguments,polling,orextendeddiscussion.Ifyoufeelthatthisquestioncanbeimprovedandpossiblyreopened,visitthehelpcenter提供指导。11年前关闭。我是一位精通HTML

  7. ruby-on-rails - Web 应用程序中的 API 版本控制 - 2

    我目前正在为一个新网站设计版本化的API。我了解如何为路由命名空间,但我一直坚持在模型中实现版本化方法的最佳方式。下面的代码示例使用的是rails框架,但是事情的原理在大多数web框架之间应该是一致的。目前的路线看起来像这样:MyApp::Application.routes.drawdonamespace:apidonamespace:v1doresources:products,:only=>[:index,:show]endendend和Controller:classApi::V1::ProductsController很明显,我们只是在此处公开Product上可用的属性,如果

  8. ruby-on-rails - Ruby/Rails 和 Sharepoint Web 服务 - 2

    我正在尝试使用ruby​​来使用Sharepoint网络服务。我基本上已经放弃尝试使用NTLM进行身份验证,并暂时将Sharepoint服务器更改为使用基本身份验证。我已成功使用soap4r获得WSDL,但在尝试使用实际Web服务调用时仍然无法进行身份验证。有没有人有过让ruby​​和Sharepoint对话的经验? 最佳答案 我是个新手。但经过很多时间并在更多经验编码人员的帮助下,我能够让ruby​​与Sharepoint2010一起工作。下面的代码需要“ntlm/mechanize”gem。我已经能够使用列表GUID和ListV

  9. 酷早报:10月21日全球Web3加密行业重大资讯大汇总 - 2

    2022年10月21日星期五【数据指标】加密货币总市值:$0.95万亿BTC市值占比:38.51%恐慌贪婪指数:23极度恐慌 【今日快讯】1、【政讯】1.1.1、美联储布拉德:市场预期美联储11月会加息75个基点1.1.2、美联储哈克:将维持加息一段时间1.2、美国10年期国债收益率触及4.197%,为2008年6月以来最高1.3、法国数字转型部长:政府将专注于DeFi和Web31.4、巴西ATM机将于11月3日起支持USDT1.5、美众议院副议长将于11月初加入a16zCrypto担任政府事务主管1.6、香港数字资产托管机构FirstDigitalTrust首席执行官:香港仍是安全

  10. Linux网络编程必备的POSIX API的细节 - 2

    目录POSIXAPI大集合五元组三次握手的过程,内核协议栈分析listen函数DDOS攻击,洪水攻击DDOS攻击的应对措施数据发送 怎么保证顺序?如何保证包地顺序到达(序号+确认应答机制+重传)TCP断开连接的过程问题1.大量的CLOSE_WAIT+FIN_WAIT2是为啥?time_wait状态存在的原因?POSIXAPI大集合五元组(sip,sport,dip,dport,protocol)三次握手的过程,内核协议栈分析内核协议栈中是有内核数据结构的.  我们send/write数据,都是先发送到内核协议栈中,然后由内核协议栈封装发送到物理介质中传输到对端的对端的接收过程也是经有内核协议栈

随机推荐