CVE-2026-97416 in Linux
Zusammenfassung
von VulDB • 24.09.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
btrfs: balance: Behebung eines potenziellen Fehlers bei der bg-Suche in btrfs_may_alloc_data_chunk()
[FEHLER]
Das Ausführen von `btrfs balance` kann einen null-ptr-deref (Nullzeiger-Dereferenzierung) auslösen, bevor ein Datenchunk verschoben wird, wenn eine Metadatenkorruption dazu führt, dass sich ein Chunk im Chunk-Baum befindet, ohne dass entsprechende Blockgruppen im Arbeitsspeicher-Cache vorhanden sind:
KASAN: null-ptr-deref in range [0x0000000000000088-0x000000000000008f]
RIP: 0010:btrfs_may_alloc_data_chunk+0x40/0x1c0 fs/btrfs/volumes.c:3601 Call Trace: __btrfs_balance fs/btrfs/volumes.c:4217 [inline]
btrfs_balance+0x2516/0x42b0 fs/btrfs/volumes.c:4604 btrfs_ioctl_balance fs/btrfs/ioctl.c:3577 [inline]
btrfs_ioctl+0x25cf/0x5b90 fs/btrfs/ioctl.c:5313 ...
[URSACHE]
__btrfs_balance() durchläuft den Chunk-Baum auf der Festplatte und übergibt die logische bytenr des Chunks an btrfs_may_alloc_data_chunk(), bevor ein Datenchunk verschoben wird. Diese Hilfsfunktion fragt dann den im Arbeitsspeicher befindlichen Blockgruppen-Cache ab:
cache = btrfs_lookup_block_group(fs_info, chunk_offset); chunk_type = cache->flags; /* cache kann NULL sein */
Ein beschädigtes Abbild (Image) kann einen Chunk-Eintrag enthalten, dessen zugehöriger Blockgroup-Eintrag fehlt, sodass keine Blockgruppe jemals in den Cache eingefügt wird. In diesem Fall gibt btrfs_lookup_block_group() NULL zurück.
Der Code schützt dies nur mit ASSERT(cache), was bei deaktiviertem CONFIG_BTRFS_ASSERT zu einem No-Op (keine Operation) wird. Die nachfolgende Dereferenzierung von cache->flags führt daher zum Absturz des Kernels.
[BEHEBUNG]
Hinzufügen einer NULL-Prüfung nach btrfs_lookup_block_group() in btrfs_may_alloc_data_chunk() und Ausgeben einer Fehlermeldung zur besseren Klarstellung.
If you want to get best quality of vulnerability data, you may have to visit VulDB.