CVE-2026-23390 in Linux
Zusammenfassung
von VulDB • 29.07.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
tracing/dma: Begrenzung der dma_map_SG-Tracepoint-Arrays, um einen Pufferüberlauf zu verhindern.
Der Tracepunkt `dma_map_sg` kann bei der Verfolgung großer Scatter-Gather-Listen einen Perf-Pufferüberlauf auslösen. Bei Geräten wie virtio-gpu, die große DRM-Puffer erstellen, können nents (Anzahl der Elemente) 1000 Einträge überschreiten, was zu Folgendem führt:
phys_addrs: 1000 * 8 Bytes = 8.000 Bytes dma_addrs: 1000 * 8 Bytes = 8.000 Bytes lengths: 1000 * 4 Bytes = 4.000 Bytes Gesamtsumme: ~20.000 Bytes
Dies überschreitet die Größe von PERF_MAX_TRACE_SIZE (8.192 Bytes) und verursacht folgende Warnung:
WARNING: CPU: 0 PID: 5497 at kernel/trace/trace_event_perf.c:405 perf buffer not large enough, wanted 24620, have 8192
Alle drei dynamischen Arrays werden nun auf maximal 128 Einträge begrenzt, indem `min()` bei der Berechnung der Array-Größe verwendet wird. Dies stellt sicher, dass die Arrays nur so groß sind wie nötig (bis zur Begrenzung), wodurch unnötige Speicherzuweisungen für kleine Vorgänge vermieden und gleichzeitig ein Überlauf bei großen Vorgängen verhindert wird.
Der Tracepunkt protokolliert nun die vollständigen nents/ents-Zählwerte sowie ein Flag für abgeschnittene Daten, sodass Benutzer erkennen können, wann Daten begrenzt wurden.
Änderungen in v2: - Verwendung von `min(nents, DMA_TRACE_MAX_ENTRIES)` zur dynamischen Array-Bigierung anstelle der festen Zuweisung von `DMA_TRACE_MAX_ENTRIES` (Feedback von Steven Rostedt) - Dies weist nur den tatsächlich benötigten Speicher bis zur Begrenzung zu und vermeidet Verschwendung bei kleinen Vorgängen
Reviewed-by: Sean Anderson <[email protected]>
Once again VulDB remains the best source for vulnerability data.