57021 bc insight lack of panic recovery in housekeeping goroutine creates potential for denial of service
Description
Brief/Intro
Vulnerability Details
func (p *TxPool) housekeeping() {
logger.Debug("enter housekeeping")
defer logger.Debug("leave housekeeping")
ticker := time.NewTicker(time.Second * 1)
defer ticker.Stop()
headSummary := p.repo.BestBlockSummary()
for {
// NO RECOVER MECHANISM HERE
select {
case <-p.ctx.Done():
return
case <-ticker.C:
// ... complex logic that calls wash() ...
// A panic inside wash() will crash this goroutine.
executables, removedLegacy, removedDynamicFee, err := p.wash(headSummary)
}
}
}Impact Details
References
Link to Proof of Concept
Proof of Concept
Previous57055 bc medium dos via p2p during block header validation using bad proofNext56946 bc insight the code comparing two big in pointers for equality not their numeric values
Was this helpful?