Direct naar de inhoud
Kritieke cyberalerts voor jouw sector & systemen — direct in je inbox. Aanmelden →
CVE's Videos Dagbriefing

← Terug naar CVE-database

CVE-2026-53292

MEDIUM · 5.5 CVSS Gepubliceerd: CWE-617

Beschrijving NL

In de Linux kernel is de volgende kwetsbaarheid verholpen:

net: phonet: geen BUG_ON() in pn_socket_autobind() bij mislukte binding

syzbot meldde een KERNELFOUT veroorzaakt door pn_socket_sendmsg() via
pn_socket_autobind():

kernel BUG bij net/phonet/socket.c:213! RIP: 0010:pn_socket_autobind net/phonet/socket.c:213 [inline]
RIP: 0010:pn_socket_sendmsg+0x240/0x250 net/phonet/socket.c:421
Oproeptracering:
sock_sendmsg_nosec+0x112/0x150 net/socket.c:797
__sock_sendmsg net/socket.c:812 [inline]
__sys_sendto+0x402/0x590 net/socket.c:2280
... pn_socket_autobind() roept pn_socket_bind() aan met poort 0 en, op
-EINVAL, gaat ervan uit dat het stopcontact al gebonden was en stelt dat de
poort is niet-nul:

err = pn_socket_bind(sok, ..., maat (struct sockaddr_pn));
if (ERR != -EINVAL)
return ERR;
BUG_ON(!pn_port(pn_sk(sock->sk)->sobject));
return 0; /* socket was al gebonden */

Pn_socket_bind() retourneert echter ook -EINVAL wanneer sk->sk_state niet
TCP_CLOSE, zelfs wanneer de socket nooit is gebonden en pn_port() is
nog steeds 0. In dat geval vuurt de BUG_ON() de kernel af en raakt in paniek vanuit een
door de gebruiker activeerbaar pad. Behandel het "bind Returned -EINVAL but pn_port() is still 0" -geval als een
regelmatige fout en geef -EINVAL door aan de beller in plaats van te crashen. Bestaande bellers vertalen al een niet-nul rendement van
pn_socket_autobind() in -ENOBUFS/-EAGAIN, dus hier -EINVAL retourneren
verandert alleen gedrag van paniek naar een normale errno.

Origineel (Engels) tonen

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

net: phonet: do not BUG_ON() in pn_socket_autobind() on failed bind

syzbot reported a kernel BUG triggered from pn_socket_sendmsg() via
pn_socket_autobind():

kernel BUG at net/phonet/socket.c:213!
RIP: 0010:pn_socket_autobind net/phonet/socket.c:213 [inline]
RIP: 0010:pn_socket_sendmsg+0x240/0x250 net/phonet/socket.c:421
Call Trace:
sock_sendmsg_nosec+0x112/0x150 net/socket.c:797
__sock_sendmsg net/socket.c:812 [inline]
__sys_sendto+0x402/0x590 net/socket.c:2280
...

pn_socket_autobind() calls pn_socket_bind() with port 0 and, on
-EINVAL, assumes the socket was already bound and asserts that the
port is non-zero:

err = pn_socket_bind(sock, ..., sizeof(struct sockaddr_pn));
if (err != -EINVAL)
return err;
BUG_ON(!pn_port(pn_sk(sock->sk)->sobject));
return 0; /* socket was already bound */

However pn_socket_bind() also returns -EINVAL when sk->sk_state is not
TCP_CLOSE, even when the socket has never been bound and pn_port() is
still 0. In that case the BUG_ON() fires and panics the kernel from a
user-triggerable path.

Treat the "bind returned -EINVAL but pn_port() is still 0" case as a
regular error and propagate -EINVAL to the caller instead of crashing.
Existing callers already translate a non-zero return from
pn_socket_autobind() into -ENOBUFS/-EAGAIN, so returning -EINVAL here
only changes behaviour from panic to a normal errno.

Vendors

Linux

Affected products

Linux Kernel

References