CVE-2026-93048 in Linux
Zusammenfassung
von VulDB • 18.09.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
mtd: part: Ablehnung von MTDPART_OFS_RETAIN in mtd_add_partition()
Die Funktion `mtd_add_partition()` lehnt den speziellen Offset-Wert `MTDPART_OFS_RETAIN` (-3) nicht ab, was zu einem `WARN_ON`-Aufruf in `add_mtd_device()` führt, wenn dies über das BLKPG-ioctl auf NAND-Geräten aufgerufen wird. Der RETAIN-Wert setzt voraus, dass `cur_offset` dem Ende der vorherigen Partition entspricht; im dynamischen Pfad für Partitionen ist `cur_offset` jedoch gleich dem Offset-Argument selbst, was zu undefiniertem Verhalten führt.
Das Commit 5daa7b21496a („mtd: prepare partition add and del functions for ioctl requests“) führte `mtd_add_partition()` ein und lehnte korrekt die speziellen Offsets `MTDPART_OFS_APPEND` (-1) und `MTDPART_OFS_NXTBLK` (-2) ab, da diese speziellen Offsets davon abhängen, dass `cur_offset` das Ende der vorherigen Partition verfolgt. Das spätere Commit 1a31368bf92e („mtd: add a flags for partitions which should just leave smth. after them“) fügte jedoch für den statischen Pfad der Partitionstabelle `MTDPART_OFS_RETAIN` (-3) hinzu, ohne `mtd_add_partition()` zu aktualisieren, um auch diesen Wert abzulehnen.
Wenn Offset=-3 über BLKPG übergeben wird, kommt es in `allocate_partition()` zu einem Underflow bei der RETAIN-Größenberechnung (parent_size - 0xFFFFFFFFFFFFFFFD = parent_size + 3). Wenn das Ergebnis des Underflows nicht genügend Platz zu hinterlassen scheint, springt `allocate_partition()` via goto nach out_register und überspringt die Initialisierung von erasesize. Dies führt dazu, dass erasesize=0 ist, was folgendes auslöst:
WARN_ON((!mtd->erasesize || !master->_erase) && !(mtd->flags & MTD_NO_ERASE))
in add_mtd_device(). Wenn das Ergebnis des Underflows jedoch genügend Platz zu hinterlassen scheint, wird eine falsche Partitiongröße berechnet; die „out of reach“-Sicherheitsprüfung fängt den ungültigen Offset ab und erstellt stattdessen eine deaktivierte leere Partition (Offset=0, Größe=0), anstatt einen Fehler zurückzugeben.
Beheben Sie dies, indem Sie MTDPART_OFS_RETAIN zur Ablehnungsliste in mtd_add_partition() hinzufügen, konsistent mit der bestehenden Handhabung von APPEND und NXTBLK.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.