NFsec Logo

Luka w runC – ucieczka z kontenera

13/02/2019 w Bezpieczeństwo 2 komentarze.  (artykuł nr 677, ilość słów: 496)

P

oważna luka w zabezpieczeniach została odkryta w głównym kodzie kontenera – runC, która wpływa na kilka systemów open source do zarządzania kontenerami. Umożliwia ona atakującemu potencjalną ucieczkę z kontenera systemu Linux i uzyskanie nieautoryzowanego dostępu na poziomie administratora systemu do systemu operacyjnego hosta. Luka, która otrzymała numer CVE-2019-5736 została odkryta przez badaczy bezpieczeństwa Adama Iwaniuka i Borysa Popławskiego i ujawniona publicznie przez Aleksa Sarai, starszego inżyniera oprogramowania i opiekuna runC w SUSE.

Luka tkwi w runC – lekkim, nisko poziomowym narzędziu wiersza poleceń do tworzenia i uruchamiania kontenerów, czyli metody wirtualizacji na poziomie systemu operacyjnego. Służy ona do uruchamiania wielu izolowanych systemów na hoście za pomocą pojedynczego jądra. Pierwotnie runC został stworzony przez Dockera. Aktualnie jest domyślnym środowiskiem wykonawczym dla takich kontenerów jak: Docker, Kubernetes, ContainerD, CRI-O i innych programów zależnych od technologi konteneryzacji. Chociaż nie wydano jeszcze pełnych szczegółów technicznych luki (exploit ma pojawić się w ciągu tygodnia), aby dać użytkownikom czas na dokonanie aktualizacji i nałożenia poprawek – to komunikat firmy RedHat wspomina o błędzie w sposobie obsługi przez runC deskryptorów plików systemowych podczas uruchamiania kontenerów.

W związku z tym specjalnie spreparowany, szkodliwy kontener lub atakujący mający dostęp do kontenera z prawami administratora może wykorzystać tę lukę (przy minimalnej interakcji użytkownika), aby uzyskać uprawnienia administracyjne na maszynie hosta obsługującej kontener – ostatecznie narażając inne kontenery, które jeszcze na nim działają. Aby uzyskać prawa dostępu administratora do samego kontenera osoba atakująca może: a) stworzyć nowy obraz kontenera, który umożliwi jej dalszą kontrolę; b) dodać do definicji budowania / uruchamiania istniejącego obrazu dodatkową funkcję wykonania (np. przez docker exec) jakiegoś szkodliwego polecenia / skryptu / programu. Wówczas tak spreparowany kontener mógłby wykorzystać tę lukę do nadpisania zawartości binarnego kodu runC i konsekwentnego uruchamiania dowolnych poleceń w systemie hosta kontenera, co możemy zaobserwować na demonstracji.

Luka jest na tyle poważna (posiada ranking CVSS = 7.2) , że wpływa na szeroką gamę połączonych systemów. Dotyka ona LXC (na systemach Debian i Ubuntu), Dockera, Apache Mesos, Kubernetes i inne silniki konteneryzacji. Główni dostawcy usług w chmurze, w tym Google i Amazon już wypychają łaty bezpieczeństwa, aby rozwiązać ten problem. Rancher – twórca otwartego oprogramowania do zarządzania Kubernetes opublikował także skrypt do łatania starszych wersji Dockera. Według RedHata luka może zostać złagodzona jeśli zostanie włączony tryb enforce dla SELinux, który jest domyślnie w RedHat Enterprise Linux, CentOS i Fedora.

Więcej informacji: Detecting exploits of CVE-2019-5736: runc container breakout, Mitigating CVE-2019-5736 Impacting RunC and Docker

Kategorie K a t e g o r i e : Bezpieczeństwo

Tagi T a g i : , , , , , , , ,

2 komentarze.

  1. Dostępny jest już PoC.