From 79c02c88b347f1408a2db307db2654917f9b0bcc Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Wed, 2 Jun 2021 13:54:41 -0700 Subject: Randomize message processing peer order --- src/net.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/net.cpp b/src/net.cpp index 6f9f17ed4e..9c6cb379d2 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -2173,6 +2173,7 @@ void CConnman::OpenNetworkConnection(const CAddress& addrConnect, bool fCountFai void CConnman::ThreadMessageHandler() { + FastRandomContext rng; while (!flagInterruptMsgProc) { std::vector vNodesCopy; @@ -2186,6 +2187,11 @@ void CConnman::ThreadMessageHandler() bool fMoreWork = false; + // Randomize the order in which we process messages from/to our peers. + // This prevents attacks in which an attacker exploits having multiple + // consecutive connections in the vNodes list. + Shuffle(vNodesCopy.begin(), vNodesCopy.end(), rng); + for (CNode* pnode : vNodesCopy) { if (pnode->fDisconnect) -- cgit v1.2.3