Katalog CVE

CVE-2026-45699

WysokieCVSS 7.5
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.34%

Percentyl 26 - wyżej niż 26% wszystkich znanych CVE

Streszczenie

Netatalk to darmowy pakiet serwera plików dla systemów uniksopodobnych. W wersjach 3.1.19 do 4.4.2 istnieje przepełnienie bufora oparte na stosie w funkcji copydir() demona afpd z powodu niedomiaru liczby całkowitej w obliczaniu pozostałego rozmiaru bufora używanego do konstrukcji ścieżki. copydir() jest funkcją narzędziową wywoływaną, gdy operacja na pliku przekracza granicę urządzenia wewnątrz współdzielonego woluminu AFP, czego standardowa funkcja renameat() nie może obsłużyć. Funkcja próbuje śledzić dostępną przestrzeń bufora za pomocą srem i drem dla ścieżek źródłowych i docelowych. Błędna arytmetyka powoduje niedomiar zarówno srem, jak i drem do SIZE_MAX. W konsekwencji sprawdzenia granic względem strlen(de->d_name) zawsze przechodzą, pozwalając strcpy() na dołączanie nazw plików do prawie pełnych buforów stosu. Wersja 4.4.3 łata ten problem. Obejściem jest skonfigurowanie każdego współdzielonego woluminu AFP jako pojedynczego systemu plików, to znaczy żaden podkatalog współdzielonego woluminu nie powinien być punktem montowania innego systemu plików.

Ocena ryzyka

Ryzyko zdalnego wykonania kodu lub awarii usługi, co może prowadzić do naruszenia poufności i dostępności danych.

Rekomendacja

Zaleca się aktualizację do wersji 4.4.3 lub nowszej oraz skonfigurowanie woluminów AFP jako pojedynczych systemów plików.

Oryginalny opis (angielski, źródło NVD)

Netatalk is a Free and Open Source file server suite for Unix-like operating systems. In versions 3.1.19 through 4.4.2, a stack-based buffer overflow exists in the copydir() function of Netatalk's afpd daemon due to an integer underflow in the calculation of the remaining buffer size used for path construction. copydir() is a utility function called when a file operation crosses a device boundary inside an AFP shared volume, which the standard library's renameat() cannot handle. The function attempts to track available buffer space using srem and drem for source and destination paths. Incorrect arithmetic causes both srem and drem to underflow to SIZE_MAX. Consequently, boundary checks against strlen(de->d_name) always pass, allowing strcpy() to append filenames into nearly full stack buffers. Version 4.4.3 patches the issue. As a workaround, configure each AFP shared volume to be structured as a single file system, in other words no subdirectory of a shared volume should be a mount point for a different file system.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS