Article

GhostLock: 15 Jahre kritische Linux-Kernel-Lücke in allen Distributionen

Security Linux CVE-2026-43499 Kernel

Nebula Security hat GhostLock (CVE-2026-43499) veröffentlicht – eine kritische Linux-Kernel-Schwachstelle, die seit Linux 2.6.39 (2011) in jeder Distribution existierte. Der Bug ermöglicht lokale Privilege Escalation und Container Escape ohne besondere Berechtigungen.

Was GhostLock kann

Ein unprivilegierter lokaler Angreifer kann:

  1. Einen dangling Kernel-Pointer zu Kernel-Stack-Memory erhalten – nur mit regulären Threading-Syscalls
  2. Einen Pointer zu einer fast beliebigen Adresse schreiben
  3. Eine Function Table hijacken und Root-Zugriff erlangen

Google hat für die Exploit-Entwicklung $92.337 in kernelCTF bezahlt, bei 97% Stabilität.

Die Ursache

GhostLock wurde mit dem rtmutex-Redesign in 2011 eingeführt und war 15 Jahre unentdeckt. Der Bug in remove_waiter():

// Falsch auf dem Proxy-Pfad
waiter->task = NULL;

Der Code ist auf dem normalen slow path korrekt, wo current der Task ist, der den Waiter besitzt. Auf dem Proxy-Pfad ist current jedoch der Requeuer, nicht der Waiter. Der Waiter lebt auf dem Stack eines Tasks, der in futex_wait() schläft – und der Stack-Frame wird gepoppt, sobald der Task zu Userspace zurückkehrt.

Exploit-Pfad

Der Exploit nutzt:

  • Prefetch ASLR Leak: Kernel-Adressen ohne Info-Leak
  • CEA Spray: Kernel-Code-Ausführung kontrollieren
  • PR_SET_MM_MAP: Gefälschte Waiter-Objekte auf dem Stack
  • inet6_protos Hijack: Von Fake-Waiter zu kontrolliertem Write
  • DirtyMode: Final Privilege Escalation

Timeline

  • 2011: Bug in Linux 2.6.39 eingeführt
  • April 2026: Fix in Linux 7.1 (Commit 3bfdc63936dd)
  • Juli 2026: Öffentliche Disclosure

Was zu tun ist

Alle Linux-Distributionen ohne Patch sind betroffen. Upgrade auf die neueste LTS-Version. Für Systeme, die nicht sofort aktualisiert werden können:

  • RANDOMIZE_KSTACK_OFFSET aktivieren (erschwert den Exploit)
  • STATIC_USERMODE_HELPER konfigurieren (begrenzt Privilege Escalation)

Die Lücke zeigt einmal mehr, wie tief Kernel-Bugs sitzen können – 15 Jahre unbemerkt in produktivem Code.