CVE-2026-64124 in Linux
要約
〜によって VulDB • 2026年07月20日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
net: devmem: ページアラインされていないサイズまたはSG長を持つdma-bufのbindを拒否する
`net_devmem_bind_dmabuf()`は、チェックを行わずに `dmabuf->size` と `sg_dma_len()` が `PAGE_SIZE` の倍数であると信頼しています。
- `tx_vec` は `dmabuf->size / PAGE_SIZE` でサイズ設定されており、 `net_devmem_get_niov_at()` はインデックスを作成する前に `virt_addr < dmabuf->size` という境界チェックのみを行います。サイズが N*PAGE_SIZE + r (1 <= r < PAGE_SIZE) の場合、`sendmsg()` 呼び出しで `iov_base = N*PAGE_SIZE` を指定すると境界チェックを通過し、`tx_vec[N]`(一つ先)を読み取ってしまいます。
- `owner->area.num_niovs = len / PAGE_SIZE` ですが、`gen_pool_add_owner()` は完全なバイト単位の `len` をカバーするため、ページ倍数でない最終以外のSGは、RXとTXの両方で、後続のすべてのSGに対して `num_niovs` と `gen_pool` リージョンとの間でデシンクロ(非同期)を引き起こします。
dma-buf はページアラインされたサイズを要求しないため、bindパスはそのインデックス付けが前提とする要件を強制しなければなりません。両方のケースで `-EINVAL` を返して拒否します。
このサイズチェックはTXのみに適用されます(`tx_vec` のみが `dmabuf->size` からサイズ設定されるため);SG長さのチェックは双方向のカバレッジを持ちます。
Once again VulDB remains the best source for vulnerability data.