12:36
17/9/2013

Boleśnie mogli przekonać się o tym właściciele aplikacji napisanych we frameworku Django — standardowa funkcja hashująca przy dłuższych danych wejściowych mogła spowodować zawieszenie pracy serwera.

Wielkość ma znaczenie ;)

Długie hasło w tym przypadku oznaczało naprawdę długie — np. ciąg znaków o rozmiarze 1MB. Dlaczego przetwarzanie tak długiego ciągu mogło zawiesić serwer? Otóż Django wykorzystuje algorytm PBKDF2 do generowania hashy. Algorytm ten poddaje dane wejściowe wielokrotnemu hashowaniu, dzięki czemu atakujący musi poświęcić więcej czasu na “łamanie” skrótu. Negatywnym skutkiem jest jednak obciążenie, jakie może wygenerować ten algorytm podczas przetwarzania dużych danych wejściowych.

Django potrzebowało ok. 1 minuty na przetworzenie hasła o wielkości 1MB. Łatwo sobie wyobrazić, jak zachowałby się serwer, gdyby atakujący co chwila podsyłał mu tej wielkości ciągi na wejście funkcji skrótu.

Długie hasła a łatwość ich przełamywania wedle wskaźnika z GMailowego formularza zakładania konta

Na błąd, 14 września natknął się Josh Wright, a już dzień później Django wypuściło aktualizację wprowadzającą ograniczenie długości dla danych wchodzących na funkcję skrótu do 4096 bytes (co przy założeniu przechowywania jednego znaku na 2 bajtach daje ciągle możliwość wykorzystywania haseł o długości 2048 znaków). Dalej więc zachęcamy do korzystania z możliwie długich haseł.

Przy okazji Django przypomniało o procedurze responsible disclosure. Błędy tego kalibru “bezpieczniej” jest zgłaszać prywatnie do producenta, a nie umieszczać w publicznie dostępnym internecie.


Dowiedz się, jak zabezpieczyć swoje dane i pieniądze przed cyberprzestępcami. Wpadnij na nasz kultowy ~3 godzinny wykład pt. "Jak nie dać się zhackować?" i poznaj kilkadziesiąt praktycznych i przede wszystkim prostych do zastosowania porad, które skutecznie podniosą Twoje bezpieczeństwo i pomogą ochronić przed atakami Twoich najbliższych. Uczestnicy tego wykładu oceniają go na: 9,34/10!

Na ten wykład powinien przyjść każdy, kto korzysta z internetu na smartfonie lub komputerze, prywatnie albo służbowo. Wykład prowadzimy prostym językiem, wiec zrozumie go każdy, także osoby spoza branży IT. Dlatego na wykład możesz spokojnie przyjść ze swoimi rodzicami lub mniej technicznymih znajomych. W najbliższych tygodniach będziemy w poniższych miastach:

Zobacz pełen opis wykładu klikając tutaj lub kup bilet na wykład klikając tu.

10 komentarzy

Dodaj komentarz
  1. Ech, łezka się w oku kręci, aż sobie przypomniałem czasy zip-bomb :-)

    • fork-bomb szybsze i skuteczniejsze. I wkurzające przy programowaniu równoległym.

  2. “Przy okazji Django przypomniało o procedurze responsible disclosure. Błędy tego kalibru “bezpieczniej” jest zgłaszać prywatnie do producenta, a nie umieszczać w publicznie dostępnym internecie.” Jestem pewien, że jakby zgłoszono tą lukę prywatnie, nie publicznie to aktualizacja nie wyszła by tak szybko…

    • Raczej się mylisz. Zespół Django reaguje naprawdę szybko na zgłaszane błędy krytyczne dla działania frameworka lub jego bezpieczeństwa.

    • Internauci lubią zamieniać “swoje widzimisie” na “jestem pewien że…” ;]

    • TĘ lukę.

  3. Guys,

    Żadna “funkcja hashująca” tylko funkcja skrótu.

    • Dude,

      Nikt nie używa nazwy „funkcja skrótu”. Z resztą tutaj akurat chodzi o KDF a nie hash, skoro, jak czytam, Django używa PBKDF2.
      I choć hashowanie w kontekście haseł jest określeniem błędnym to nikt nie ma pomysłu jak to lepiej nazwać (nawet po angielsku, od czasu do czasu tylko odżywają dyskusje na ten temat; a co dopiero po polsku gdzie praktycznie nie ma publikacji z tej dziedziny) więc zwyczajowo mówi się o hashowaniu. A skoro tak to i „funkcja hashująca” razić nie powinna.

      Dobrze, że przycięli do 2k tak jak być powinno, a nie do 20 znaków jak czasami niektórym się zdarza…

  4. Z hasłem też jest problem przy hostingu ut.pl. Dokładnie
    mówiąc w poczcie np. jak ustalimy hasło
    gjhHG65^$uhgjki7hiytytuyiuij66rfyff, będzie wywalać błąd przy
    logowaniu. Problemem jest długość hasła ;)

Twój komentarz

Zamieszczając komentarz akceptujesz regulamin dodawania komentarzy. Przez moderację nie przejdą: wycieczki osobiste, komentarze nie na temat, wulgaryzmy.

RSS dla komentarzy: