publikuj: Opublikuj w wykop.pl Opublikuj we flaker.pl Opublikuj na OSnews.pl Opublikuj w delicious wydrukuj
6 skomentuj »

TAGI: atak , złożoność , php , asp.net , serwer www , chaos , post

2012-01-04 13:30  |  Tomasz Smykowski

Jedno zapytanie może zawiesić serwer z PHP, ASP.NET-em, Javą, Pythonem czy Ruby na kilka godzin

Jedno zapytanie może zawiesić serwer z PHP, ASP.NET-em, Javą, Pythonem czy Ruby na kilka godzin

Podczas ostatniego Chaos Communication Congress hakerzy rozmawiali nie tylko o budowie sieci własnych satelitów. W trakcie innej, nie mniej ciekawej prezentacji, Alexander Klink i Julian Wälde pokazali jak za pomocą odpowiedniego zapytania zawiesić dowolną stronę internetową.

Pomysł na przeprowadzenie ataku zrodził się w pokoju widocznym na poniższym zdjęciu. Siedząc na kanapach, paląc fajkę wodną i pijąc piwo oraz inne, bliżej nieokreślone napoje, hakerzy doprowadzili się do stanu, w którym ich efektywność wyszła poza skalę.

Wtedy właśnie powstała metoda ataku na webserwery, polegająca na zastosowaniu zapytania POST, zawierającego wiele parametrów. Większość języków programowania stara się stworzyć na ich podstawie tablicę mieszającą (potocznie „haszującą”). Jednak ponieważ parametry mają konfliktujące ze sobą nazwy, to złożoność procesu szybko rośnie, osiągając katastrofalne O(n^2). Oznacza to, że duża liczba konfliktujących parametrów może spowodować, że serwer będzie zajęty ich umieszczeniem w tablicy nawet przez kilka dobrych godzin.

Dla przykładu badacze podają, że 200 tysięcy kolidujących parametrów po 10 bajtów każdy daje 2 MB danych, wymagając 40 miliardów porównań tekstów i zajmuje procesorowi o taktowaniu 1Ghz przynajmniej 40 sekund.

Teoretycznie, przy większej liczbie parametrów, serwer może być zawieszony nawet na 288 minut (8 MB POST). Najbardziej narażone są na to serwery skonfigurowane z wysokimi parametrami post_max_size i max_input_time, czyli służące do wgrywania filmów czy zdjęć, gdzie ustawia się je zazwyczaj wyżej niż w typowej stronie, gdzie wynoszą odpowiednio 8 MB i 60 sekund.

Na atak narażone są wszystkie serwery Apache zaopatrzone w PHP 5 o rewizji mniejszej niż 321040 oraz niektóre serwery z PHP 4. Administratorzy IIS-a też nie mają powodów do radości. Na atak podatne jest również ASP.NET. IIS ogranicza czas wykonywania kodu przeważnie do 90 sekund. Jednak jeśli parametr został zmieniony, to czas zablokowania procesu może wynosić nawet 650 minut.

Problem dotyczy też Apache Tomcata i Geronimo, Jetty, Oracle Glassfisha, oraz innych serwerów na bazie Javy, Pythona, .NET Frameworka, Ruby i V8.

Jak się zabezpieczyć?

Rozwiązań problemu jest kilka. Po pierwsze można zastosować obejścia, takie jak obniżenie wielkości paczki POST, albo zmniejszenie czasu wykonywania kodu. Jednak nie zawsze jest to możliwe. Twórcy oprogramowania będą musieli poświęcić trochę czasu na naprawę błędu w kodzie haszowania. Póki co niektórzy wdrażają obejścia problemu.

W rewizji PHP 5.4.0 dodano parametr max_input_vars pozwalający ograniczyć liczbę parametrów POST. Domyślna wartość to tysiąc. Tomcat w wersji 7.0.23 i 6.0.35 z kolei domyślnie ogranicza liczbę parametrów do 10 tysięcy. Z kolei Microsoft opublikował porady dla użytkowników swoich technologii.

W najlepszej sytuacji są użytkownicy CRuby 1.9 i Perla, które korzystają już z losowych funkcji haszujących, uniemożliwiających atak i są definitywnym rozwiązaniem problemu.

Więcej znajdziecie w dokumencie przygotowanym przez Aleksandra Klinke i Juliana Wälde.

źródło: arstechnica.com, infoq.com, ccc.de

publikuj: Opublikuj w wykop.pl Opublikuj we flaker.pl Opublikuj na OSnews.pl Opublikuj w delicious wydrukuj
6 skomentuj »

Komentarze

  • niezalogowany i nieanonimowy

    #1 niezalogowany i nieanonimowy 2012-01-04 15:19:49 0

    http://www.dobreprogramy.pl/Grozna-luka-w-oprogramowaniu-webowym-Microsoft-wydaje-poprawke,Aktualnosc,29564.html

    to chyba ta sama sytuacja.

    IP: 83.19.12.[...] Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1

  • Ole

    #2 Ole 2012-01-04 15:54:59 0

    A co z projektem Suhosin? Daje spore możliwości ograniczenia/

    IP: 82.177.76.[...] Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1

  • phpowiec

    #3 phpowiec 2012-01-04 17:27:35 0

    Suhosin calkowicie zabezpiecza PHP przed tym atakiem

    IP: 95.108.73.[...] Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7

  • mateooo

    #4 mateooo 2012-01-05 12:21:04 0

    @phpowiec: poprawka: dobrze skonfigurowany suhosin całkowicie zabezpiecza PHP przed tym atakiem

    IP: 31.6.128.[...] Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.26 Safari/535.11

  • ToJa

    #5 ToJa 2012-01-05 16:46:42 0

    No widzę że panowie po dobrym buchu pracowali, to i pomysły mieli dobre :D

    IP: 89.68.147.[...] Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7

  • hipertracker

    #6 hipertracker® 2012-01-09 09:08:25 0

    JRuby jest na tu już odporny http://jruby.org/2011/12/27/jruby-1-6-5-1

    IP: 109.77.130.[...] Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:9.0.1) Gecko/20100101 Firefox/9.0.1

Uwaga! Możesz zarejestrować się w serwisie i w ten sposób zarezerwować swój nick oraz ominąć konieczność ciągłego odczytywania wyrazów.

Aby dodać komentarz, musisz podać swój nick, treść komentarza oraz poprawnie przepisać oba słowa z obrazka (słowa muszą być rozdzielone spacją).
W treści komentarza można używać języka formatowania BBcode.

Polecane książki

Czytaj Webhosting

Chcesz być na bieżąco z naszymi informacjami? Zapisz się na Newsletter.

Zarejestruj domenę

Sprawdź dostępność swojej domeny:

.pl: 0 zł   .com: 19.90 zł
.com.pl: 0 zł   .eu: 19.90 zł