W 19% najpopularniejszych obrazów Docker nie ma hasła dla roota

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

W 19% najpopularniejszych obrazów Docker nie ma hasła dla roota

Tło sprawy z Alpine

Powodem przeprowadzenia mini-badania był raport o podatności Talos (TALOS-2019-0782), 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ł naprawiono 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 skrypt Bash, 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 run z 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 tym pliku 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

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster