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

Pod presją – czy testy obciążenia serwisów internetowych mogą być niebezpieczne

Dodany 23 października 2013, 10:38 CEST
Tagi:

Każdy projekt online – czy to stary blog, czy aplikacja internetowa nowego startupu – posiada bardzo ważną cechę określaną jako „maksymalne obciążenie”. O wskaźniku tym dowiadujemy się, gdy aplikacja internetowa częściowo lub całkowicie nie wykonuje swoich funkcji przetwarzania żądań użytkownika. W przypadku niektórych właścicieli, może to oznaczać utratę części czytelników ich bloga, w przypadku innych – utratę klientów, którzy wybierają produkt konkurencji mającej tę przewagę, że jej sklep internetowy działa.     

Każdy zasób internetowy posiada indywidualne maksymalne obciążenie, jeżeli chodzi o liczbę żądań użytkowników, jakie może przetworzyć w danym czasie. Z tego powodu deweloperzy i właściciele aplikacji internetowych zwracają szczególną uwagę na procedury dotyczące normalnego obciążenia i testy maksymalnego obciążenia.  

Serwisy oferujące testowanie obciążenia są dzisiaj bardzo przydatne, czasem jednak zawierają luki, które mogą wykorzystać szkodliwi użytkownicy.

Testy obciążenia i warunków skrajnych

Testy obciążenia systemu to procedura stosowana w celu oceny wydajności rozwiązania przy standardowej pracy. Testy warunków skrajnych opierają się na podobnych zasadach, z tą jednak różnicą, że system poddawany jest obciążeniom, które osiągają lub przekraczają maksymalną wartość. W większości przypadków, testy warunków skrajnych prowadzą do niepożądanego zachowania testowanego systemu lub awarii serwisu – podobnie jak w przypadku ataków DDoS.  

web_pod_davleniem_1_auto.png

Scenariusze testów obciążenia na systemach danych

Jak widać na ilustracji powyżej, testy obciążenia przeprowadza się przy zajętości systemu poniżej poziomu maksymalnego, podczas gdy testy warunków skrajnych i ataki DDoS są przeprowadzane przy obciążeniu przekraczającym wartość maksymalną. Warto jednak zaznaczyć, że ostateczne cele wykonywania testów warunków skrajnych i przeprowadzania ataków DDoS są zupełnie inne. Celem testów jest określenie maksymalnego dopuszczalnego obciążenia systemu, natomiast scenariusze ataków DDoS są realizowane w celu określenia metod, które pozwolą zakłócić wydajność systemu do tego stopnia, aby ostatecznie przestał on działać.      

Testowanie warunków skrajnych jest istotną procedurą, gdy właściciel systemu danych chce stwierdzić, jak będzie zachowywało się jego rozwiązanie, gdy zostanie poddane obciążeniom przekraczającym wartości maksymalne. Niekiedy testy te stosuje się, aby dowiedzieć się, jak zasoby bezpieczeństwa systemu poradzą sobie z potencjalnym atakiem DDoS.  

Rekonesans przez ogień

Testowanie maksymalnego obciążenia to część procesu służącego do zwiększenia ochrony zewnętrznych zasobów IT w badanej infrastrukturze i uzyskania następujących wyników: 

  • aktualnego maksymalnego obciążenia dla zewnętrznych serwisów. Jeżeli znamy punkt, w którym nasz system danych przestanie działać, możemy usprawnić posiadane procesy lub wprowadzić nowe w celu zwiększenia bezawaryjności. Innymi słowy, wiedza to potęga;
  • bezawaryjności zewnętrznych serwisów w ramach określonych scenariuszy ataków rozproszonych przeprowadzanych w celu unieruchomienia usługi. Jeżeli spojrzymy na nasze własne projekty oczami szkodliwego użytkownika, będziemy mogli wyciągnąć wnioski odnośnie konieczności zastosowania ochrony przed atakami DDoS lub zwiększenia efektywności stosowanych rozwiązań.        

W przeciwieństwie do innych etapów tworzenia projektów internetowych, niezależnie od tego, czy jest to usuwanie błędów w aplikacji czy testy wydajności (aby dowiedzieć się, jak dobrze działają jej funkcje), testy obciążenia są istotne z innego, równie ważnego powodu: są przeprowadzane w rzeczywistym, działającym systemie danych. Testowanie przy użyciu atrapy byłoby mało przydatne lub wręcz zupełnie bezużyteczne. Aby określić rzeczywistą wydajność projektu, trzeba zobaczyć „prawdziwą rzecz” w akcji. Jednocześnie, testowanie projektu, który jest aktualnie realizowany, może spowodować tymczasową utratę usługi dla określonego procesu biznesowego – a to mogłoby oznaczać awarię serwisu oraz wszelkie związane z tym implikacje.          

