Atak przez kolizje tablic skrótów

Luka w ochronie platform webowych sprawia, że możliwy jest atak odmowy obsługi, który nie wymaga dużego pasma ani wynajmowania botnetu. Wystarczą odpowiednie żądania wysyłane za pomocą POST.

Szybkie porady

Administratorzy oraz deweloperzy powinni zainteresować się wsparciem dostawców technologii i wprowadzić aktualizacje, gdy tylko to będzie możliwe. Dodatkowo specjaliści z CERT zalecają następujące środki zaradcze:

- Wprowadzenie ograniczeń na czas CPU - ograniczenie czasu przetwarzania pojedynczego żądania umożliwi minimalizację obciążenia generowanego przez przetwarzanie złośliwych żądań wykorzystujących podatność.

- Ograniczenie rozmiarów żądań POST - w ten sposób można ograniczyć liczbę możliwych kolizji skrótu, a zatem utrudnić atak.

- Ograniczenie liczby parametrów - niektóre serwery umożliwiają zmniejszenie liczby parametrów przekazywanych w pojedynczym żądaniu, dzięki czemu degradacja tabeli skrótów nie postępuje tak szybko.

Problem został ujawniony po raz pierwszy w 2003 roku i wtedy podjęto pierwsze działania zaradcze. Wydawało się, że kłopot zniknął, ale obecne badania udowodniły, że skala zjawiska jest znacznie szersza niż sądzono. Obejmuje wszystkie główne platformy aplikacji webowych, wliczając w to zarówno rozwiązania komercyjne, jak i open source.

Celem ataku jest funkcja POST, za której pomocą można wywołać atak odmowy obsługi, zarówno na masową skalę, z użyciem wielu przejętych komputerów (do tego celu napastnicy zazwyczaj stosują botnety), jak i z pojedynczego źródła. Jak podaje firma badawcza n.runs AG, która wykryła lukę, wykorzystywane w językach Perl oraz CRuby tablice skrótów kryptograficznych są podatne na kolizje. Luka wykryta osiem lat temu objęła platformy PHP5, Java, Microsoft .NET oraz Google v8, ale 4, Ruby oraz Python również były podatne, chociaż w znacznie mniejszym stopniu. Ekipa pracująca nad bezpieczeństwem platformy Ruby zareagowała dość szybko, wydając odpowiednie poprawki, wprowadzające zmianę w obsłudze skrótów kryptograficznych. Podobne działania wprowadzono w serwerach Apache Tomcat, a Microsoft wydał poradę bezpieczeństwa związaną z platformą ASP.NET. Jak dotąd firma Oracle nie wprowadziła poprawki.

Winne są kolizje

Tablice skrótów są często używaną strukturą danych w większości języków programowania. Webowe serwery aplikacyjne często przetwarzają dane formularzy przesyłane za pomocą POST (a dane te mogą być kontrolowane przez napastnika praktycznie w dowolny sposób) i automatycznie tworzą tablice skrótów, z których mogą skorzystać deweloperzy aplikacji.

Pod względem bezpieczeństwa krytyczną własnością tablic skrótów jest odporność na kolizje. Innymi słowy, nie może istnieć szybsza metoda znalezienia dwóch porcji danych wejściowych dających ten sam skrót niż łamanie metodą brute force. Brak odporności skutkuje tym, że niektóre algorytmy skrótu są uznawane za niebezpieczne (przykładem jest MD5) i wykorzystanie podatności może posłużyć do wygenerowania fałszywych certyfikatów dla urzędów certyfikacji lub złamania innych zabezpieczeń kryptograficznych.