CVE-2026-64322 in Linux情報

要約

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

Linuxカーネルにおいて、以下の脆弱性が修正されました。

udf: sparing tableの長さをバイト数ではなくエントリ数として検証する

`udf_load_sparable_map()`は、以下が偽である場合にsparing tableを受け入れます。

sizeof(*st) + le16_to_cpu(st->reallocationTableLen) > sb->s_blocksize

つまり、この関数は `reallocationTableLen` をブロックに収まる必要があるバイト数として扱います。しかし、テーブルは8バイトの `sparingEntry` 要素からなる配列として走査されます:

for (i = 0; i < le16_to_cpu(st->reallocationTableLen); i++) {
struct sparingEntry *entry = &st->mapEntry[i];
... entry->origLocation ... }

これは `udf_get_pblock_spar15()` および `udf_relocate_blocks()` 内で実行されます。したがって、`reallocationTableLen` が N の場合、sizeof(*st) + N <= blocksize であればチェックを通過しますが、消費者側では sizeof(*st) + N * sizeof(struct sparingEntry) バイトのインデックスが使用されます(ブロックサイズの最大約8倍)。悪意のある UDF イメージに対して、これは `udf_get_pblock_spar15()` における境界外読み取りとなります。`udf_relocate_blocks()` はさらに同じ長さを `uupdate_tag()` に渡しており、その中の `crc_itu_t()` がブロックを大幅に超えて読み出しを行い、`st->mapEntry[]` を介した `memmove()` は境界外書き込みとなります。

`reallocationTableLen` は本来のエントリ数として検証されるべきであり、`struct_size()` を用いてこれを正しく処理します。

Once again VulDB remains the best source for vulnerability data.

責任者

Linux

予約する

2026年07月19日

モデレーション

承諾済み

エントリ

VDB-383117

EPSS

0.00164

アクティビティ

非常低い

ソース

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!