CRITICAL🇬🇧 English

CVE-2026-52955

Linux kernel libceph: podatność out-of-bounds w crush_decode()

CVSS 9.8pub. 2026-06-24upd. 2026-06-30

Podatność w bibliotece libceph jądra Linux umożliwia dostęp poza zakresem pamięci (out-of-bounds access) podczas przetwarzania wiadomości CEPH_MSG_OSD_MAP zawierającej mapę CRUSH. Ze względu na krytyczny wynik CVSS 9.8 oraz brak konieczności uwierzytelnienia, stanowi poważne zagrożenie dla systemów korzystających z Ceph.

Pokaż oryginał (EN)

In the Linux kernel, the following vulnerability has been resolved: libceph: Fix potential out-of-bounds access in crush_decode() A message of type CEPH_MSG_OSD_MAP containing a crush map with at least one bucket has two fields holding the bucket algorithm. If the values in these two fields differ, an out-of-bounds access can occur. This is the case because the first algorithm field (alg) is used to allocate the correct amount of memory for a bucket of this type, while the second algorithm field inside the bucket (b->alg) is used in the subsequent processing. This patch fixes the issue by adding a check that compares alg and b->alg and aborts the processing in case they differ. Furthermore, b->alg is set to 0 in this case, because the destruction of the crush map also uses this field to determine the bucket type, which can again result in an out-of-bounds access when trying to free the memory pointed to by the fields of the bucket. To correctly free the memory allocated for the bucket in such a case, the corresponding call to kfree is moved from the algorithm-specific crush_destroy_bucket functions to the generic crush_destroy_bucket().

🤖 Analiza AI
Jak działa

Wiadomość typu CEPH_MSG_OSD_MAP zawierająca mapę CRUSH z co najmniej jednym bucket'em posiada dwa pola przechowujące algorytm bucket'a. Pierwsze pole (alg) jest używane do alokacji odpowiedniej ilości pamięci dla danego typu bucket'a, natomiast drugie pole wewnątrz bucket'a (b->alg) jest stosowane w kolejnym etapie przetwarzania. Gdy wartości tych dwóch pól różnią się od siebie, dochodzi do dostępu poza przydzielonym obszarem pamięci — zarówno podczas przetwarzania, jak i podczas próby zwolnienia pamięci (destrukcja mapy CRUSH również korzysta z pola b->alg do określenia typu bucket'a). Poprawka dodaje weryfikację zgodności obu pól i zeruje b->alg w przypadku niezgodności, a wywołanie kfree zostało przeniesione do generycznej funkcji crush_destroy_bucket().

Skutki

Atakujący zdalnie, bez uwierzytelnienia, może wywołać dostęp poza zakresem pamięci, co potencjalnie prowadzi do ujawnienia poufnych danych, uszkodzenia pamięci, a w konsekwencji do przejęcia kontroli nad systemem lub jego destabilizacji.

Mitygacja

Należy zastosować patche dostępne u producenta zgodnie z referencjami — poprawki zostały opublikowane w repozytorium stable jądra Linux i są dostępne pod adresami wskazanymi w sekcji referencji

Kogo dotyczy

Jądro Linux z komponentem libceph — konkretne wersje wskazane w referencjach producenta (commitach w repozytorium stable kernel.org)

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
Tagi
Memory
CWE
Referencje