#42991 [BC-High] User can reuse sequence number causing DOS & breaking core invariant
Description
Description
let min_used_sequence_number =
if used_sequence_number > 0 { used_sequence_number + 1 } else { 0 };if transaction.sequence_number() < min_sequence_number {
info!("Transaction sequence number too old: {:?}", transaction.sequence_number());
return Ok(SequenceNumberValidity::Invalid((
MempoolStatus::new(MempoolStatusCode::InvalidSeqNumber),
Some(DiscardedVMStatus::SEQUENCE_NUMBER_TOO_OLD),
)));
}Issue
Impact
Recommendation
Proof of Concept
POC
Previous#42940 [BC-Medium] Suboptimal Lock Holding During Logging in `decrement_transactions_in_flight`Next#42941 [BC-Critical] [Critical] Network-Wide Denial of Service Through Unrecoverable Block Execution Failures
Was this helpful?