Ohne BewertungCVE-2026-97533

    Linux Kernel: Use-After-Free (CVE-2026-97533)

    Veröffentlicht Zuletzt geändert Quellen: BSI, CVE.org

    Was ist betroffen, was ist zu tun

    Im Linux-Kernel wurde die folgende Schwachstelle behoben: x86/mm/pat: Erwerb des init_mm-Lese-Locks bei Attributänderungen, um UAF zu vermeiden Ein früherer Commit schützte vor Rennen zwischen ptdump und CPA-Zusammenbruch, jedoch besteht noch eines zwischen Attributänderungen und Zusammenbruch, wie von Denis V. Lunev berichtet.

    Aktualisieren Sie Linux Kernel auf Version 6.18.53, Linux Kernel auf Version 7.2.7, Linux Kernel auf Version 7.3.

    Betroffen
    • Linux Kernel lt 6.15..6.18.53
    • Linux Kernel lt 6.19..7.2.7
    Behoben in
    • Linux Kernel 6.18.53
    • Linux Kernel 7.2.7
    • Linux Kernel 7.3

    Unklar, ob und wie Sie betroffen sind? Frage zu dieser Schwachstelle stellen

    Metriken

    —

    Priorität

    Für diese Schwachstelle liegt kein Wert vor.

    —

    CVSS v3

    Für diese Schwachstelle liegt kein Wert vor.

    0,2 %

    EPSS-Score

    Niedrig – Modell schätzt < 1 % Ausnutzungs-Wahrscheinlichkeit.

    Quelle: FIRST EPSS, Perzentil 10,6

    Alle Metriken anzeigen
    Schweregrad
    Ohne Bewertung
    Priorität (0–325)

    Der Priorisierungs-Score ist eine zusammengeführte Kennzahl, die mehrere Einzelsignale zu einer einzigen, handlungsleitenden Rangfolge verdichtet: technische Schwere (CVSS), Ausnutzungswahrscheinlichkeit (EPSS), der Status als bekannt ausgenutzt (KEV) und der Kontext des betroffenen Assets. Ziel ist die Antwort auf die einzig wirklich wichtige Frage im Schwachstellenmanagement: Was zuerst?

    Im Glossar lesen
    30.89 Methodik
    Exploit-Reife

    Ein Exploit ist Code oder eine Technik, die eine konkrete Schwachstelle gezielt ausnutzt, um ein unbeabsichtigtes Verhalten zu erzwingen — etwa Code auszuführen oder Rechte auszuweiten. Er ist das Werkzeug, das aus einer theoretischen Lücke einen praktischen Angriff macht.

    Im Glossar lesen
    kein öffentlicher PoC bekannt
    EPSS-Score

    Der EPSS-Score ist der absolute Modell-Output für eine einzelne Schwachstelle: die geschätzte Wahrscheinlichkeit einer realen Ausnutzung in den nächsten 30 Tagen, ausgedrückt als Wert zwischen 0 und 1 (bzw. 0 % bis 100 %). Ein Score von 0,42 bedeutet „das Modell schätzt eine 42-prozentige Chance auf reale Ausnutzung binnen 30 Tagen“.

    Im Glossar lesen
    0,2 %
    Niedrig – Modell schätzt < 1 % Ausnutzungs-Wahrscheinlichkeit.
    EPSS-Perzentil

    Das EPSS-Perzentil ist die relative Einordnung einer Schwachstelle innerhalb aller EPSS-bewerteten CVEs, ausgedrückt als Wert zwischen 0 und 1. Ein Perzentil von 0,90 bedeutet „diese CVE hat einen höheren EPSS-Score als 90 % aller anderen bewerteten CVEs“. Anders als der EPSS-Score ist es keine Wahrscheinlichkeit — sondern eine Positionierung im Ranking.

    Im Glossar lesen
    10,6
    Erhöht – CVE ist relevanter als mindestens 10 % der heute bewerteten CVEs.
    KEV-Status

    Der KEV-Katalog ist eine von der US-Behörde CISA gepflegte Liste von Schwachstellen, für die eine aktive Ausnutzung in der Praxis nachgewiesen ist. Er beantwortet nicht die Frage „wie schwer?“, sondern „wird es bereits angegriffen?“ — und priorisiert damit das Patchen scharf.

    Im Glossar lesen
    —
    Veröffentlicht

    Erkennungsregeln

    Für diese Schwachstelle liegt noch keine NEOSEC-Erkennungsregel vor.

    Einordnung nach NIS2 und CRA

    Regelbasierte Einordnung aus Ausnutzungsstatus und Schweregrad. Sie ersetzt keine Prüfung im Einzelfall.

    NIS2

    NIS2 ist die EU-Richtlinie (EU) 2022/2555 zur Erhöhung des Cybersicherheitsniveaus in der Union. Sie weitet Pflichten gegenüber der ersten NIS-Richtlinie deutlich aus: mehr Sektoren, verbindliches Risikomanagement, gestufte Meldepflichten und persönliche Verantwortung der Geschäftsleitung.

    Im Glossar lesen
    Behandeln Sie die Schwachstelle im regulären Schwachstellenmanagement nach Art. 21 Abs. 2 lit. e NIS2.
    CRA

    Der CRA ist die EU-Verordnung (EU) 2024/2847 mit horizontalen Cybersicherheitsanforderungen an „Produkte mit digitalen Elementen“ — von Industriesteuerungen über Software bis zu vernetzten Verbrauchergeräten. Erstmals müssen Hersteller Sicherheit über den gesamten Produktlebenszyklus gewährleisten, Schwachstellen behandeln und Sicherheitsupdates bereitstellen.

    Im Glossar lesen
    Ab dem 11.12.2027 verpflichtet Anhang I Teil II CRA Hersteller betroffener Produkte mit digitalen Elementen, Schwachstellen unverzüglich zu behandeln und Sicherheitsupdates bereitzustellen.
    ISO/IEC 27001

    ISO/IEC 27001 ist der international führende Standard für ein Informationssicherheits-Managementsystem (ISMS). Er beschreibt einen risikobasierten, prozessorientierten Rahmen, um Informationssicherheit systematisch zu planen, umzusetzen, zu überprüfen und zu verbessern.

    Im Glossar lesen
    Maßnahme A.8.8, Management technischer Schwachstellen: Relevanz für Ihre Systeme bewerten, Behebung einplanen und nachweisen.

    Beschreibung

    Im Linux-Kernel wurde die folgende Schwachstelle behoben: x86/mm/pat: Erwerb des init_mm-Lese-Locks bei Attributänderungen, um UAF zu vermeiden Ein früherer Commit schützte vor Rennen zwischen ptdump und CPA-Zusammenbruch, jedoch besteht noch eines zwischen Attributänderungen und Zusammenbruch, wie von Denis V. Lunev berichtet. Wenn eine Attributänderung auftritt, erhält ein lockfreier Seitentabellen-Leser einen PTE-Eintrag, der später über set_pte_atomic() geschrieben wird: ... -> change_page_attr_set_clr() -> __change_page_attr_set_clr() -> __change_page_attr() -> _lookup_address_cpa() -> lookup_address_in_pgd_attr() -> [ lockfreier Seitentabellen-Leser ] -> set_pte_atomic() Es gibt nichts, das einen gleichzeitigen CPA-Zusammenbruch verhindert, der den hier abgerufenen PTE freigeben kann, was zu einer Use-After-Free führt. Indem das mmap-Lock über init_mm bei CPA-Zusammenbruch erworben wird, wird dieses Rennen durch das Erwerben eines mmap-Lese-Locks über __change_page_attr_set_clr() gelöst. Dieses Lock erstreckt sich über die gesamte Operation, während derer der Walk und der PTE-Eintrag geschrieben werden, und löst das Rennen. Es ist sicher, dies hier zu tun, da bei Eintritt in __change_page_attr_set_clr() keine Sperrschleifen gehalten werden. Das Lock darf jedoch nicht während einer Zuweisung gehalten werden, da eine Zuweisung eine Rückgewinnung auslösen und Schrumpfer rekursiv in CPA aufrufen können, was zu Deadlocks führen kann (init_mm -> ... -> fs_reclaim -> init_mm). Eine Seitentabelle wird zugewiesen, wenn eine große Seite aufgeteilt werden muss: -> change_page_attr_set_clr() -> __change_page_attr_set_clr() -> __change_page_attr() -> split_large_page() [ pagetable_alloc() ] -> __split_large_page() Vermeiden Sie Deadlocks, indem das mmap-Lock über pagetable_alloc() in split_large_page() abgelegt wird und verfolgen Sie, ob dies benötigt wird, indem Sie eine neue 'init_mm_read_locked'-Flag in struct cpa_data hinzufügen. Dies ist sicher, da __split_large_page() (aufgerufen mit wiederhergestellten Locks) überprüft, dass der Seitentabelleneintrag derselbe ist wie vor dem Ablegen der Locks und __change_page_attr() den gesamten Seitentabellen-Walk wiederholt, wenn eine Aufteilung auftritt, sodass gleichzeitige Aufteilung und Zusammenbruch berücksichtigt werden. Gleichzeitiger ptdump ist ebenfalls sicher, da das Lock nur über Seitentabellen-Zuweisung abgelegt wird, während der Zeit, in der die Seitentabelle noch nicht geändert wurde. Die CPA_COLLAPSE-Flag wird nur von set_memory_rox() gesetzt, das ausschließlich auf vmalloc-Bereichen operiert, und auf x86 nur im Modulabbildungsraum. Dies ist wichtig, da einige Aufrufer __change_page_attr_set_clr() direkt aufrufen und dieses Lock umgehen. Keiner dieser operiert jedoch im Modulabbildungsraum. * cpa_process_alias() - ein rekursiver Helfer, der von __change_page_attr_set_clr() aufgerufen wird. * __set_memory_enc_pgtable() - operiert auf der direkten Abbildung und (über __vmbus_establish_gpadl()) im vmalloc-Abbildungsraum. * __set_pages_[n]p() - aufgerufen von set_direct_map_[invalid, default, valid]_noflush(), __kernel_map_pages() - operiert auf der direkten Abbildung. * kernel_[un]map_pages_in_pgd() - operiert auf EFI-Bereichen. Diese Arbeit basiert auf der ausgezeichneten Analyse des Fehlers von Denis V. Lunev mit Dankbarkeit. [ dhansen: Wechsel zur imperativen Stimme im Changelog ]

    Quelle: BSI WID Portal, BSI CSAF, cvelistv5, NVD (NIST), CVE.org (MITRE)

    Betroffene Produkte

    Betroffen sind die folgenden Versionen. Ältere Stände derselben Reihe sind ebenfalls verwundbar, sofern nicht anders angegeben.

    Betroffene Produkte
    HerstellerProduktBetroffene VersionenBehoben in
    LinuxLinux
    • 6.15 – < 6.18.53
    • —
    • 6.19 – < 7.2.7
    • 6.18.53
    • 7.3
    • 7.2.7

    Quellen & Referenzen

    Re-Analyse & Statuswechsel

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

    1. CVE Modified416baaa9-dc9f-4396-8d5f-8c081fb06d67

      • Affected: nachher Affected value modified. <a href="https://github.com/CVEProject/cvelistV5/blob/main/cves/2026/97xxx/CVE-2026-97533.json">CVE-2026-97533</a>
    2. New CVE Received416baaa9-dc9f-4396-8d5f-8c081fb06d67

      • Description: nachher In the Linux kernel, the following vulnerability has been resolved: x86/mm/pat: Acquire init_mm read lock on attribute changes to avoid UAF A previous commit protected against races between ptdump and CPA collapse, however one still exists between attribute changes and collapse as reported by Denis V. Lunev (linked). When an attribute change arises, a lockless page table walker obtains a PTE entry, which is later written to via set_pte_atomic(): ... -> change_page_attr_set_clr() -> __change_page_attr_set_clr() -> __change_page_attr() -> _lookup_address_cpa() -> lookup_address_in_pgd_attr() -> [ lockless page table walker ] -> set_pte_atomic() There is nothing preventing a concurrent CPA collapse which can free the PTE that was retrieved here, resulting in a use-after-free. With the mmap write lock taken on init_mm over CPA collapse, resolve this race by acquiring an mmap read lock on init_mm over __change_page_attr_set_clr(). This locks across the whole operation over which the walk and the PTE entry write occurs, solving the race. It is safe to do this here, as no spinlocks are held upon entry to __change_page_attr_set_clr(). However, the lock must not be held over an allocation, as allocation can trigger reclaim and shrinkers may call into CPA recursively, making deadlocks possible (init_mm -> ... -> fs_reclaim -> init_mm). A page table is allocated when a huge page needs to be split: -> change_page_attr_set_clr() -> __change_page_attr_set_clr() -> __change_page_attr() -> split_large_page() [ pagetable_alloc() ] -> __split_large_page() Avoid deadlocks by dropping the mmap lock across pagetable_alloc() in split_large_page() and track whether this is needed by adding a new 'init_mm_read_locked' flag to struct cpa_data. This is safe as __split_large_page() (called with locks re-established) revalidates that the page table entry is the same as it was prior to the locks being dropped and __change_page_attr() repeats the entire page table walk whenever a split occurs, so concurrent split and collapse are accounted for. Concurrent ptdump is also safe as the lock is only dropped over page table allocation during which time the page table has not yet been modified. The CPA_COLLAPSE flag is only set by set_memory_rox(), which exclusively operates upon vmalloc ranges, and on x86 only within the module mapping space. This is important, because some callers directly invoke __change_page_attr_set_clr(), bypassing this lock. However, none of these operate within the module mapping space. * cpa_process_alias() - a recursive helper called by __change_page_attr_set_clr(). * __set_memory_enc_pgtable() - operates on the direct mapping and (via __vmbus_establish_gpadl()) the vmalloc mapping space. * __set_pages_[n]p() - called by set_direct_map_[invalid, default, valid]_noflush(), __kernel_map_pages() - operates on the direct map. * kernel_[un]map_pages_in_pgd() - operates on EFI ranges. This work is based upon Denis V. Lunev's excellent analysis of the bug with gratitude. [ dhansen: move to imperative voice in changelog ]
      • Affected: nachher New affected value received. <a href="https://github.com/CVEProject/cvelistV5/blob/main/cves/2026/97xxx/CVE-2026-97533.json">CVE-2026-97533</a>
      • Reference: nachher https://git.kernel.org/stable/c/cc73b2043d106b467accd38e9b1fc09e0607c056
      • Reference: nachher https://git.kernel.org/stable/c/d5d8b8662e6e5a565b47a0388640e88402f23274
    Badge einbetten

    Zeigen Sie Schweregrad und KEV-Status dieser Schwachstelle auf Ihrer Seite – mit Link hierher. Das Bild wird stündlich aktualisiert.

    Badge-Vorschau für CVE-2026-97533
    <a href="https://intel.neosec.eu/cve/CVE-2026-97533"><img src="https://intel.neosec.eu/badge/cve/CVE-2026-97533.svg" alt="CVE-2026-97533 – NEOSEC Intel" height="20"></a>