Merge pull request #5442

dca799e Ignore getaddr messages on Outbound connections. (Ivan Pustogarov)
This commit is contained in:
Wladimir J. van der Laan 2015-03-09 12:24:47 +01:00
commit c1b723c30a
No known key found for this signature in database
GPG key ID: 74810B012346C9A6

View file

@ -4021,7 +4021,12 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
}
else if (strCommand == "getaddr")
// This asymmetric behavior for inbound and outbound connections was introduced
// to prevent a fingerprinting attack: an attacker can send specific fake addresses
// to users' AddrMan and later request them by sending getaddr messages.
// Making users (which are behind NAT and can only make outgoing connections) ignore
// getaddr message mitigates the attack.
else if ((strCommand == "getaddr") && (pfrom->fInbound))
{
pfrom->vAddrToSend.clear();
vector<CAddress> vAddr = addrman.GetAddr();