Blog IT, Blog Marketing

Złośliwy konter Dockera może w 10 sekund zdobyć dostęp do systemu plików hosta

Złośliwy konter Dockera może w 10 sekund zdobyć dostęp do systemu plików hosta

Adam Golański , 02.06.2019 r.

Moda na Dockera opanowała świat devops, mimo że sama technologia konteneryzacji właściwie nie przyniosła niczego takiego, czego nie dają też standardowe technologie wirtualizacji – z tą jednak różnicą, że maszyny wirtualne rozwiązały dawno temu problemy, z którymi Docker wciąż się zmaga. Widać to choćby po regularnie odkrywanych lukach w bezpieczeństwie. Najnowszą z nich trudno będzie naprawić, jak z branżowych dyskusji wynika, w najlepszym razie zagrożenie można tylko złagodzić.

Wszystkie wersje Dockera okazują się być podatne na stan hazardu (race condition), który pozwala napastnikowi uzyskać możliwość odczytania i zapisania dowolnego pliku w systemie hosta. Odkrywca luki, Aleksa Sarai z Suse, wydał już przykładowe exploity. Co prawda ich skuteczność nie przekracza 1%, ale w praktyce oznacza, że już najdalej po 10 sekundach skrypt uruchamiający atak w pętli uzyska dostęp do plików poza kontenerem, włącznie z ich nadpisaniem.

Po ścieżce do roota

Błąd, który na to pozwala, określa się jako TOCTOU: time-to-check-time-to-use: oferuje napastnikom możliwość modyfikowania ścieżek do zasobów po ich rozwiązaniu, ale zanim przydzielony program zacznie działać na danym zasobie.

W rdzeniu Dockera wykorzystywana jest funkcja FollowSymlinkInScope. Służy ona bezpiecznemu rozwiązaniu określonej ścieżki poprzez traktowanie procesów tak, jakby znajdowały się one wewnątrz kontenera. I ta właśnie funkcja jest podatna na atak TOCTOU.

Na rozwiązanej ścieżce dostępu nie dochodzi do operacji natychmiastowo, raczej jak wyjaśnia Sarai, jest ona przekazywana dookoła, a dopiero nieco później wykorzystywana. Napastnik może więc przewidzieć to opóźnienie i dodać symboliczną ścieżkę, która doprowadzi do rozwiązania na hoście z uprawnieniami roota.

Pozwala na to narzędzie docker cp, przeznaczone do kopiowania plików między kontenerem a lokalnym systemem plików. Było one wykorzystywane już w dwóch innych lukach, i jak zauważa inżynier z Suse, nie ma właściwie sensownego sposobu na uniemożliwienie tego typu ataku. Co najwyżej można nie dopuścić do uruchamiania docker cp na działających kontenerach – ale to pomoże tylko w tym ataku poprzez FollowSymlinkInScope.

Jeśli więc demon Dockera nie został ograniczony np. regułami AppAror, kontener będzie miał swobodny dostęp do systemu plików hosta. Na pewno działa to na redhatowych systemach z domyślną konfiguracją SELinuksa (RHEL/CentOS/Fedora).

Niełatwo temu zaradzić

Jak do tej pory nie zaradzono temu zagrożeniu, w dyskusji na Hacker News przedstawiono kilka sposobów na ograniczenie zagrożenia, ale wymagałyby one daleko idących zmian w samym rdzeniu Dockera i raczej nie ma co się spodziewać ich wdrożenia.

Zgłoszona już za to została łatka, która zatrzymuje działanie kontenera przy dostępie do plików. Nie powstrzyma to wszystkich ataków, ale uważa się, że jest obroną przynajmniej przeciwko tym najbardziej typowym.

Czy to odkrycie cokolwiek zmieni? Pewnie nie. Docker jest zbyt modny, zbyt dużo pieniędzy za nim stoi, panuje przekonanie, że z każdą luką poradzi sobie kolejna aktualizacja.

Najnowsze oferty pracy:

Polecane wpisy na blogu IT:

Szukasz pracownika IT?

Dostarczymy Ci najlepszych specjalistów z branży IT. Wyślij zapytanie

Wyrażam zgodę TeamQuest Sp. z o.o. na przetwarzanie moich danych osobowych w celu marketingu produktów i usług własnych TeamQuest, w tym na kontaktowanie się ze mną w formie połączenia telefonicznego lub środkami elektronicznymi.
Administratorem podanych przez Ciebie danych osobowych jest TeamQuest Sp. z o.o., z siedzibą w Warszawie (00-814), ul. Miedziana 3a/21, zwana dalej „Administratorem".
Jeśli masz jakiekolwiek pytania odnośnie przetwarzania przez nas Twoich danych, skontaktuj się z naszym Inspektorem Ochrony Danych (IOD). Do Twojej dyspozycji jest pod adresem e-mail: office@teamquest.pl.
W jakim celu i na jakiej podstawie będziemy wykorzystywać Twoje dane? Dowiedz się więcej