CVE-2026-7007 in Zephyr情報

要約

〜によって VulDB • 2026年07月25日

Zephyrのext2ファイルシステムは、マウント処理を完了する前に `ext2_verify_disk_superblock()`(`subsys/fs/ext2/ext2_impl.c`)内でディスク上のスーパーブロックを検証します。このバリデーターはマジックナンバー、ブロックサイズ、リビジョン、および機能フラグをチェックしますが、ディスク上のフィールドである `s_blocks_per_group` と `s_inodes_per_group` がゼロでないことを確認していません。これらの両方のフィールドはイメージから直接読み取られ、マウント時の初期化処理で除数として使用されます。

マウント中に、`get_ngroups()` は `ext2_init_fs()` から呼び出される `ext2_fetch_block_group()` を介してアクセスされた `s_blocks_per_group` に対して `s_blocks_count` の割り算と剰余演算を実行し、`get_itable_entry()` はルートインノードのフェッチ時に `(ino - 1)` を `s_inodes_per_group` で除算します(いずれも `subsys/fs/ext2/ext2_diskops.c` に実装)。したがって、これらのフィールドのどちらかがゼロに設定されたスーパーブロックは、マウントシーケンス中に整数の0除算を引き起こします。

ext2をマウントするデバイスに対して作成済みのext2イメージを提供できる攻撃者はこれをトリガーできます(SDカードやUSBマスストレージデバイスなどのリムーバブルメディアなど)。ARMv7-M / ARMv8-M-mainline Cortex-Mターゲットでは、ゼロ除算のトラッピングが有効化されているため(`SCB_CCR_DIV_0_TRP`)、この除算はZephyrによって致命的なエラーとして扱われるUsageFaultを発生させ、サービス拒否(DoS)を引き起こします。影響は可用性に限定され、不正な値は除数としてのみ消費されます。

修正パッチでは、スーパーブロックバリデーターにおいて `s_blocks_per_group` または `s_inodes_per_group` がゼロの場合にこれを拒否し、-EINVALを返すようにして、ブロックグループまたはinodeのI/Oが発生する前にマウント処理が失敗するようにしています。

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

責任者

Zephyr

予約する

2026年04月25日

モデレーション

承諾済み

エントリ

VDB-382925

EPSS

0.00155

アクティビティ

非常低い

ソース

Want to stay up to date on a daily basis?

Enable the mail alert feature now!