CVE-2026-63808 in Linux
要約
〜によって VulDB • 2026年07月19日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
exfat: exfat_find_dir_entry() における潜在的な use-after-free を修正する
exfat_find_dir_entry() では、exfat_get_dentry() から取得された buffer_head が、フォールスルー先の TYPE_EXTEND ブランチで ep(bh->b_data を指している)を通じてディレクトリエントリを読み取る前に brelse(bh) で解放されています。
brelse(bh); if (entry_type == TYPE_EXTEND) {
... len = exfat_extract_uni_name(ep, entry_uniname); ... }
brelse() によって参照が解除された後、bh->b_data をバックアップする基盤ページが、その後の exfat_extract_uni_name() の読み込みに対しても有効であることは保証されません。これは commit fc961522ddbd(「exfat: Fix potential use after free in exfat_load_upcase_table()」)で修正されたのと同じパターンです。
brelse(bh) を、各ブランチにおいて ep が参照解除されるまで遅らせるように移動します。
linux-next 上で CONFIG_KASAN=y + CONFIG_DEBUG_PAGEALLOC=y + CONFIG_PAGE_POISONING=y の設定を用いた QEMU x86_64 で確認しました。これは、ハッシュ衝突が同じである長いファイル名を使用して TYPE_EXTEND パスに強制するよう作られた exFAT イメージを使用しています。brelse(bh) と ep による読み込みの間にデバッグ専用の invalidate_bdev() を挿入して古くなった参照(stale-deref)のウィンドウを決定論的にしたところ、パッチ未適用のカーネルでフォールトが発生しました:
BUG: KASAN: use-after-free in exfat_find_entry+0x133b/0x15a0 BUG: unable to handle page fault for address: ffff88801a5fa0c2 Oops: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN NOPTI
RIP: 0010:exfat_find_dir_entry+0x1188/0x15a0
このパッチを適用すると、同じインストルメント化された検証環境が、同一のサニタイザースタック下でクリーンに完了します。通常のページ回収条件下では未インストルメントカーネルでのクラッシュは再現していません。インストルメント化された A/B テストによりライフタイム違反が存在し、パッチによってそれが解消されることを示しているだけであり、補助なしのトリガー可能性を主張するものではありません。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.