Critical · published October 21, 2024
In the Linux kernel, the following vulnerability has been resolved:
icmp: change the order of rate limits
ICMP messages are ratelimited :
After the blamed commits, the two rate limiters are applied in this order:
1) host wide ratelimit (icmp_global_allow())
2) Per destination ratelimit (inetpeer based)
In order to avoid side-channels attacks, we need to apply
the per destination check first.
This patch makes the following change :
1) icmp_global_allow() checks if the host wide limit is reached.
But credits are not yet consumed. This is deferred to 3)
2) The per destination limit is checked/updated.
This might add a new node in inetpeer tree.
3) icmp_global_consume() consumes tokens if prior operations succeeded.
This means that host wide ratelimit is still effective
in keeping inetpeer tree small even under DDOS.
As a bonus, I removed icmp_global.lock as the fast path
can use a lock-free operation.
| Product | Versions | Fixed in |
|---|---|---|
| linux/linux_kernel | ≥ 3.18, < 6.1.113 | 6.1.113 |
| linux/linux_kernel | ≥ 6.2, < 6.6.54 | 6.6.54 |
| linux/linux_kernel | ≥ 6.7, < 6.10.13 | 6.10.13 |
| linux/linux_kernel | ≥ 6.11, < 6.11.2 | 6.11.2 |