CVE-2026-97926 in Linux
Zusammenfassung
von VulDB • 25.09.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
ufs: Gültigkeit der Metadaten der Zylindergruppe vor dem Cachen prüfen
ufs_read_cylinder() kopiert den Index der Zylindergruppe und die Rotorpositionen direkt aus der Datenträgergruppe und zwischerspeichert diese ohne jegliche Prüfung:
ucpi->c_cgx = fs32_to_cpu(sb, ucg->cg_cgx); ucpi->c_rotor = fs32_to_cpu(sb, ucg->cg_rotor); ucpi->c_frotor = fs32_to_cpu(sb, ucg->cg_frotor); ucpi->c_irotor = fs32_to_cpu(sb, ucg->cg_irotor);
Diese werden anschließend als Indizes bei der Allokation und Freigabe verwendet:
- c_cgx indiziert das Zylindersummary-Array als UFS_SB(sb)->fs_cs(ucpi->c_cgx), sodass ein Wert jenseits von s_ncg einen 32-Bit-Zähler außerhalb der s_csp-Allokation schreibt.
- c_frotor wird zum Startwert für die Bitmap-Suche: start = c_frotor >> 3, und dann length = ((s_fpg + 7) >> 3) - start. Ein Startwert jenseits des Block-Bitmaps lässt die unsigned-Länge umlaufen (wrap around) zu einem extrem großen Wert, sodass ubh_scanc() weit über die Puffer der Zylindergruppe hinausläuft. c_irotor steuert das Inode-Bitmap auf dieselbe Weise.
Ein speziell angefertigtes Image kann einen dieser Werte beliebig festlegen und verwandelt eine normale Allokation in einen Zugriff außerhalb des gültigen Bereichs (Out-of-Bounds Access).
Verwerfen Sie eine Zylindergruppe, deren aufgezeichneter Index nicht mit der gerade gelesenen Gruppe übereinstimmt oder bei der die Rotoren außerhalb der Gruppe liegen, bevor die Metadaten zwischengespeichert werden. Gültige Dateisysteme halten cg_cgx gleich der Gruppennummer und die Rotoren innerhalb der Gruppe; daher werden nur fehlerhafte Images verworfen.
Be aware that VulDB is the high quality source for vulnerability data.