W tym celu, tj. testowania aplikacji internetowych lub zewnętrznych zasobów danych dostępnych w internecie (obejmują one usługi pocztowe, usługi FTP itd.) zostały opracowane wyspecjalizowane – dość dobrze działające – serwisy testowania obciążenia online.

Testy warunków skrajnych

Dzięki koncepcji „as a service” właściciele aplikacji internetowych mają na głowie o jedną rzecz mniej jeżeli chodzi o dostosowanie do określonych potrzeb złożonych systemów testowania obciążenia, przygotowanie infrastruktury opartej na chmurze i inne powiązane działania. Wszystko to jest wykonywane w tle i oferowane jako usługa online – wystarczy podać nazwę użytkownika i hasło, ustawić parametry obciążenia i zapłacić za możliwość dowiedzenia się, jaką moc posiada twój komputer i jak będzie zachowywał się twój projekt internetowy, jeśli i kiedy zostanie poddany różnym scenariuszom.    

web_pod_davleniem_2_auto.jpg

Konfiguracja testów obciążenia na jednym z projektów, które są obecnie testowane: ustalając warunki obciążenia, doszliśmy do maksymalnej pojemności obciążenia.

Teraz właściciel zasobu internetowego może po prostu zarejestrować się w dowolnym z takich serwisów, aby sprawdzić, jak zachowa się jego projekt, gdy zostanie poddany ponadprzeciętnemu obciążeniu. W przypadku szczególnie leniwych osób, niektóre serwisy testowania obciążenia oferują test podstawowy (który nie wymaga rejestracji) i mimo że usługa ta nie jest szczególnie dokładna, daje ogólne pojęcie na temat wydajności serwisu.   

web_pod_davleniem_3_auto.jpg

Raport z testowania zawiera wiele statystyk. Na przykład, rozkład czasu pobierania danych podczas testowania obciążenia

web_pod_davleniem_4_auto.jpg

Wynik testów obciążenia aplikacji internetowych przy użyciu usługi online

Testy obciążenia jako usługa internetowa to z pewnością bardzo przydatne i wygodne narzędzie. Jednak sposób realizacji takich procedur testowych nie jest tak niewinny jak wydaje się na pierwszy rzut oka.  

Testy czy ataki DDoS?

Przyjrzyjmy się jednemu z takich internetowych serwisów testowania obciążenia, ale z punktu widzenia szkodliwego użytkownika. Przyjmijmy, że w ogóle nie obchodzą nas etyczne aspekty ataku rozproszonego, w wyniku którego serwis przestanie działać, i że naszym jedynym celem jest sprawienie, aby zasób internetowy konkurencji był niedostępny. Czy możemy go osiągnąć przy pomocy serwisów testowania obciążenia online? 

W ramach eksperymentu wybrałem kilka popularnych serwisów oferujących testy i wykorzystałem własny blog, który jest obsługiwany przez - nienajgorszy - serwis w chmurze EC2 Amazona. Okazało się, że nawet gdy wykorzystywałem darmowy tryb testowy, który oferuje bardzo niewiele usług, obciążenie było wystarczająco duże, aby znacznie zwiększyć czas reakcji mojego bloga.    

Tryb demo serwisu testowania obciążenia online może imitować odwiedziny maksymalnie 10 000 użytkowników miesięcznie, co może okazać się zabójcze dla wielu mniejszych projektów internetowych. Nawet 50 użytkowników w ciągu 3-minutowego okresu może spowodować problemy niektórym podstawowym rozwiązaniom online.  

Jednocześnie, wiele serwisów testujących obciążenie online nie wymaga żadnego potwierdzenia, że badanie zasobu internetowego chce przeprowadzić jego właściciel, a nie szkodliwy użytkownik.  

Z sześciu zbadanych serwisów testów online tylko jeden prosił użytkownika, aby wrzucił specjalny plik do testowanego zasobu – gdy serwis uzyska dostęp do tego zasobu, potwierdza, że administrator testowanego zasobu zapoznał się z procedurą. Co więcej, dwa z badanych przez nas serwisów testowania online pozwalają użytkownikom przeprowadzić test obciążenia bez żadnej rejestracji – trzeba jedynie wpisać adres URL przedmiotu testu.  

