CVE-2022-49197
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
26/02/2025
Last modified:
26/02/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
af_netlink: Fix shift out of bounds in group mask calculation<br />
<br />
When a netlink message is received, netlink_recvmsg() fills in the address<br />
of the sender. One of the fields is the 32-bit bitfield nl_groups, which<br />
carries the multicast group on which the message was received. The least<br />
significant bit corresponds to group 1, and therefore the highest group<br />
that the field can represent is 32. Above that, the UB sanitizer flags the<br />
out-of-bounds shift attempts.<br />
<br />
Which bits end up being set in such case is implementation defined, but<br />
it&#39;s either going to be a wrong non-zero value, or zero, which is at least<br />
not misleading. Make the latter choice deterministic by always setting to 0<br />
for higher-numbered multicast groups.<br />
<br />
To get information about membership in groups >= 32, userspace is expected<br />
to use nl_pktinfo control messages[0], which are enabled by NETLINK_PKTINFO<br />
socket option.<br />
[0] https://lwn.net/Articles/147608/<br />
<br />
The way to trigger this issue is e.g. through monitoring the BRVLAN group:<br />
<br />
# bridge monitor vlan &<br />
# ip link add name br type bridge<br />
<br />
Which produces the following citation:<br />
<br />
UBSAN: shift-out-of-bounds in net/netlink/af_netlink.c:162:19<br />
shift exponent 32 is too large for 32-bit type &#39;int&#39;
Impact
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/0caf6d9922192dd1afa8dc2131abfb4df1443b9f
- https://git.kernel.org/stable/c/41249fff507387c3323b198d0052faed08b14de4
- https://git.kernel.org/stable/c/7409ff6393a67ff9838d0ae1bd102fb5f020d07a
- https://git.kernel.org/stable/c/ac5883a8890a11c00b32a19949a25d4afeaa2f5a
- https://git.kernel.org/stable/c/b0898362188e05b2202656058cc32d98fabf3bac
- https://git.kernel.org/stable/c/e1c5d46f05aa23d740daae5cd3a6472145afac42
- https://git.kernel.org/stable/c/e23e1e981247feb3c7d0236fe58aceb685f234ae
- https://git.kernel.org/stable/c/e8aaf3134bc5e943048eefe9f2ddaabf41d92b1a
- https://git.kernel.org/stable/c/f75f4abeec4c04b600a15b50c89a481f1e7435ee