In the Linux kernel, the following vulnerability has been resolved:
net: do not send ICMP/NDISC Redirects when peer allocation fails
When inetgetpeerv4() or inetgetpeerv6() fails to allocate a peer entry under memory pressure or tree size caps, redirect handlers previously fell back to sending un-rate-limited ICMP/NDISC Redirect messages.
In IPv4, iprtsendredirect() called icmpsend() directly when peer == NULL. In IPv6, ip6forward() and ndiscsendredirect() passed a NULL peer into inetpeerxrlimallow(), which returned true when peer == NULL.
Because ICMP/NDISC Redirects are not part of the default global rate limit mask (sysctlicmpratemask), sending redirects when peer == NULL creates an un-rate-limited ICMP packet storm.
Fix this by failing closed in iprtsendredirect(), ip6forward(), and ndiscsendredirect() when peer is NULL.