Podatność w jądrze Linux w module obsługi połączeń RDS (Reliable Datagram Sockets) przez InfiniBand polega na tym, że wskaźnik do struktury i_sends nie jest zerowany po zwolnieniu pamięci w ścieżce obsługi błędu. Może to prowadzić do dostępu do zwolnionego obszaru pamięci (use-after-free) podczas późniejszego zamykania połączenia.
▸ Pokaż oryginał (EN)
In the Linux kernel, the following vulnerability has been resolved: net: rds: clear i_sends on setup unwind The RDS IB connection teardown path is written so it can run during partial startup and on repeated shutdown attempts. It uses NULL pointers to distinguish resources that are still owned from resources that have already been released. When rds_ib_setup_qp() fails after allocating i_sends but before allocating i_recvs, the sends_out path frees i_sends without clearing the pointer. A later shutdown pass can still treat that stale pointer as a live send ring allocation. Clear i_sends after vfree() in the error unwind path so the existing shutdown logic continues to use the correct ownership state.
Gdy funkcja rds_ib_setup_qp() zakończy się błędem po przydzieleniu bufora i_sends, lecz przed przydzieleniem i_recvs, ścieżka obsługi błędu (sends_out) zwalnia i_sends za pomocą vfree(), ale nie zeruje wskaźnika. Przy kolejnym przejściu przez procedurę zamykania połączenia logika shutdown traktuje stary, nieważny wskaźnik jako aktywną alokację pierścienia wysyłającego. Mechanizm zarządzania zasobami w RDS IB opiera się na wskaźnikach NULL do odróżnienia zasobów aktywnych od już zwolnionych, więc brak wyzerowania wskaźnika zaburza ten mechanizm.
Atakujący lub proces lokalny może doprowadzić do odczytu lub zapisu w zwolnionym obszarze pamięci jądra, co grozi ujawnieniem danych, uszkodzeniem integralności systemu lub wykonaniem arbitralnego kodu w przestrzeni jądra (potencjalnie privilege escalation lub RCE).
Należy zastosować patche dostępne u producenta zgodnie z referencjami — poprawki opublikowano w gałęziach stabilnych jądra Linux (commits dostępne pod adresami podanymi w sekcji referencji). Zaleca się aktualizację jądra do wersji zawierającej wymienione commity.
Jądro Linux z włączonym modułem RDS IB (net/rds); dokładne wersje wskazane w referencjach producenta (patche dostępne dla wielu gałęzi stabilnych).
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HLinux Kernel
OSLinux4.117.14.4.91 – 4.5 (bez)4.9.54 – 4.10 (bez)4.11.1 – 5.10.259 (bez)5.11 – 5.15.210 (bez)3.18.74 – 3.19 (bez)6.2 – 6.6.143 (bez)6.7 – 6.12.94 (bez)6.13 – 6.18.36 (bez)6.19 – 7.0.13 (bez)5.16 – 6.1.176 (bez)4.1.46 – 4.2 (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