一个格式错误的 GETDATA 消息可能在接收节点上触发无限循环,占用此线程分配的 100% CPU,并且在此连接上无法取得进一步进展。

此问题被视为 **低** 严重性。

详细信息

在比特币核心 0.20.0 之前,攻击者(或有缺陷的客户端,甚至)可以向我们发送一个 GETDATA 消息,这将导致我们的 net_processing 线程以 100% 的速度开始旋转,并且不再为攻击者对等节点处理消息取得进展。 它仍然可以处理来自其他对等节点的消息,因此这只是一个 CPU 拒绝服务,除了此之外影响较小(对于攻击者对等节点而言无法取得进展是一个非问题)。 它还会将每个对等节点的长期内存使用量增加到每个攻击者对等节点 1.5 MB。

John Newbery 打开了 PR #18808 以通过仅披露缺乏进度来解决此问题。

归属

感谢 John Newbery 发现此漏洞,负责任地披露并修复它。

时间线

  • 2020-04-29 John Newbery 打开 #18808
  • 2020-05-08 John Newbery 通过电子邮件报告了他的发现
  • 2020-05-12 #18808 合并
  • 2020-06-03 比特币核心版本 0.20.0 发布了修复程序
  • 2021-09-13 最后一个易受攻击的比特币核心版本 (0.19.x) 到达 EOL
  • 2024-07-03 公开披露。