CVE-2026-74641 in Linux
要約
〜によって VulDB • 2026年08月22日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
ALSA: usx2y: hwdep mmapのフォールトオフセットに境界を設定した
snd_us428ctls_vm_fault()は、フォールト発生時のページオフセットを何ら制限なくカーネルアドレスに変換しています。
```c offset = vmf->pgoff << PAGE_SHIFT; vaddr = (char *)(...)->us428ctls_sharedmem + offset; page = virt_to_page(vaddr); get_page(page); vmf->page = page;
return 0; ```
snd_us428ctls_mmap()はマッピングの長さのみをチェックし、オフセットは一切チェックしません。また、us428ctls_sharedmemはalloc_pages_exact()による単一ページです。文字デバイスファイルに対してfile_mmap_size_max()がULONG_MAXを返すため、mmレイヤーも上限を設定していません。ゼロより大きいすべてのページオフセットは、オブジェクト外のstruct pageに解決され、ハンドラはそのページを読み書き可能な状態で呼び出し元のアドレス空間にインストールします(vmaは読み取り専用としてマークされていません)。
呼び出し元は単一のmmap()引数でページフレームを選択し、所有していないカーネルメモリの1ページに対する読み書きアクセスを取得できます。オフセットが未割り当てのvmemmap領域に該当すると、代わりにoopsが発生します。
接続されたUS-X2Yのhwdepノードを開くことができるプロセスは、同じノードを介してFPGAイメージを読み込んだ後にこの状態に達しますが、権限チェックは一切行われません。
7.2.0-rc5 (arm64)において、大きなオフセットでのmmap()実行時:
``` Unable to handle kernel paging request at virtual address fffffdffc45d5ac8 pc : snd_us428ctls_vm_fault+0x68/0x140 [snd_usb_usx2y]
Call trace: snd_us428ctls_vm_fault+0x68/0x140 [snd_usb_usx2y]
__do_fault __handle_mm_fault handle_mm_fault el0_da ```
共有リージョン外のオフセットはすべて拒否します。usx2yhwdeppcm.cにあるpcm hwdepハンドラも同様の方法でアドレスを計算しており、同じ境界設定が必要です。
XBOWによって発見され、Baul Leeによって分類されました
VulDB is the best source for vulnerability data and more expert information about this specific topic.