Łatwość, z jaką można korzystać z takich narzędzi, sprawia, że każdy może „przetestować” anonimowo stronę internetową kogoś innego lub inny projekt online bez zarejestrowania się czy nawet zgody właściciela danego zasobu. Już samo to, że można przetestować dowolny zasób online bez zarejestrowania się i bez jakichkolwiek opłat za korzystanie z tego serwisu, sprawia, że tego rodzaju serwisy stanowią bardzo atrakcyjne narzędzia jeżeli chodzi o przeprowadzanie ataków DDoS. 

web_pod_davleniem_5_auto.jpg

Testowanie obciążenia zasobów internetowych przy użyciu usługi, która nie wymaga rejestracji. Wystarczy odwiedzić witrynę, wpisać adres URL zasobu, który chcesz sprawdzić, i przejrzeć raport z wynikami.

Potencjalne zagrożenia

Naszym zdaniem, serwisy testowania obciążenia online mogą stanowić narzędzie do przeprowadzenia anonimowych ataków DDoS. Szybkie tworzenie scenariuszy obciążenia, prostota oraz łatwość obsługi tych serwisów, w połączeniu z pulą zasobów komputerowych, to cechy, które wyróżniają ten rodzaj „botnetu”. Szkodliwi użytkownicy mogą z łatwością stworzyć kilka niezależnych kont i wykorzystać je wszystkie do przeprowadzania „testów obciążenia” na jednej stronie. W tym samym czasie!

Wiemy, że najskuteczniejsze ataki DDoS to te, w których praktycznie nie da się odróżnić ruchu legalnego od nielegalnego (generowanego przez boty, czyli zainfekowane komputery). Wystarczy wyobrazić sobie, że liczba czytelników bloga wzrosła ze stu dziennie do stu tysięcy, przy czym wszyscy zachowują się jak typowy użytkownik: przeglądają zawartość każdej strony, próbują opublikować komentarze, przeglądają zdjęcia, a do tego są zlokalizowani w różnych miejscach. Skąd niewprawny bloger ma wiedzieć, kto jest prawdziwą osobą, a kto oszustem?   

Niektóre serwisy oferują demonstracyjny test obciążenia bez konieczności rejestracji. To oznacza, że właściciel małego botnetu złożonego z zaledwie 50-100 maszyn może wykorzystać te serwisy, aby zwiększyć moc ataku DDoS setki razy. Jeden bot może wygenerować 10 niezależnych żądań testu obciążenia dla różnych serwisów internetowych. To oznacza, że niezależnie mogą one wygenerować setki żądań. Rezultat? Cel tego rodzaju ataku zostanie całkowicie zalany pozornie „legalnym” ruchem. 

Co można zrobić?

W jaki sposób można zapobiec niewłaściwemu wykorzystywaniu serwisów testowania obciążenia online? Na początek, warto wskazać, że w umowie z użytkownikiem właściciele tych serwisów zwolnili siebie z wszelkiej odpowiedzialności:

„Korzystanie z Serwisu i możliwość uzyskania dokładnych i rzeczywistych wyników w dużym stopniu zależy od umiejętności Użytkownika w zakresie korzystania z Serwisu. W związku z tym, sam musisz zadbać o to, abyś posiadał wystarczające kompetencje do napisania skryptów niezbędnych do uzyskania optymalnych wyników z Serwisu... ”

Innymi słowy: to ty jesteś odpowiedzialny za swoje działania.

Nie znaczy to jednak, że nie można zapobiec nielegalnemu wykorzystywaniu tego rodzaju serwisów. Serwisy testowania obciążenia online powinny wymagać zgody właścicieli zasobów online, zanim zostaną one poddane badaniom. Mogłyby na przykład żądać, aby w testowanym zasobie internetowym został umieszczony unikatowy kod lub specjalny baner i dopiero po odczytaniu tego kodu możliwe byłoby przeprowadzenie testu obciążenia. Serwisy testowania obciążenia online mogłyby również stosować weryfikację typu CAPTCHA podczas pracy z zasobem internetowym. Tego rodzaju podstawowe usługi weryfikacji znacznie utrudniłyby botom wysyłanie automatycznych żądań wygenerowania i zwiększenia obciążenia zasobu sieciowego.