PT-2026-64305 · Zephyrproject · Zephyr

CVE-2026-7007

·

Publicado

2026-07-24

·

Atualizado

2026-07-24

CVSS v3.1

4.6

Média

VetorAV: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

CVE-2026-7007

Produtos afetados

Zephyr