CVE-2026-74580
vhost: vring 再構成時に vring メタデータキャッシュをリセットする
- 公開済み
- 2026/08/21
- 更新済み
- 2026/10/16
- CNA の割り当て
- Linux
- 観察された証拠
- 2026/10/19
vhost: vring 再構成時に vring メタデータキャッシュをリセットする
nvd · CVSS 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H低 · 今後 30 日間
EPSS は統計的な推定値であり、確実性や影響の尺度ではありません。 CVSS、KEV ステータス、暴露、環境と組み合わせます。
Linuxカーネルにおいて、以下の脆弱性が修正されました: vhost: vring再構成時にvringメタデータキャッシュをリセットする。vq->meta_iotlb[]は各vringメタデータ領域を支えるvhost_iotlb_mapをキャッシュしており、iotlb_access_ok()はキャッシュヒット時に早期リターンし、そのヒットを領域がすでに検証済みである証拠とみなします: if (vhost_vq_meta_fetch(vq, addr, len, type)) return true; このキャッシュはVHOST_IOTLB_UPDATEおよびVHOST_IOTLB_INVALIDATE時、デバイスIOTLBの(再)初期化時、およびvqリセット時にリセットされますが、VHOST_SET_VRING_ADDRがvq->desc、vq->avail、vq->usedを置き換える場合や、VHOST_SET_VRING_NUMが領域サイズを変更する場合にはリセットされません。デバイスIOTLBがアタッチされている場合、vqが稼働中でも両方のioctlが受け入れられ、どちらもioctl時にアドレスを検証しません: アドレスがGIOVAであるためvq_access_ok()とvq_log_used_access_ok()は早期にtrueを返し、検証はプリフェッチ時に先送りされます。一度キャッシュが設定されると、この先送りされた検証はもはや実行されません -- vq_meta_prefetch()は古いエントリにヒットしてtrueを返し -- vhost_vq_meta_fetch()は、マッピングがもはやカバーしていないアドレスに対してmap->addr + addr - map->startとして古いマッピングを通じて変換を続けます。vhost_copy_to_user()とvhost_copy_from_user()はその結果を__copy_to_user()と__copy_from_user()で消費しますが、これらも結果をチェックしないため、その後のused ring更新やディスクリプタフェッチが、IOTLBが実際にマップしている領域外のメモリにアクセスしてしまいます。vringが再構成されるたびにメタデータキャッシュをリセットし、新しいアドレスがiotlb_access_ok()のスローパスを通じて再度処理されるようにしてください。
開示されたLinuxカーネル脆弱性に関するPoCのCコードと解説。CVEごとのエクスプロイトのソースコードと技術分析を含む。
脆弱性情報は、自分が所有しているシステム、またはテストを許可されているシステムでのみ使用してください。 Kitploit は公開研究メタデータにリンクしており、エクスプロイト コードや悪意のあるペイロードは保存しません。