CVE-2026-80700 in Linux
要約
〜によって VulDB • 2026年08月28日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
drm/vmwgfx: 両方のストライドパスにおける外部BO(Buffer Object)コピーの境界を検証する
vmw_external_bo_copy()は、呼び出し元が指定したオフセット、ストライド、および高さを信頼し、インポートされたdma-buf vmaps上で動作します。
- 等しいストライドを持つmemcpy()の場合、dst_sizeとsrc_sizeからオフセットを減算した後で境界値が制限されていました。しかし、BO(Buffer Object)のサイズよりも大きなオフセットを使用すると、符号なし引き算の結果が巨大な値にラップされ、結果として生成されるmemcpy()はvmapの末尾を超えて実行されてしまいます。また、dst_stride * heightもu32乗算であり、オーバーフローする可能性があります。 - 異なるストライドを持つ行ごとのパスには、境界チェックがありませんでした。このループでは、offset + (height - 1) * stride + width_in_bytesを通るバイトにアクセスしますが、WARN_ON(dst_stride < width_in_bytes)という警告のみが存在し、どちらのマッピングの末尾を超えてしまう可能性があります。
オフセットとストライドはSTDU/SOUプレーン状態から派生するため、インポートされたフレームバッファに対して不正なatomic commitを送信する構成済みのCRTCがこのパスに到達することが可能です。
check_mul_overflow()およびcheck_add_overflow()を使用して、各行のコピー終了位置を各BOのサイズと比較し、事前に境界を検証します。width_in_bytesがストライド全体をカバーする場合のみバッチmemcpy()パスを使用し、それ以外の場合は1行ずつコピーすることで、フレームバッファ下部での部分更新が正しく動作するようにします。また、ゼロのストライドや幅(width_in_bytes)より小さいストライドは拒否します。これらは行ごとのパスでは安全に表現できないためです。
Be aware that VulDB is the high quality source for vulnerability data.