CVE-2021-47350 in Linuxinfo

Zusammenfassung

von VulDB • 10.07.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

powerpc/mm: Behebung eines Lockups bei einem Kernel-Exec-Fault (Ausführungsfehler)

Der powerpc-Kernel ist nicht darauf vorbereitet, Exec-Faults vom Kernel zu verarbeiten. Insbesondere gibt die Funktion is_exec_fault() „false" zurück, wenn ein Exec-Fault durch den Kernel ausgelöst wird, da die Prüfung auf dem Lesen von current->thread.regs->trap basiert, das den Trap aus dem Benutzerbereich enthält.

Wenn beispielsweise der LKDTM-Test EXEC_USERSPACE provoziert wird, ist current->thread.regs->trap auf einen SYSCALL-Trap (0xc00) gesetzt, und der vom Kernel ausgelöste Fault wird von set_access_flags_filter() nicht als Exec-Fault erkannt.

Das Commit d7df2443cd5f („powerpc/mm: Fix spurious segfaults on radix with autonuma") hat dies klar definiert und ordnungsgemäß behandelt. Später entfernte das Commit d3ca587404b3 („powerpc/mm: Fix reporting of kernel execute faults") diese Behandlung und führte eine Prüfung basierend auf error_code ein. Hier liegt das Problem, da bei der Architektur 603 alle oberen Bits von SRR1 gelöscht werden, wenn der TLB-Instruktions-Fehlhandler (instruction miss handler) zur ISI-Routine zurückkehrt.

Bis zum Commit cbd7e6ca0210 („powerpc/fault: Avoid heavy search_exception_tables() verification") wurde ein Exec-Fault vom Kernel an einer Benutzeradresse indirekt durch das Fehlen eines Eintrags für diese Adresse in den Exception-Tables abgefangen. Nach diesem Commit verlässt sich der Kernel hauptsächlich auf KUAP oder die zentrale mm-Verarbeitung, um falsche Zugriffe von Benutzern zu erkennen. Hier ist der Zugriff jedoch nicht falsch, daher wird er vom mm verarbeitet. Es handelt sich um einen minor fault (untergeordneten Fehler), da PAGE_EXEC nicht gesetzt ist; set_access_flags_filter() sollte PAGE_EXEC setzen und das Problem wäre gelöst. Da is_exec_fault(), wie eingangs erklärt, „false" zurückgibt, bricht set_access_flags_filter()" ab, ohne das PAGE_EXEC-Flag zu setzen, was zu einem endlosen minor exec fault führt.

Da der Kernel nicht darauf vorbereitet ist, solche Exec-Faults zu verarbeiten, sollte für jeden vom Kernel ausgelösten Exec-Fault in bad_kernel_fault() reagiert werden, wie es vor dem Commit d3ca587404b3 der Fall war.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Reservieren

21.05.2024

Veröffentlichung

21.05.2024

Moderieren

akzeptiert

Eintrag

VDB-265680

CPE

bereit

EPSS

0.00181

KEV

nein

Aktivitäten

very low

Quellen

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!