W jądrze Linux wykryto podatność typu double free (CWE-415) w funkcji smb2_set_ea() klienta SMB2. Błąd może zostać wykorzystany zdalnie bez uwierzytelnienia i prowadzić do poważnych naruszeń bezpieczeństwa systemu.
▸ Pokaż oryginał (EN)
In the Linux kernel, the following vulnerability has been resolved: smb: client: fix possible double free in smb2_set_ea() Clang static checker(scan-build) warning: fs/smb/client/smb2ops.c:1304:2: Attempt to free released memory. 1304 | kfree(ea); | ^~~~~~~~~ There is a double free in such case: 'ea is initialized to NULL' -> 'first successful memory allocation for ea' -> 'something failed, goto sea_exit' -> 'first memory release for ea' -> 'goto replay_again' -> 'second goto sea_exit before allocate memory for ea' -> 'second memory release for ea resulted in double free'. Re-initialie 'ea' to NULL near to the replay_again label, it can fix this double free problem.
Podatność wynika z nieprawidłowego zarządzania pamięcią w funkcji smb2_set_ea() znajdującej się w pliku fs/smb/client/smb2ops.c. Wskaźnik 'ea' jest inicjalizowany wartością NULL, a po pierwszym udanym przydziale pamięci i wystąpieniu błędu przepływ sterowania trafia do etykiety 'sea_exit', gdzie pamięć jest zwalniana. Następnie mechanizm powtórzenia operacji (replay) powoduje ponowne przejście do 'sea_exit' przed ponownym przydzieleniem pamięci dla 'ea', co skutkuje drugim wywołaniem kfree() na już zwolnionym wskaźniku. Poprawka polega na ponownym ustawieniu 'ea' na NULL w pobliżu etykiety 'replay_again', co eliminuje możliwość podwójnego zwolnienia.
Atakujący może doprowadzić do uszkodzenia sterty kernela (heap corruption), co w konsekwencji może umożliwić zdalne wykonanie kodu (RCE), eskalację uprawnień (privilege escalation) lub destabilizację systemu (crash/DoS).
Należy zastosować patche dostępne u producenta zgodnie z referencjami — odpowiednie commity zostały opublikowane w repozytoriach kernel.org (git.kernel.org/stable). Zaleca się aktualizację do najnowszej dostępnej wersji stabilnej jądra Linux.
Linux Kernel — wersje wskazane w referencjach producenta (commit dostępne w stabilnych gałęziach projektu kernel.org)
Podatność została wykryta przez statyczny analizator kodu Clang (scan-build), który wygenerował ostrzeżenie dotyczące próby zwolnienia już zwolnionej pamięci w pliku fs/smb/client/smb2ops.c, linia 1304.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HLinux Kernel
OSLinux6.126.6.32 – 6.6.59 (bez)6.8 – 6.11.6 (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