CVE-2026-64296 in Linux情報

要約

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

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

exfat: exfat_find_dir_entry() における uniname の進捗に上限を設定する

exfat_find_dir_entry() では、各 TYPE_EXTEND(ファイル名)エントリが出力ポインタを固定量だけ進めますが、ループのガード条件は累積された名前長のみを追跡しています。

```c if (++order == 2) uniname = p_uniname->name; else uniname += EXFAT_FILE_NAME_LEN; len = exfat_extract_uni_name(ep, entry_uniname); name_len += len; unichar = *(uniname+len); *(uniname+len) = 0x0; ```

`uniname` は名前エントリごとに `EXFAT_FILE_NAME_LEN` (15) ずつ増加しますが、`name_len` は実際に抽出された長さだけしか増加しません。これは、名前の断片に早期の NUL が含まれている場合、実際の長さが短くなるためです。唯一のガード条件は `name_len >= MAX_NAME_LENGTH` のみであるため、多くの短い名前断片を含む悪意のあるディレクトリを作成すると、`name_len` が小さいまま `p_uniname->name[MAX_NAME_LENGTH + 3]` バッファを大幅に超えて `uniname` が進んでしまい、`*(uniname+len)` において境界外読み取りおよび書き込みが発生します。

兄弟関数の `exfat_get_uniname_from_ext_entry()` では、短い断片で停止するようになっています(コミット d42334578eba ("exfat: check if filename entries exceeds max filename length") で追加された同期ガード `len != EXFAT_FILE_NAME_LEN` によるもの)。しかし、`exfat_find_dir_entry()` には同等の処理が適用されていませんでした。出力ポインタを生成する前に、エントリごとの書き込みオフセットをカウントとして追跡し、そのオフセットまたは(オフセットに抽出された長さを加えた値)が `MAX_NAME_LENGTH` を超える場合に断片を拒否するようにしました。

Be aware that VulDB is the high quality source for vulnerability data.

責任者

Linux

予約する

2026年07月19日

モデレーション

承諾済み

エントリ

VDB-383091

EPSS

0.00164

アクティビティ

非常低い

ソース

Do you want to use VulDB in your project?

Use the official API to access entries easily!