Podatność w kliencie SMB jądra Linux umożliwia złośliwemu serwerowi wywołanie przepełnienia arytmetycznego wskaźnika DACL na 32-bitowych kompilacjach. Może to prowadzić do odczytu lub zapisu dowolnych obszarów pamięci jądra z uprawnieniami sieciowego atakującego.
▸ Pokaż oryginał (EN)
In the Linux kernel, the following vulnerability has been resolved: smb: client: validate dacloffset before building DACL pointers parse_sec_desc(), build_sec_desc(), and the chown path in id_mode_to_cifs_acl() all add the server-supplied dacloffset to pntsd before proving a DACL header fits inside the returned security descriptor. On 32-bit builds a malicious server can return dacloffset near U32_MAX, wrap the derived DACL pointer below end_of_acl, and then slip past the later pointer-based bounds checks. build_sec_desc() and id_mode_to_cifs_acl() can then dereference DACL fields from the wrapped pointer in the chmod/chown rewrite paths. Validate dacloffset numerically before building any DACL pointer and reuse the same helper at the three DACL entry points.
Funkcje parse_sec_desc(), build_sec_desc() oraz ścieżka chown w id_mode_to_cifs_acl() dodają dostarczony przez serwer parametr dacloffset do wskaźnika pntsd bez wcześniejszego sprawdzenia, czy wynikowy wskaźnik mieści się w granicach zwróconego deskryptora bezpieczeństwa. Na 32-bitowych kompilacjach jądra złośliwy serwer może zwrócić dacloffset bliski wartości U32_MAX, co powoduje zawinięcie (wrap) obliczonego wskaźnika DACL poniżej end_of_acl. Dalsze sprawdzenia granic oparte na wskaźnikach są wówczas omijane, a funkcje build_sec_desc() i id_mode_to_cifs_acl() mogą wyłuskiwać pola DACL z nieprawidłowego adresu pamięci w ścieżkach chmod/chown. Poprawka polega na numerycznej walidacji dacloffset przed utworzeniem jakiegokolwiek wskaźnika DACL, z użyciem wspólnej funkcji pomocniczej we wszystkich trzech miejscach wejścia DACL.
Atakujący kontrolujący odpowiedź serwera SMB może doprowadzić do odczytu lub nadpisania dowolnych obszarów pamięci jądra, co w konsekwencji może skutkować eskalacją uprawnień, ujawnieniem wrażliwych danych lub destabilizacją systemu.
Należy zastosować patche dostępne u producenta zgodnie z referencjami — poprawki zostały opublikowane w repozytorium stabilnych gałęzi jądra Linux (git.kernel.org/stable); zalecana aktualizacja do wersji jądra zawierającej odpowiednie commity
Jądro Linux — klient SMB (CIFS), 32-bitowe kompilacje; konkretne wersje wskazane w referencjach producenta (commitach stabilnych gałęzi jądra)
Podatność dotyczy wyłącznie 32-bitowych kompilacji jądra Linux z włączonym klientem SMB/CIFS. Na 64-bitowych systemach ryzyko arytmetycznego zawinięcia wskaźnika w tym scenariuszu nie występuje.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HLinux Kernel
OSLinux7.15.12 – 6.6.140 (bez)6.7 – 6.12.88 (bez)6.13 – 6.18.30 (bez)6.19 – 7.0.7 (bez)
Powiązane podatności
Type confusion w V8 (Google Chrome) — zdalne uszkodzenie sterty
Commvault Command Center – nieuwierzytelniony RCE przez path traversal w ZIP
IBM Aspera Faspex 4.4.2 Patch Level 1 and earlier could allow a remote attacker to execute arbitrary code on t...
VMware Workspace ONE Access and Identity Manager contain a remote code execution vulnerability due to server-s...
VMware Workspace One Access, Access Connector, Identity Manager, and Identity Manager Connector address have a...