CVE-2026-89640
WysokieCVSS 7.1Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 2 - wyżej niż 2% wszystkich znanych CVE
Streszczenie
W kliencie CIFS jądra Linux funkcja cifs_remap_file_range() przy wywołaniu z len == 0 (klonowanie do końca pliku) oblicza efektywną długość jako różnicę i_size - off. Gdy off jest większe niż rozmiar pliku, wynik jest ujemny, co psuje pole ByteCount w żądaniu FSCTL_DUPLICATE_EXTENTS_TO_FILE i odwraca zakres w filemap_write_and_wait_range(). Istniejąca kontrola off >= i_size wykonywana jest dopiero po wysłaniu ioctl.
Ocena ryzyka
Może prowadzić do uszkodzenia danych lub nieprzewidywalnego zachowania operacji klonowania plików na udziałach SMB/CIFS. Występuje również ryzyko wyścigu (TOCTOU) i rozerwanego odczytu na systemach 32-bitowych.
Rekomendacja
Zaktualizować jądro Linux do wersji zawierającej poprawkę, która jednokrotnie odczytuje i_size, odrzuca off > src_size z błędem -EINVAL i traktuje off == src_size jako operację pustą.
Inne podatności w Linux kernel (CIFS client)
Oryginalny opis (angielski, źródło NVD)
In the Linux kernel, the following vulnerability has been resolved: cifs: fix loff_t underflow in cifs_remap_file_range() when len == 0 With len == 0 (clone to EOF), the effective length is computed as: len = src_inode->i_size - off; If off > i_size, this is a negative loff_t, corrupting the ByteCount in the FSCTL_DUPLICATE_EXTENTS_TO_FILE request and inverting the range in filemap_write_and_wait_range(). The existing off >= i_size check fires only after the ioctl has already been sent. Snapshot i_size_read() once for both the bounds check and the length calculation, eliminating the TOCTOU and 32-bit torn-read risk. Reject off > src_size with -EINVAL. Treat off == src_size as a no-op, consistent with __generic_remap_file_range_prep().
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

