CVE-2025-37964

Siemens ProductCERT Advisory SSA-019113

Beschreibung

Im Linux-Kernel wurde die folgende Schwachstelle behoben: x86/mm: Beseitigung des Zeitfensters, in dem TLB-Flushing versehentlich übersprungen werden kann tl;dr: Es gibt ein Zeitfenster im mm-Umschaltcode, in dem der neue CR3 gesetzt wird und der CPU TLB-Flushes für das neue mm zugesandt werden sollten. Allerdings hat should_flush_tlb() einen Fehler und unterdrückt den Flush. Dies wird behoben, indem das Zeitfenster erweitert wird, in dem should_flush_tlb() ein IPI sendet. Langversion: === Geschichte === Es gab einige Dinge, die zu dieser Situation führten. Zunächst wurde festgestellt, dass das Aktualisieren von mm_cpumask() zu teuer war und es daher träge gemacht wurde. Diese Trägheit verursachte jedoch unnötige IPIs an CPUs aufgrund des nun träge gewordenen mm_cpumask(). Daher wurde Code hinzugefügt, um mm_cpumask() periodisch auszudünnen[2]. Allerdings war diese Ausdünnung zu aggressiv und übersprang das Senden von TLB-Flushes an CPUs, die sie benötigten. Hier sind wir wieder. === Problem === Der zu aggressive Code in should_flush_tlb() tritt in diesem Zeitfenster auf: // Aktivieren Sie IPIs für diese CPU/mm-Kombination, aber nur // wenn should_flush_tlb() zustimmt: cpumask_set_cpu(cpu, mm_cpumask(next)); next_tlb_gen = atomic64_read(&next->context.tlb_gen); choose_new_asid(next, next_tlb_gen, &new_asid, &need_flush); load_new_mm_cr3(need_flush); // ^ Nachdem 'need_flush' auf false gesetzt wurde, MÜSSEN // IPIs an diese CPU gesendet und nicht ignoriert werden. this_cpu_write(cpu_tlbstate.loaded_mm, next); // ^ Erst ab diesem Punkt wird should_flush_tlb() // wahr! should_flush_tlb() unterdrückt TLB-Flushes zwischen load_new_mm_cr3() und dem Schreiben in 'loaded_mm', was ein Zeitfenster ist, in dem sie nicht unterdrückt werden sollten. Ups. === Lösung === Glücklicherweise ist das unscharfe "gerade dabei CR3 zu schreiben" Zeitfenster bereits mit loaded_mm==LOADED_MM_SWITCHING markiert. Eine einfache Überprüfung dieses Zustands in should_flush_tlb() reicht aus, um sicherzustellen, dass die CPU mit einem IPI anvisiert wird. Dies führt zu mehr TLB-Flush-IPIs. Aber das Zeitfenster ist relativ klein und ich erwarte keine messbare Leistungseinbuße. Aktualisieren Sie den Kommentar, wo LOADED_MM_SWITCHING geschrieben wird, da es noch einen weiteren Benutzer hinzugewonnen hat. Peter Z äußerte auch die Sorge, dass should_flush_tlb() möglicherweise 'loaded_mm' und 'is_lazy' nicht in der Reihenfolge beobachtet, in der sie von switch_mm_irqs_off() geschrieben werden. Fügen Sie eine Barriere hinzu, um sicherzustellen, dass sie in der Reihenfolge beobachtet werden, in der sie geschrieben wurden.

Metriken

Severity
high
kein öffentlicher PoC bekannt
7.8
Quelle: nvd-v3
8.3 %
Niedrig — CVE gehört zu den unteren 10 % der heute bewerteten CVEs.
0.2 %
Niedrig — Modell schätzt < 1 % Ausnutzungs-Wahrscheinlichkeit.
Veröffentlicht
2021-09-26 00:00 UTC

Re-Analyse & Statuswechsel

Chronologie der NVD-Audit-Events für diese CVE — Reanalyses, CVSS-Updates, CPE-Diffs.

  1. CVE Modified2026-07-30 06:22 UTC· 416baaa9-dc9f-4396-8d5f-8c081fb06d67
    • CVSS V3.1: AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Betroffene Betriebssysteme

  • linux

    amazon / amazon_linux

  • linux

    ubuntu / awsbionic

  • linux

    ubuntu / awsjammy

  • linux

    ubuntu / awsnoble

  • linux

    ubuntu / awsresolute

  • linux

    ubuntu / awsxenial

  • linux

    ubuntu / aws-6.8jammy

  • linux

    ubuntu / aws-hwexenial

  • linux

    ubuntu / azurejammy

  • linux

    ubuntu / azurenoble

  • linux

    ubuntu / azureresolute

  • linux

    ubuntu / azurexenial

  • linux

    ubuntu / azure-4.15bionic

  • linux

    suse / basesystem_module15

  • linux

    debian / debian_linux11.0

  • linux

    debian / debian_linux12.0

  • linux

    debian / debian_linux13.0

  • linux

    suse / development_tools_module15

  • linux

    redhat / enterprise_linux10.0

  • linux

    redhat / enterprise_linux7.0

  • linux

    redhat / enterprise_linux8.0

  • linux

    redhat / enterprise_linux9.0

  • linux

    redhat / enterprise_linux_aus8.4

  • linux

    redhat / enterprise_linux_aus8.6

Betroffene Produkte

Aus der Hersteller-/CERT-Meldung extrahierte Produkte und Versionsbereiche. Ein Version-Range wie „<4.14.6“ impliziert die Update-Empfehlung „auf 4.14.6 oder höher aktualisieren“.

  • arista

    cloudvision_agni2024.4.0 – 2025.2.2

  • arista

    cloudvision_portal2024.2.0 – 2026.1.0

  • arista

    velocloud_edge4.5.0 – 6.4.1

  • arista

    velocloud_gateway

  • arista

    velocloud_orchestrator

  • canonical

    ubuntu_linux

  • Citrix Systems

    Hypervisor8.2 CU1 LTSR

  • Citrix Systems

    XenServer8.4

  • Dell

    ECS3.8.1.0-3.8.1.7

  • Dell

    NetWorkerVirtual Edition

  • Dell

    NetWorkervProxy 19.13.0.3

  • Dell

    NetWorkervProxy 19.14

  • Dell

    PowerScale OneFS13.2.3

  • Dell

    PowerScale OneFSOneFS

  • Dell

    Secure Connect GatewayAppliance 5.32.00.18

  • gnupg

    libgcrypt1.11.0 – 1.11.3

  • gnupg

    libgcrypt1.12.0 – 1.12.2

  • gnupg

    libgcrypt1.8.8 – 1.10.4

  • Intel

    ProzessorCore Ultra 5

  • Intel

    ProzessorCore Ultra 7

  • Intel

    ProzessorCore Ultra 9

  • julia

    openssh_jll

  • netapp

    active_iq_unified_manager

  • netapp

    clustered_data_ontap

Quellen & Referenzen

Verknüpfte CVEs

406 weitere CVEs anzeigen
IDCVE-2025-37964
Siemens ProductCERT Advisory SSA-019113 — CVE-2025-37964 | NEOSEC Intel