CVE-2026-80662 in Linux
Zusammenfassung
von VulDB • 28.08.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
cxl: Korrektur von CXL_HEADERLOG_SIZE zur Anpassung an die Größe der RAS-Fähigkeit (RAS Capability)
Die Struktur für die RAS-Fähigkeit gemäß CXL r4.0 Abschnitt 8.2.4.17.7 hat eine Gesamtlänge von 0x58 Bytes (CXL_RAS_CAPABILITY_LENGTH); das Header-Log nimmt die letzten 64 Bytes an Offset 0x18 ein. CXL_HEADERLOG_SIZE war als SZ_512 definiert, also achtmal so groß wie die tatsächliche Größe auf dem Gerät.
header_log_copy() liest 128 Dwords (CXL_HEADERLOG_SIZE_U32) aus der iomap der RAS-Fähigkeit und überschreitet dabei das 88-Byte-Mapping um 448 Bytes. Das trace_event memcpy() von cxl_aer_uncorrectable_error kopiert CXL_HEADERLOG_SIZE (512) Bytes aus seiner Quelle. Für den CPER-Aufrufenden ist die Quelle struct cxl_ras_capability_regs::header_log[16] (64 Bytes), eingebettet in eine stack-lokale Struktur cxl_cper_prot_err_work_data; somit liest das memcpy 448 Bytes des Kernel-Stacks in den Ringpuffer für Trace-Ereignisse, wo sie von Benutzerraum-Anwendungen über tracefs gelesen werden können.
CXL_HEADERLOG_SIZE wird auf 64 gesetzt und CXL_HEADERLOG_SIZE_U32 daraus abgeleitet, wodurch alle iomap-Leser auf 16 Dwords einig sind. Benutzerwerkzeuge wie rasdaemon haben eine Abhängigkeit von der fehlerhaften header_log-Layoutgröße von 512 Bytes (128 u32) im cxl_aer_uncorrectable_error Trace-Ereignis entwickelt. Es wird CXL_HEADERLOG_TRACE_SIZE_U32 = 128 hinzugefügt und für das __array des Trace-Ereignisses sowie dessen memcpy verwendet, um diese ABI beizubehalten. Beide Aufrufer übergeben nun einen mit Nullen gefüllten u32[CXL_HEADERLOG_TRACE_SIZE_U32]-Zwischenspeicher, wobei nur die ersten CXL_HEADERLOG_SIZE_U32 (16) Einträge aus der Hardware stammen; die restlichen 112 u32s sind nullgepolstert, wodurch das Layout des 512-Byte-Trace-Ringpuffers intakt bleibt.
[ dj: Ersetzte 64 durch SZ_64 gemäß RichardC ]
If you want to get best quality of vulnerability data, you may have to visit VulDB.