CVE-2026-99201

netlink: avoid hashing the network namespace pointer

State
Published
Severity
Not scored
Published
Oct 28, 2026
Updated
Oct 30, 2026
Reserved
Sep 25, 2026

Read the record on cve.org

Description

In the Linux kernel, the following vulnerability has been resolved:

netlink: avoid hashing the network namespace pointer

The netlink rhashtable key includes a raw struct net pointer and a user-controlled port ID. Both /proc/net/netlink and socket diagnostics expose the table's bucket order. By binding and rebinding chosen NETLINK_USERSOCK port IDs, an unprivileged reader can distinguish equal buckets and recover the low bits of the Jenkins hash. Its 32-bit seed and the limited set of kernel-image slides can then be searched offline to recover the address of init_net.

Use the namespace's unique, non-address net_cookie in the comparison key instead. It is assigned before the per-net initializers run and remains unchanged for the namespace's lifetime. The lookup key and object hash are still built by netlink_compare_arg_init(), keeping lookup, insertion, removal and rehashing consistent while preserving namespace separation. Neither public table walker needs to change.

Reading the socket's namespace cookie in netlink_compare() is safe under RCU, including during namespace teardown. netlink_release() removes the socket from the hash table and defers its final put with call_rcu(). cleanup_net() runs the per-net exit methods and waits for outstanding RCU callbacks with rcu_barrier() before freeing namespace storage.

Unlike ns.ns_id, net_cookie is also available and initialized during setup_net() in older stable kernels, making the change straightforward to backport to v5.15 and later.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • c428ecd1a21f1457ca3beb4df71b8a079c410e41 to before c61431f3b8c9824e9848a0308054f92b27fa7794Affected
  • c428ecd1a21f1457ca3beb4df71b8a079c410e41 to before f8d2690f3c5dfad1fc306f6d5d84a1d3176c3af9Affected
  • c428ecd1a21f1457ca3beb4df71b8a079c410e41 to before c03fb9c4be3b2dd0996d91e54f65407f7f475238Affected
  • c428ecd1a21f1457ca3beb4df71b8a079c410e41 to before 41a2f69f091b0765f17890d8ac04852c12f25cf6Affected
  • c428ecd1a21f1457ca3beb4df71b8a079c410e41 to before 18edcb9945118beb7a1b64a31a7370ecab485a79Affected
  • c428ecd1a21f1457ca3beb4df71b8a079c410e41 to before bdd55b8a8acbf6b4840ab420eb6a63774bf4593bAffected
  • c428ecd1a21f1457ca3beb4df71b8a079c410e41 to before 078deff25f8a849ecd1c3fe17b1e473b1cf44f28Affected
  • c428ecd1a21f1457ca3beb4df71b8a079c410e41 to before f88bb3606e4bd11ee035b682cddc2999e604609aAffected
LinuxLinux
  • 4.1Affected
  • before 4.1Not affected
  • 5.10.273 through 5.10.*Not affected
  • 5.15.224 through 5.15.*Not affected
  • 6.1.191 through 6.1.*Not affected
  • 6.6.161 through 6.6.*Not affected
  • 6.12.115 through 6.12.*Not affected
  • 6.18.59 through 6.18.*Not affected
  • 7.2.13 through 7.2.*Not affected
  • 7.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.