Badacze cyberbezpieczeństwa biją na alarm w związku z trwającą kampanią wykorzystującą dostępne w Internecie usługi Selenium Grid do nielegalnego wydobywania kryptowalut.
Firma Wiz, zajmująca się bezpieczeństwem w chmurze, śledzi tę aktywność pod nazwą SeleniumGreed. Uważa się, iż kampania, której celem są starsze wersje Selenium (3.141.59 i wcześniejsze), trwa co najmniej od kwietnia 2023 roku!
„Większość użytkowników nie wie, iż API Selenium WebDriver umożliwia pełną interakcję z samą maszyną, w tym odczytywanie i pobieranie plików oraz uruchamianie poleceń zdalnych” – mówią badacze Wiz Avigayil Mechtinger, Gili Tikochinski i Dor Laska.
Domyślnie uwierzytelnianie nie jest włączone dla tej usługi. Oznacza to, iż wiele publicznie dostępnych instancji jest błędnie skonfigurowanych i każdy może uzyskać do nich dostęp.
Czym jest Selenium Grid?
Zacznijmy może od początku. Selenium Grid, czyli sieć Selenium, umożliwia równoległe wykonywanie testów obciążeniowych/wydajnościowych na różnych przeglądarkach i na różnych ich wersjach. Jest zaprojektowana tak, aby rozłożyć obciążenie związane z wykonywaniem testów na wiele środowisk, co pomaga skrócić czas potrzebny na uruchomienie dużego zestawu danych oraz zapewnia, iż aplikacje działają spójnie w różnych kombinacjach przeglądarek i systemów operacyjnych.
Selenium Grid składa się z koncentratora i węzłów. Koncentrator zarządza dystrybucją testów do zarejestrowanych węzłów, podczas gdy węzły są maszynami, na których wykonywane są testy. Węzłem może być dowolna maszyna zarejestrowana w koncentratorze i zdolna do uruchomienia instancji przeglądarki. Węzły mogą mieć różne systemy operacyjne i przeglądarki, co zapewnia elastyczność i różnorodność w środowiskach testowych. Poniższej schemat:
Selenium jest wysoko cenione przez deweloperów i testerów oraz szeroko stosowane w wielu organizacjach. Obraz dockera selenium/hub został pobrany ponad 100 milionów razy, ze średnią liczbą pobrań wynoszącą ponad 150 000 tygodniowo. Popularność Selenium obejmuje również środowiska chmurowe. w tej chwili jest to najpopularniejszy framework testowy, obecny w ponad 30% deweloperskich środowisk chmurowych.
Ryzyko dostępności Selenium z Internetu
Selenium udostępnia API WebDriver, które umożliwia użytkownikom automatyzację interakcji użytkownika z przeglądarką internetową. API umożliwia również różne sposoby interakcji z podstawową infrastrukturą węzłów, takie jak odczytywanie i pobieranie plików oraz wykonywanie wybranych plików binarnych. Selenium Grid nie jest zaprojektowany do udostępniania w Internecie, a jego domyślna konfiguracja nie ma włączonego uwierzytelniania, więc każdy użytkownik, który ma dostęp sieciowy do huba, może wchodzić w interakcję z węzłami za pośrednictwem API. Stanowi to poważne ryzyko bezpieczeństwa, jeżeli usługa jest wdrażana na komputerze z publicznym adresem IP, który ma nieodpowiednią politykę firewall.
Chociaż witryna Selenium zawiera ostrzeżenie o udostępnianiu Selenium Grid w Internecie, oczywiste jest, iż użytkownicy często je ignorują i wdrażają Selenium bez odpowiednich kontroli bezpieczeństwa sieci. Poniżej znajdują się statystyki FOFA dotyczące usług Selenium Grid, które działają na przestarzałych wersjach (v3.141.59 i starsze), narażonych na interakcje z Internetu:
Zapytanie ujawniło ponad 15 000 unikalnych adresów IP z ostatniego roku, z których większość działała na domyślnym porcie 4444, co wskazuje na bezpośrednie narażenie kontenera.
Zapytanie dotyczące nowszych wersji dało podobne wyniki – około 15 000 instancji nasłuchiwało na porcie 4444. Oznacza to, iż istnieje ponad 30 000 instancji narażonych na zdalne wykonywanie poleceń, ponieważ pod kilkoma warunkami wersja 4 (aktualna) również jest podatna na wykorzystanie.
Jak wygląda atak?
Podmiot stojący za atakami nie jest w tej chwili znany. Wiadomo jednak, na czym polega kampania – aktor zagrożenia atakuje publicznie ujawnione wystąpienia Selenium Grid i wykorzystuje API WebDriver do uruchomienia kodu Python odpowiedzialnego za pobieranie i uruchamianie koparki XMRig – ulubionej złośliwej koparki krypto wdrażanej przez cyberprzestępców.
Zaczyna się od tego, iż przeciwnik wysyła żądanie do podatnego huba Selenium Grid w celu wykonania programu Python zawierającego ładunek zakodowany w formacie Base64, który uruchamia odwrotną powłokę do serwera kontrolowanego przez atakującego („164.90.149[.]104”) w celu pobrania ostatecznego ładunku, zmodyfikowanej wersji koparki XMRig z otwartym kodem źródłowym.
„Zamiast kodować na stałe adres IP puli w konfiguracji koparki, generują go dynamicznie w czasie wykonywania” – wyjaśnili badacze. „Ustawiają również funkcję odcisku palca TLS XMRig w dodanym kodzie (i w konfiguracji), zapewniając, iż koparka będzie komunikować się tylko z serwerami kontrolowanymi przez aktora zagrożenia”.
Podany adres IP należy do legalnej usługi, która została naruszona przez atakującego, ponieważ odkryto, iż hostuje publicznie ujawnioną instancję Selenium Grid.
„Selenium Grid nie jest zaprojektowany do udostępniania w Internecie, a jego domyślna konfiguracja nie ma włączonego uwierzytelniania, więc każdy użytkownik, który ma dostęp sieciowy do huba, może wchodzić w interakcje z węzłami za pośrednictwem interfejsu API” – informują badacze.
Co można zrobić?
Aby chronić swoją organizację przed tego typu atakami, rozważ podjęcie następujących kroków:
- Wdróż zarówno zewnętrzny skaner sieciowy, jak i skaner podatności, aby mapować narażenie w środowisku chmury.
- Używaj wykrywania w czasie wykonywania, aby reagować na zagrożenia w czasie rzeczywistym.
- Zastosuj kontrole bezpieczeństwa sieci, takie jak zapora sieciowa, aby ograniczyć dostęp do sieci:
- ruch przychodzący – zezwalaj tylko na zaufane zakresy adresów IP,
- ruch wychodzący – zezwalaj na ruch wychodzący tylko do wymaganych punktów końcowych.
Włącz podstawowe uwierzytelnianie dla instancji Selenium Grid. Możesz je skonfigurować, postępując zgodnie z tym artykułem.