W minioną sobotę, 18 maja, Jerry Gamblin z Kenna Security 1000 najpopularniejszych obrazów z Docker Hub pod kątem hasła użytkownika root. W 19% przypadków hasło było puste.

Tło sprawy z Alpine
Powodem przeprowadzenia mini-badania był raport o podatności Talos (), którego autorzy — dzięki odkryciu Petera Adkinsa z Cisco Umbrella — poinformowali, że obrazy Docker z popularnym dystrybucją kontenerów Alpine nie mają hasła dla root:
„Oficjalne wersje obrazów Docker Alpine Linux (od wersji v3.3) zawierają NULL-hasło dla użytkownika root. Ta podatność pojawiła się w wyniku regresji wprowadzanej w grudniu 2015 roku. Jej istota sprowadza się do tego, że systemy wdrażane z problematycznymi wersjami Alpine Linux w kontenerze i korzystające z Linux PAM lub innego mechanizmu wykorzystującego plik shadow jako bazę danych dla uwierzytelniania, mogą akceptować puste (NULL) hasło dla użytkownika root”.
Sprawdzane pod kątem problemu wersje obrazów Docker z Alpine obejmowały 3.3–3.9 włącznie, a także najnowszą wersję edge.
Autorzy przedstawili następującą rekomendację dla użytkowników dotkniętych problemem:
„Konto root powinno być wyraźnie wyłączone w obrazach Docker opartych na problematycznych wersjach Alpine. Prawdopodobna eksploatacja podatności zależy od środowiska, ponieważ jej powodzenie wymaga przekierowanego na zewnątrz serwisu lub aplikacji korzystającej z Linux PAM lub innego podobnego mechanizmu”.
Problem występował w Alpine w wersjach 3.6.5, 3.7.3, 3.8.4, 3.9.2 oraz edge (snapshot z 20190228), a posiadaczom dotkniętych nim obrazów zaproponowano zakomentowanie linii z root w /etc/shadow lub upewnienie się, że pakiet linux-pam.
Kontynuacja z Docker Hub
Jerry Gamblin postanowił sprawdzić, „jak powszechna może być praktyka używania null-hasła w kontenerach”. W tym celu napisał mały , którego istota jest bardzo prosta:
- przez zapytanie curl do API na Docker Hub pobierany jest wykaz zamieszczonych tam obrazów Docker;
- przez jq jest sortowany według pola
popularity, a z otrzymanych wyników pozostaje pierwsza tysiąc; - dla każdego z nich wykonane jest
docker pull; - dla każdego uzyskanego z Docker Hub obrazu wykonywane jest
docker runz odczytem pierwszej linii z pliku/etc/shadow; - jeżeli wartość linii okazała się równa
root:::0:::::, nazwa obrazu jest zapisywana w oddzielnym pliku.
Co więc wyszło? W okazało się 194 linie z nazwami popularnych obrazów Docker z systemami Linux, gdzie użytkownik root nie ma ustalonego hasła:
„Wśród najbardziej znanych nazw w tej liście znalazły się govuk/governmentpaas, hashicorp, microsoft, monsanto i mesosphere. A kylemanna/openvpn to najbardziej popularny kontener z listy, jego statystyki pokazują ponad 10 milionów pobrań.”
Warto jednak przypomnieć, że samo zjawisko nie oznacza bezpośredniej podatności na bezpieczeństwo systemów, które je wykorzystują: wszystko zależy od tego, jak są stosowane. (zob. komentarz z przypadku Alpine powyżej). Jednak „morał tej bajki” widzieliśmy już wiele razy: widoczna prostota często ma swoją drugą stronę, o której zawsze warto pamiętać i której konsekwencje uwzględnić w scenariuszach zastosowania technologii.
P.S.
Przeczytaj także na naszym blogu:
- «»;
- «»;
- «»;
- «».
Źródło: habr.com
