5.5 Medium
CVSS3
Attack Vector
LOCAL
Attack Complexity
LOW
Privileges Required
LOW
User Interaction
NONE
Scope
UNCHANGED
Confidentiality Impact
NONE
Integrity Impact
NONE
Availability Impact
HIGH
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
6.6 Medium
AI Score
Confidence
Low
0.0004 Low
EPSS
Percentile
5.1%
In the Linux kernel, the following vulnerability has been resolved:
ipv6: fix memory leak in fib6_rule_suppress
The kernel leaks memory when a fib
rule is present in IPv6 nftables
firewall rules and a suppress_prefix rule is present in the IPv6 routing
rules (used by certain tools such as wg-quick). In such scenarios, every
incoming packet will leak an allocation in ip6_dst_cache
slab cache.
After some hours of bpftrace
-ing and source code reading, I tracked
down the issue to ca7a03c41753 (“ipv6: do not free rt if
FIB_LOOKUP_NOREF is set on suppress rule”).
The problem with that change is that the generic args->flags
always have
FIB_LOOKUP_NOREF
set1 but the IPv6-specific flag
RT6_LOOKUP_F_DST_NOREF
might not be, leading to fib6_rule_suppress
not
decreasing the refcount when needed.
How to reproduce:
sudo slabtop -o | grep ip6_dst_cache
to see memory usage increaseThis patch exposes the protocol-specific flags to the protocol
specific suppress
function, and check the protocol-specific flags
argument for RT6_LOOKUP_F_DST_NOREF instead of the generic
FIB_LOOKUP_NOREF when decreasing the refcount, like this.
5.5 Medium
CVSS3
Attack Vector
LOCAL
Attack Complexity
LOW
Privileges Required
LOW
User Interaction
NONE
Scope
UNCHANGED
Confidentiality Impact
NONE
Integrity Impact
NONE
Availability Impact
HIGH
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
6.6 Medium
AI Score
Confidence
Low
0.0004 Low
EPSS
Percentile
5.1%