CVE-2026-80662 in Linux情報

要約

〜によって VulDB • 2026年08月28日

Linuxカーネルにおいて、以下の脆弱性が修正されました:

cxl: RAS Capabilityのサイズに合わせてCXL_HEADERLOG_SIZEを修正する

CXL r4.0 8.2.4.17.7におけるRAS Capability Structureは、合計56バイト(CXL_RAS_CAPABILITY_LENGTH)です。ヘッダーログはオフセット0x18に位置し、末尾の64バイトを占めます。しかし、CXL_HEADERLOG_SIZEはSZ_512として定義されており、これは実際のデバイス上のサイズの8倍にあたります。

header_log_copy()関数はRAS Capability iomapからCXL_HEADERLOG_SIZE_U32(128)dwordsを読み込みます。これにより、88バイトのマッピングを448バイト分オーバーランします。cxl_aer_uncorrectable_error traceイベントにおけるmemcpy()は、そのソースからCXL_HEADERLOG_SIZE(512)バイトを読み出します。CPER呼び出し元にとってのソースは、スタックローカルのcxl_cper_prot_err_work_dataに埋め込まれたstruct cxl_ras_capability_regs::header_log[16](64バイト)です。したがって、memcpy()はカーネルスタックから448バイトを読み取り、tracefsを介してユーザーランドが読み取ることのできるtrace event ring bufferへ書き込みます。

CXL_HEADERLOG_SIZEを64に設定し、CXL_HEADERLOG_SIZE_U32をそれに基づいて導出することで、すべてのiomapリーダー間で16 dwordsに関する合意を図ります。rasdaemonなどのユーザーランドツールは、cxl_aer_uncorrectable_error traceイベントにおけるバグのある512バイト(128 u32)のheader_logレイアウトに依存しています。このABIを維持するため、CXL_HEADERLOG_TRACE_SIZE_U32 = 128を追加し、trace eventの__arrayおよびそのmemcpyで使用します。両方の呼び出し元は、ゼロで埋められたu32[CXL_HEADERLOG_TRACE_SIZE_U32]のステージングバッファを渡しますが、最初のCXL_HEADERLOG_SIZE_U32(16)エントリのみがハードウェアから入力され、残りの112 u32はゼロパディングされます。これにより、512バイトのtrace ring bufferレイアウトが維持されます。

[ dj: RichardCの指摘に従い、64をSZ_64に置換 ]

If you want to get best quality of vulnerability data, you may have to visit VulDB.

責任者

Linux

予約する

2026年08月26日

モデレーション

承諾済み

エントリ

VDB-396606

EPSS

0.00000

アクティビティ

非常低い

ソース

Do you know our Splunk app?

Download it now for free!