net: qrtr: restrict socket creation to the initial network namespace
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.10.265, 5.15.216, 6.1.183, 6.6.148, 6.12.101, and 2 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: none
- Automatable: no
- Technical impact: total
Summary
In the Linux kernel, the following vulnerability has been resolved: net: qrtr: restrict socket creation to the initial network namespace QRTR keeps its entire port and node state in module-global variables that are not partitioned per network namespace: qrtr_local_nid is a single global node id (always 1) and qrtr_ports is a single global xarray. qrtr_port_lookup() and qrtr_local_enqueue() operate on that global state with no network-namespace check, and qrtr_create() places no restriction on the namespace a socket is created in. As a result an unprivileged process that creates an AF_QIPCRTR socket in a separate network namespace, e.g. via unshare(CLONE_NEWUSER | CLONE_NEWNET), can send QRTR datagrams - including control-plane messages such as QRTR_TYPE_NEW_SERVER - to QRTR sockets owned by another namespace, and vice versa. The receiving socket sees such a message as coming from node id 1, indistinguishable from a legitimate local client, breaking the isolation that network namespaces are expected to provide. QRTR is a transport to global hardware endpoints (the modem and other remote processors) and has no per-namespace semantics; its in-kernel name service already creates its socket in init_net only. Confine the socket family to the initial network namespace, as other non-namespace-aware socket families do (see llc_ui_create() and the ieee802154 socket code).
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From bdabad3e363d825ddf9679dd431cca0b2c30f881 · fixed in 7814f6a3415cad38aa8d6dfc573df778260d66aa; From bdabad3e363d825ddf9679dd431cca0b2c30f881 · fixed in 2d22b94a154ccb9755dddfff802fe3e2b1adbab5; From bdabad3e363d825ddf9679dd431cca0b2c30f881 · fixed in 8d351fe0654a20c9f95a61b05d24ebe6d4be3fbb; From bdabad3e363d825ddf9679dd431cca0b2c30f881 · fixed in 4b95e1f0d6e6342c427cb341ee18a894b146b789; From bdabad3e363d825ddf9679dd431cca0b2c30f881 · fixed in f488116df769bdaf89c93371350e49e12133e70f; From bdabad3e363d825ddf9679dd431cca0b2c30f881 · fixed in 8150c48fb978e01689f94ed80148f8a7499ae571; From bdabad3e363d825ddf9679dd431cca0b2c30f881 · fixed in 659b9b4f194bb56b9903cc95e786ef1d438baa7d; From bdabad3e363d825ddf9679dd431cca0b2c30f881 · fixed in 3b536db8fb32da9e9c62f2bb45e2e319331f0426
- Linux Linux
4.7
- KernelLinux
From 4.7.0 · fixed in 5.10.265; From 5.11.0 · fixed in 5.15.216; From 5.16.0 · fixed in 6.1.183; From 6.2.0 · fixed in 6.6.148; From 6.7.0 · fixed in 6.12.101; From 6.13.0 · fixed in 6.18.42; From 6.19.0 · fixed in 7.1.6
References 8
git.kernel.org
- stable/c/7814f6a3415cad38aa8d6dfc573df778260d66aa
- stable/c/2d22b94a154ccb9755dddfff802fe3e2b1adbab5
- stable/c/8d351fe0654a20c9f95a61b05d24ebe6d4be3fbb
- stable/c/4b95e1f0d6e6342c427cb341ee18a894b146b789
- stable/c/f488116df769bdaf89c93371350e49e12133e70f
- stable/c/8150c48fb978e01689f94ed80148f8a7499ae571
- stable/c/659b9b4f194bb56b9903cc95e786ef1d438baa7d
- stable/c/3b536db8fb32da9e9c62f2bb45e2e319331f0426