Sensitive Mounts
Ujawnienie /proc
i /sys
bez odpowiedniej izolacji przestrzeni nazw wprowadza znaczne ryzyko bezpieczeństwa, w tym zwiększenie powierzchni ataku i ujawnienie informacji. Te katalogi zawierają wrażliwe pliki, które w przypadku niewłaściwej konfiguracji lub dostępu przez nieuprawnionego użytkownika mogą prowadzić do ucieczki z kontenera, modyfikacji hosta lub dostarczenia informacji ułatwiających dalsze ataki. Na przykład niewłaściwe zamontowanie -v /proc:/host/proc
może obejść ochronę AppArmor ze względu na swoją ścieżkową naturę, pozostawiając /host/proc
bez ochrony.
Możesz znaleźć dalsze szczegóły dotyczące każdej potencjalnej luki w https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts.
Vulnerabilities procfs
/proc/sys
/proc/sys
Ten katalog umożliwia dostęp do modyfikacji zmiennych jądra, zazwyczaj za pomocą sysctl(2)
, i zawiera kilka podkatalogów wymagających uwagi:
/proc/sys/kernel/core_pattern
/proc/sys/kernel/core_pattern
Opisany w core(5).
Pozwala zdefiniować program do wykonania podczas generowania pliku rdzenia z pierwszymi 128 bajtami jako argumentami. Może to prowadzić do wykonania kodu, jeśli plik zaczyna się od rury
|
.Przykład testowania i eksploatacji:
/proc/sys/kernel/modprobe
/proc/sys/kernel/modprobe
Szczegóły w proc(5).
Zawiera ścieżkę do ładowacza modułów jądra, wywoływanego do ładowania modułów jądra.
Przykład sprawdzania dostępu:
/proc/sys/vm/panic_on_oom
/proc/sys/vm/panic_on_oom
Odniesienie w proc(5).
Globalna flaga kontrolująca, czy jądro ma panikować czy wywoływać zabójcę OOM, gdy wystąpi warunek OOM.
/proc/sys/fs
/proc/sys/fs
Zgodnie z proc(5), zawiera opcje i informacje o systemie plików.
Dostęp do zapisu może umożliwić różne ataki typu odmowa usługi przeciwko hostowi.
/proc/sys/fs/binfmt_misc
/proc/sys/fs/binfmt_misc
Umożliwia rejestrację interpretów dla formatów binarnych niezgodnych z systemem.
Może prowadzić do eskalacji uprawnień lub uzyskania dostępu do powłoki root, jeśli
/proc/sys/fs/binfmt_misc/register
jest zapisywalny.Związany exploit i wyjaśnienie:
Wideo tutorial: Link do wideo
Inne w /proc
/proc
/proc/config.gz
/proc/config.gz
Może ujawnić konfigurację jądra, jeśli
CONFIG_IKCONFIG_PROC
jest włączony.Przydatne dla atakujących do identyfikacji podatności w działającym jądrze.
/proc/sysrq-trigger
/proc/sysrq-trigger
Umożliwia wywoływanie poleceń Sysrq, potencjalnie powodując natychmiastowe ponowne uruchomienia systemu lub inne krytyczne działania.
Przykład ponownego uruchamiania hosta:
/proc/kmsg
/proc/kmsg
Ujawnia komunikaty z bufora pierścieniowego jądra.
Może pomóc w eksploatacji jądra, ujawnianiu adresów i dostarczaniu wrażliwych informacji systemowych.
/proc/kallsyms
/proc/kallsyms
Wyświetla eksportowane symbole jądra i ich adresy.
Istotne dla rozwoju eksploitów jądra, zwłaszcza do pokonywania KASLR.
Informacje o adresie są ograniczone, gdy
kptr_restrict
jest ustawione na1
lub2
.Szczegóły w proc(5).
/proc/[pid]/mem
/proc/[pid]/mem
Interfejsuje z urządzeniem pamięci jądra
/dev/mem
.Historycznie podatny na ataki eskalacji uprawnień.
Więcej na temat proc(5).
/proc/kcore
/proc/kcore
Reprezentuje pamięć fizyczną systemu w formacie rdzenia ELF.
Odczytanie może ujawnić zawartość pamięci hosta i innych kontenerów.
Duży rozmiar pliku może prowadzić do problemów z odczytem lub awarii oprogramowania.
Szczegółowe użycie w Dumping /proc/kcore in 2019.
/proc/kmem
/proc/kmem
Alternatywny interfejs dla
/dev/kmem
, reprezentujący pamięć wirtualną jądra.Umożliwia odczytywanie i zapisywanie, co umożliwia bezpośrednią modyfikację pamięci jądra.
/proc/mem
/proc/mem
Alternatywny interfejs dla
/dev/mem
, reprezentujący pamięć fizyczną.Umożliwia odczytywanie i zapisywanie, modyfikacja całej pamięci wymaga rozwiązania adresów wirtualnych na fizyczne.
/proc/sched_debug
/proc/sched_debug
Zwraca informacje o harmonogramowaniu procesów, omijając zabezpieczenia przestrzeni nazw PID.
Ujawnia nazwy procesów, identyfikatory PID i grupy cgroup.
/proc/[pid]/mountinfo
/proc/[pid]/mountinfo
Udostępnia informacje o punktach montowania w przestrzeni nazw montowania procesu.
Ujawnia lokalizację
rootfs
kontenera lub obrazu.
Vulnerabilities /sys
/sys
/sys/kernel/uevent_helper
/sys/kernel/uevent_helper
Używany do obsługi
uevent
urządzenia jądra.Zapisywanie do
/sys/kernel/uevent_helper
może uruchamiać arbitralne skrypty po wyzwaleniuuevent
.Przykład eksploatacji: %%%bash
Tworzy ładunek
echo "#!/bin/sh" > /evil-helper echo "ps > /output" >> /evil-helper chmod +x /evil-helper
Znajduje ścieżkę hosta z montowania OverlayFS dla kontenera
host_path=$(sed -n 's/.\perdir=([^,]).*/\1/p' /etc/mtab)
Ustawia uevent_helper na złośliwego pomocnika
echo "$host_path/evil-helper" > /sys/kernel/uevent_helper
Wywołuje uevent
echo change > /sys/class/mem/null/uevent
Odczytuje wynik
cat /output %%%
/sys/class/thermal
/sys/class/thermal
Kontroluje ustawienia temperatury, potencjalnie powodując ataki typu DoS lub fizyczne uszkodzenia.
/sys/kernel/vmcoreinfo
/sys/kernel/vmcoreinfo
Wycieka adresy jądra, potencjalnie kompromitując KASLR.
/sys/kernel/security
/sys/kernel/security
Zawiera interfejs
securityfs
, umożliwiający konfigurację modułów bezpieczeństwa Linuxa, takich jak AppArmor.Dostęp może umożliwić kontenerowi wyłączenie swojego systemu MAC.
/sys/firmware/efi/vars
and /sys/firmware/efi/efivars
/sys/firmware/efi/vars
and /sys/firmware/efi/efivars
Ujawnia interfejsy do interakcji z zmiennymi EFI w NVRAM.
Niewłaściwa konfiguracja lub eksploatacja może prowadzić do zablokowania laptopów lub niemożliwości uruchomienia hostów.
/sys/kernel/debug
/sys/kernel/debug
debugfs
oferuje interfejs debugowania "bez zasad" do jądra.Historia problemów związanych z bezpieczeństwem związana z jego nieograniczonym charakterem.
References
Last updated