17:50
22/8/2011

Uwaga! Jeśli crypt() jest wywołana z MD5 salts, wypluwa tylko wartość “soli”. Wywołania crypt() z “solami” DES i BLOWFISH działają poprawnie.

Błąd jest o tyle ciekawy, że jeśli strona wykorzystuje uwierzytelnienie via crypt($haslo, $md5salt), to wynik tej operacji będzie prawdziwy dla każdego hasła, a zatem można się komuś zalogować na konto z dowolnym hasłem ;)

Przeczytaj także:

Ten wpis pochodzi z naszego linkbloga *ptr, dlatego nie widać go na głównej.
*ptr możesz czytać przez RSS albo przez sidebar po prawej stronie serwisu.

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.

7 komentarzy

Dodaj komentarz
  1. Za każdym razem jak wydaje się że PHP jest skopane do granic możliwości, przesuwają granice możliwości.

    Ktoś przeglądał może ichniego SVNa żeby zobaczyć po co w ogóle ruszali kod do crypta?

    • Meh, przesadzasz – bugi zdarzają się każdemu. Najważniejsze że zauważono i naprawiono i będzie już ok w następnej wersji.

      Swoją drogą to ciekawy dylemat jest… Updateować systemy jak tylko się pojawiają nowe wersje (żeby załatać ewentualne poprzednie dziury), czy zaczekać jakiś (jak długi?) czas na wypadek gdyby wyszło tak jak w tym przypadku? ;-)

    • W przypadku PHP *nigdy* nie instalować na żywioł. Bug z notki to co prawda dość jaskrawy przykład ale nie pamiętam żadnego upgrade’u (o trzeci numer wersji), który by nic nikomu nie zepsuł.

      W przypadku innego softu można przejrzeć notatki do wydania — i działać zależnie od powagi problemów, które danej instalacji dotyczą.

      Jądro (jeżeli to Linux) to w ramach jednego -stable raczej można w ciemno instalować, chociaż i tu zdarzały się poważne regresje.

  2. No cóż, obecny kernel 2.6.40 ma tyle błędów, że trzeba było go nazwać 3.0 (na kilku maszynach działa, na kilku innych regularnie Oopsuje).
    A w PHP zdarzały się już większej klasy błędy, choć trzeba przyznać, że dość szybko łatane. Niestety w to wchodzi inercja przygotowania paczek dystrybucji, które przedłużają cały cykl.

    • “No cóż, obecny kernel 2.6.40 ma tyle błędów, że trzeba było go nazwać 3.0”.

      Płetwy mi opadły. Chyba że to ironia taka. (hint: 3.0 nie nazywa się 2.6.40 tylko i wyłącznie z powodu fanaberii Linusa). Fakt że bywały lepsze wydania ale z numerem wersji to ma niewiele wspólnego (tyle że rozmaite narzędzia są strasznie zdziwione że im `uname -r` nie pasuje do /^2\.[46]\.\d+/)

    • Tak, to była ironia, umknęła mi emotikona ;) przy pierwszym zdaniu. Chociaż zdanie też odnosi się do wielu wypowiedzi na sieci, gdzie ludkowie śmieją się z ilości błędów wytykając właśnie, że zmiana numeracji przysporzyła tylu błędów, bo przecież w linii stabilnej/bez zmiany numeracji było by to nie do pomyślenia – oczywiście nadal ironicznie.

  3. Dla ciekawskich, commit psujący crypt():
    http://svn.php.net/viewvc?view=revision&revision=314438

    Zmiany wyglądały tak:
    strcat(passwd, “$”); //dobrze
    strncat(passwd, “$”, 1); // jeszcze dobrze
    strlcat(passwd, “$”, 1); // źle, commiter nie odróżnia strncat od strlcat!
    strcat(passwd, “$”); // w końcu jak było… dlaczego nie strlcat(passwd, “$”, 2); ?

    Nie ma to jak beztroskie masowe commity pt. “usunę wszystkie wystąpienia X” oraz nieznajomość dokumentacji języka…

Twój komentarz

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

RSS dla komentarzy: