Sandbox Escape
Jak działa
Ucieczka z piaskownicy przebiega zwykle wg jednego z kilku wzorców. (1) Eksploatacja jądra/hypervisora: kontenery współdzielą jądro hosta, więc błąd w jądrze lub w środowisku uruchomieniowym pozwala eskalować uprawnienia (np. CVE-2019-5736 w runc — nadpisanie binarki runc na hoście przez manipulację /proc/self/exe i uzyskanie roota hosta). W przypadku VM celem jest emulowany sprzęt hypervisora (np. VENOM, CVE-2015-3456, przepełnienie w kontrolerze stacji dyskietek QEMU umożliwiające wykonanie kodu poza gościem). (2) Błędna konfiguracja: uruchomienie kontenera jako root/--privileged, zamontowanie gniazda Dockera lub ścieżek hosta, brak profilu seccomp/AppArmor, nadużycie funkcji jądra (np. CVE-2022-0492 — nadużycie release_agent w cgroups v1 do obejścia izolacji namespace). (3) Ucieczka z interpretera/aplikacji: obejście ograniczeń języka (dostęp do modułów systemowych, refleksja, wywołania natywne) lub błąd silnika (np. korupcja pamięci w V8/JS przeglądarki jako pierwszy etap łańcucha). (4) Kanały boczne i mikroarchitektura: ataki jak Spectre (CVE-2017-5753) wykorzystują spekulatywne wykonanie i predykcję rozgałęzień, przełamując granice izolacji na poziomie sprzętu (np. odczyt pamięci spoza piaskownicy JS). W kontekście agentów AI typowy łańcuch to: model generuje złośliwy lub podatny kod → kod wykonuje się w piaskownicy → wykorzystuje jedną z powyższych słabości → uzyskuje dostęp do hosta, sekretów (klucze API, tokeny) lub sieci wewnętrznej.
Rozwiązany problem
Adresuje model zagrożeń dla wykonywania niezaufanego kodu: gdy system musi uruchomić kod, którego nie kontroluje (kod wygenerowany przez LLM, wtyczka, plik użytkownika, reklama w przeglądarce), izolacja ma powstrzymać skutki uboczne. Sandbox Escape opisuje, kiedy i jak ta gwarancja zawodzi — zrozumienie tej klasy jest warunkiem projektowania bezpiecznych środowisk wykonawczych dla agentów AI, systemów wielodostępnych (multi-tenant) i przeglądarek.
Komponenty
Mechanizm oddzielający kod w piaskownicy od hosta: przestrzenie nazw i cgroups jądra, seccomp, AppArmor/SELinux, hypervisor lub separacja uprawnień OS.
Oficjalna
Interfejs kontaktu piaskownicy z hostem: wywołania systemowe, emulowany sprzęt hypervisora, IPC, współdzielone deskryptory plików, API interpretera. To tu najczęściej znajduje się podatność.
Techniczny mechanizm przełamania: korupcja pamięci, zapis/odczyt poza zakresem, nadużycie funkcji jądra, race condition lub kanał boczny.
Oficjalna
Zasób poza granicą, do którego atak dąży: root hosta, sekrety (klucze API, tokeny), system plików hosta, sieć wewnętrzna lub inne tenanty.
Oficjalna
Implementacja
Uprzywilejowany kontener praktycznie znosi izolację — daje dostęp do urządzeń hosta i możliwości jądra.
Zamontowanie /var/run/docker.sock lub wrażliwych ścieżek hosta do piaskownicy daje pełną kontrolę nad hostem.
Bez filtrowania wywołań systemowych powierzchnia ataku na jądro jest maksymalna, co ułatwia eksploatację luk jądra.
Standardowe kontenery współdzielą jądro hosta, więc jeden błąd jądra kompromituje granicę. Dla niezaufanego kodu to niewystarczające.
Niezałatane runtime (runc, QEMU, jądro) zawierają publicznie znane ucieczki, które można natychmiast wykorzystać.
Ewolucja
CVE-2015-3456: błąd w kontrolerze stacji dyskietek QEMU (używanym w Xen i KVM) umożliwia gościowi wykonanie kodu poza maszyną wirtualną.
CVE-2017-5753 (ujawnione publicznie w 2018): spekulatywne wykonanie i predykcja rozgałęzień jako kanał boczny; pokazało, że nawet izolacja JS w przeglądarce może zostać obejściem na poziomie mikroarchitektury.
CVE-2019-5736: nadpisanie binarki runc na hoście przez manipulację /proc/self/exe pozwala uzyskać roota hosta z wnętrza kontenera.
CVE-2022-0492: nadużycie funkcji release_agent w cgroups v1 jądra Linux do eskalacji uprawnień i obejścia izolacji przestrzeni nazw.
Wraz z interpreterami kodu w asystentach LLM i autonomicznymi agentami piaskownica wykonywania kodu (izolacja przez gVisor, Firecracker microVM, dedykowane usługi jak E2B) staje się krytycznym elementem bezpieczeństwa — a jej ucieczka nowym, istotnym wektorem ataku.