5.3 MEDIUM
- CVSS version (CVSS): 3.1
- Attack Vector (AV): Network (N)
- Attack Complexity (AC): Low (L)
- Privileges Required (PR): None (N)
- User Interaction (UI): None (N)
- Scope (S): Unchanged (U)
- Confidentiality (C): None (N)
- Integrity (I): None (N)
- Availability (A): Low (L)
- Modified Attack Vector (MAV): Network (N)
- Modified Attack Complexity (MAC): Low (L)
- Modified Privileges Required (MPR): None (N)
- Modified User Interaction (MUI): None (N)
- Modified Confidentiality (MC): None (N)
- Modified Scope (MS): Unchanged (U)
- Modified Integrity (MI): None (N)
- Modified Availability (MA): Low (L)
Activity log
- Created suggestion
ZEBRA: Mempool transaction admission denial via single-peer inbound queue saturation
ZEBRA is a Zcash node written entirely in Rust. Prior to 4.5.0, one unauthenticated P2P peer can monopolize all 25 MAX_INBOUND_CONCURRENCY slots in Zebra's inbound mempool download and verification pipeline. In zebrad/src/components/mempool/downloads.rs, the bounded queue was shared globally without per-peer accounting, while peer identity was not carried through Gossip and FullQueue responses were mapped to Response::Nil instead of reaching overload disconnection handling. An attacker can advertise fake transaction identifiers and remain silent so each task holds a slot until TRANSACTION_DOWNLOAD_TIMEOUT, then periodically refill the queue as slots expire. While saturated, honest peer transactions and local sendrawtransaction requests are rejected with MempoolError::FullQueue, although block validation and synchronization continue. This issue is fixed in version 4.5.0.
References
-
https://github.com/ZcashFoundation/zebra/security/advisories/GHSA-4fc2-h7jh-287c exploitx_refsource_CONFIRM
-
https://github.com/ZcashFoundation/zebra/releases/tag/v4.5.0 x_refsource_MISC
Affected products
- ==< 4.5.0
Matching in nixpkgs
pkgs.typstPackages.zebra
None
pkgs.typstPackages.zebraw
None
pkgs.typstPackages.zebra-notes
None
pkgs.typstPackages.zebra_0_1_0
None
pkgs.typstPackages.zebraw_0_1_0
None
pkgs.typstPackages.zebraw_0_2_0
None
pkgs.typstPackages.zebraw_0_3_0
None
pkgs.typstPackages.zebraw_0_4_0
None
pkgs.typstPackages.zebraw_0_4_1
None
pkgs.typstPackages.zebraw_0_4_2
None
pkgs.typstPackages.zebraw_0_4_3
None
pkgs.typstPackages.zebraw_0_4_4
None
pkgs.typstPackages.zebraw_0_4_5
None
pkgs.typstPackages.zebraw_0_4_6
None
pkgs.typstPackages.zebraw_0_4_7
None
pkgs.typstPackages.zebraw_0_4_8
None
pkgs.typstPackages.zebraw_0_5_0
None
pkgs.typstPackages.zebraw_0_5_1
None
pkgs.typstPackages.zebraw_0_5_2
None
pkgs.typstPackages.zebraw_0_5_3
None
pkgs.typstPackages.zebraw_0_5_4
None
pkgs.typstPackages.zebraw_0_5_5
None
pkgs.typstPackages.zebraw_0_6_0
None
pkgs.typstPackages.zebraw_0_6_1
None
pkgs.typstPackages.zebraw_0_6_3
None
pkgs.typstPackages.zebra-notes_0_1_0
None