Takiej dziury dawno nie było, czyli jak załatwić pół Internetu
Jeśli Microsoft nagle udostępnia niezapowiedzianą poprawkę (pierwszą taką w 2011) i zaleca jak najszybsze jej zainstalowanie, to wiedz, że coś się dzieje - możnaby rzecz, parafrazując pewnego kapłana. Bo faktycznie dzieje się - dwaj specjaliści ds. bezpieczeństwa znaleźli poważny błąd w większości popularnych języków programowania wykorzystywanych do tworzenia stron i aplikacji webowych. Jeden odpowiednio zdolny człowiek, jeden komputer, łącze internetowe - dzięki luce taki zestaw wystarczy do zablokowania znacznej części witryn i aplikacji www.
Problem jest bardzo poważny choćby dlatego, że nie dotyczy tylko jednego języka programistycznego - z ustaleń Alexandra Klinka i Juliana Walde (dwóch niemieckich specjalistów ds. bezpieczeństwa, którzy znaleźli błąd) wynika, że pilnego zaktualizowania wymagają m.in. ASP .Net Microsoftu, PHP, Ruby, Java (rozwijana obecnie przez Oracle) oraz Google V8.
Błąd - o którym pisze m.in. Computerworld - związany jest z obsługą tzw. tablic mieszających (ich zadaniem jest przechowywanie danych, do których potrzebny jest szybki dostęp). Okazuje się, że w pewnych okolicznościach (tzn. jeśli nie zastosowane zostaną dodatkowe zabezpieczenia - a zwykle nie są) możliwe jest stworzenie pakietu danych, który po dostarczeniu do tablicy spowoduje dużą liczbę tzw. kolizji. Taki pakiet można dostarczyć do aplikacji/strony za pomocą standardowego zapytania HTTP - gdy to nastąpi, serwer zacznie poświęcać coraz większą część zasobów na obsługę owych kolizji, co z czasem doprowadzi do jego zablokowania.
Klink i Walde twierdzą, że metoda ta jest bardzo skuteczna i nawet niewielki pakiet może w krótkim czasie "powalić" całkiem potężny, dobrze zabezpieczony serwer. Nie jest do tego potrzebne szybkie łącze czy duża liczba maszyn, wysyłających jednocześnie pakiety - wystarczy jeden człowiek i jeden komputer.
O powadze sytuacji niech świadczy fakt, że Microsoft udostępnił już poprawkę dla ASP .Net - jest to pierwsza w tym roku aktualizacja, którą koncern opublikował bez zapowiedzi i poza swoim standardowym cyklem (zwykle poprawki MS pojawiają w każdy drugi wtorek miesiąca). W tym roku Microsoft miał już kilka poważnych luk w zabezpieczeniach, ale żadna inna nie sprowokowała go do tak szybkiej reakcji. Aktualizację przygotowali również autorzy Ruby, zaś twórcy PHP przygotowali wersję RC (release candidate) wolnego od błędu wydania 5.4.0.
Najciekawsze jest to, że problem tak naprawdę jest znany od blisko 10 lat - mechanizm ataku opisano dość dokładnie w 2003 r. ale do tej pory nie zaprezentowano skutecznej metody jego przeprowadzenia. Pewnie dlatego autorzy większość języków zignorowali problem i teraz muszą go rozwiązywać w biegu - bo choć Klink i Walde oczywiście nie podali szczegółowych informacji na temat luki, to pewne wydaje się, że ktoś ją wkrótce odkryje. A wtedy może zrobić się naprawdę nieciekawie. W końcu już teraz mamy dość problemów z botnetami, których operatorzy z różnych powodów (dla pieniędzy, dla idei itp.) przeprowadzają klasyczne ataki DDoS przeciwko stronom WWW - gdyby nagle okazało się, że równie skuteczny atak może przeprowadzić jeden człowiek z jednym komputerem, to… nie chciałbym być w skórze administratorów stron stworzonych w którymś z podatnych na atak języków.