Podatność w podsystemie sunrpc jądra Linux umożliwia exploitację błędu w funkcji tls_alert_recv() podczas obsługi NFS over TLS. Wynika z nieprawidłowego założenia dotyczącego odczytu danych z iteratora msg (kvec), co może prowadzić do krytycznych konsekwencji dla bezpieczeństwa systemu.
▸ Pokaż oryginał (EN)
In the Linux kernel, the following vulnerability has been resolved: sunrpc: fix handling of server side tls alerts Scott Mayhew discovered a security exploit in NFS over TLS in tls_alert_recv() due to its assumption it can read data from the msg iterator's kvec.. kTLS implementation splits TLS non-data record payload between the control message buffer (which includes the type such as TLS aler or TLS cipher change) and the rest of the payload (say TLS alert's level/description) which goes into the msg payload buffer. This patch proposes to rework how control messages are setup and used by sock_recvmsg(). If no control message structure is setup, kTLS layer will read and process TLS data record types. As soon as it encounters a TLS control message, it would return an error. At that point, NFS can setup a kvec backed msg buffer and read in the control message such as a TLS alert. Msg iterator can advance the kvec pointer as a part of the copy process thus we need to revert the iterator before calling into the tls_alert_recv.
Implementacja kTLS dzieli ładunek rekordów kontrolnych TLS pomiędzy bufor komunikatu kontrolnego (zawierający typ, np. TLS alert lub zmianę szyfru) a bufor ładunku komunikatu (zawierający poziom i opis alertu TLS). Funkcja tls_alert_recv() błędnie zakładała, że może bezpośrednio odczytać dane z kvec iteratora wiadomości, co jest nieprawidłowe przy takim podziale. Poprawka wymaga przebudowania sposobu konfiguracji i użycia komunikatów kontrolnych przez sock_recvmsg() — jeśli nie skonfigurowano struktury komunikatu kontrolnego, warstwa kTLS przetwarza rekordy danych TLS, a po napotkaniu komunikatu kontrolnego zwraca błąd, po czym NFS konfiguruje bufor oparty na kvec i odczytuje komunikat kontrolny, cofając wcześniej przesuniętą pozycję iteratora.
Atakujący zdalny, nieuwierzytelniony może potencjalnie wywołać nieprawidłowe zachowanie systemu (zgodnie z CWE-754: nieprawidłowa obsługa wyjątkowych warunków), co przy ocenie CVSS 9.8 wskazuje na ryzyko naruszenia poufności, integralności oraz dostępności systemu.
Należy zastosować patche dostępne u producenta zgodnie z referencjami — łatki opublikowano w repozytorium stable jądra Linux pod adresami wskazanymi w sekcji referencji (commits: 25bb3647, 3b549da8, 6b33c31c, b1df3946, bee47cb0)
Jądro Linux (Linux Kernel) w wersjach wskazanych w referencjach producenta (patche dostępne w repozytorium stable kernel.org)
Podatność została odkryta przez Scotta Mayhew, który zidentyfikował exploit bezpieczeństwa w mechanizmie NFS over TLS w funkcji tls_alert_recv().
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HLinux Kernel
OSLinux6.176.4 – 6.6.102 (bez)6.7 – 6.12.42 (bez)6.13 – 6.15.10 (bez)6.16 – 6.16.1 (bez)
Powiązane podatności
Type confusion w V8 (Google Chrome) — zdalne uszkodzenie sterty
Commvault Command Center – nieuwierzytelniony RCE przez path traversal w ZIP
RCE przez YAML deserialization w IBM Aspera Faspex
RCE w VMware Workspace ONE Access i Identity Manager poprzez server-side template injection
Command Injection w VMware Workspace One Access i Identity Manager