74849 bc medium p2p gossip flood limiter bypass via invalid signature block spam
Description
Vulnerable File
// Lines 199-235
if let Some(seen_hashes_at_height) =
self.seen_hashes.get_mut(&envelope.payload.block_number())
{
// flood limiter - never triggers for invalid-signature blocks
if seen_hashes_at_height.len() > Self::MAX_BLOCKS_TO_KEEP {
return Err(BlockInvalidError::TooManyBlocks { .. });
}
if seen_hashes_at_height.contains(&envelope.payload.block_hash()) {
return Err(BlockInvalidError::BlockSeen { .. });
}
}
// signature check runs here - expensive ecrecover
let Ok(msg_signer) = envelope.signature.recover_address_from_prehash(&msg) else {
return Err(BlockInvalidError::Signature);
};
if msg_signer != block_signer {
return Err(BlockInvalidError::Signer { .. });
}
// insertion only happens on success; forged blocks never reach here
self.seen_hashes
.entry(envelope.payload.block_number())
.or_default()
.insert(envelope.payload.block_hash());Why This Is a Vulnerability
Impact
Proof of Concept
Setup
Run Command
Expected Output
Remediation
Previous75423 sc medium zk range client accepts truncated post azul execution allowing invalid aggregateverifier state rootsNext76296 bc insight critical kona three derivation divergence bugs cause tee to attest wrong output root single proof bridge drain
Was this helpful?