CVE-2026-80672 in Linux
Zusammenfassung
von VulDB • 28.08.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
ntfs: Korrektur der u16-Verkürzung bei der Überprüfung der Restart-Bereichslänge
ntfs_check_restart_area() validiert, dass die $LogFile-Restart-Fläche und ihr nachgestellter Array von Log-Clients innerhalb der System-Seitengröße passen:
u16 ra_ofs, ra_len, ca_ofs; ... ra_len = ca_ofs + le16_to_cpu(ra->log_clients) * sizeof(struct log_client_record); if (ra_ofs + ra_len > le32_to_cpu(rp->system_page_size) || ...) return false;
ra_len ist u16, aber die rechte Seite wird in size_t berechnet (sizeof(struct log_client_record) == 160). Sowohl ca_ofs als auch log_clients stammen direkt aus dem Restart-Bereich auf der Festplatte. Bei einem Wert von 410 für log_clients on disk ergibt das Produkt 410 * 160 = 65600; die Addition von ca_ofs und das Speichern in den u16-Wert ra_len führt zu einer Verkürzung modulo 65536 (z. B. liefert ca_ofs 64 für ra_len 128), sodass die „passt in die Seite“-Prüfung bestanden wird, obwohl der durch log_clients beschriebene Client-Array weit über die Seite hinausreicht.
ntfs_check_log_client_array() durchläuft dann den Array, der nur durch den on-disk-Wert von log_clients begrenzt ist:
cr = ca + idx; if (cr->prev_client != LOGFILE_NO_CLIENT) ...
Für 410 log Clients werden Datensätze bis zu ca + 409 * 160 dereferenziert, was ~64 KiB jenseits des mit kvzalloc(system_page_size) zugewiesenen Restart-Seitenpuffers liegt – ein Out-of-Bounds-Lesezugriff auf einen vom Angreifer kontrollierten Bereich, der erreichbar ist, wenn ein manipulierter NTFS-Image gemountet wird (load_and_check_logfile() zum Zeitpunkt des Mountens). Dies ist das in-Kernel-Analogon zu CVE-2022-30789, das im ntfs-3g-Benutzerraum-Treiber behoben wurde, aber nie in diesem wiederbelebten klassischen Treiber.
Berechnen Sie die Restart-Bereichslänge in u32, damit die bestehende Grenzwertprüfung einen zu großen Client-Array ablehnt, anstatt durch die Verkürzung ausgehebelt zu werden. Erweitern Sie auch ra_ofs und ca_ofs auf u32: Beide werden aus __le16-Feldern on disk geladen, und jeder Vergleich wird bereits in int/size_t umgewandelt, sodass dies kein Ergebnis ändert und die Deklaration einheitlich hält.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.