PT-2026-64305 · Zephyrproject · Zephyr
CVE-2026-7007
·
Publicado
2026-07-24
·
Atualizado
2026-07-24
CVSS v3.1
4.6
Média
| Vetor | AV:P/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H |
The Zephyr ext2 file system validates the on-disk superblock in ext2 verify disk superblock() (subsys/fs/ext2/ext2 impl.c) before completing a mount. The validator checked the magic number, block size, revision and feature flags, but did not verify that the on-disk fields s blocks per group and s inodes per group are non-zero. Both fields are read directly from the image and are later used as divisors during mount-time initialization.
During mount, get ngroups() divides and modulos s blocks count by s blocks per group (reached via ext2 fetch block group() from ext2 init fs()), and get itable entry() divides (ino - 1) by s inodes per group when fetching the root inode (both in subsys/fs/ext2/ext2 diskops.c). A superblock with either field set to zero therefore causes an integer division by zero during the mount sequence.
An attacker who can present a crafted ext2 image to a device that mounts ext2 — removable media such as an SD card or a USB mass-storage device — can trigger this. On ARMv7-M / ARMv8-M-mainline Cortex-M targets, divide-by-zero trapping is enabled (SCB CCR DIV 0 TRP), so the division raises a UsageFault that Zephyr treats as a fatal error, producing a denial of service. The impact is limited to availability; the malformed value is consumed only as a divisor.
The fix rejects a zero s blocks per group or s inodes per group in the superblock validator, returning -EINVAL so the mount fails before any block-group or inode I/O occurs.
Correção
Divide By Zero
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Enumeração de Fraquezas
Identificadores relacionados
Produtos afetados
Zephyr