Widzę, że nikt na głównej Joggera jeszcze o tym nie napisał, więc króciutka notka:
Wyszedł 0-day na PHP wykorzystujący bug w algorytmie tablicy haszującej. Dzięki generowaniu kolizji można wywrócić serwer lub przynajmniej zdrowo go przyciążyć. Problem oprócz PHP dotyczy także mniej lub bardziej innych popularnych języków (We show that PHP 5, Java, ASP.NET as well as v8 are fully vulnerable to this issue and PHP 4, Python and Ruby are partially vulnerable, depending on version or whether the server running the code is a 32 bit or 64 bit machine
).
Pozostaje czekać na oficjalne łatki.
Więcej informacji (oraz wyjaśnienie problemu): Hash Table Collisions ≈ Packet Storm
@BTM: to nie ma znaczenia, mówimy tutaj o wewnętrznym obsługiwaniu $_POST przez PHP. Plik index.php może być nawet pusty, a problem i tak wystąpi.
@Caladan: podlinkowany artykuł ma opisaną sytuację w przypadku innych języków skryptowych ;)
IMHO, atak na każdy język który korzysta z hash tablicy jest możliwy.
W końcu sposób działanaia i radzenie sobie z kolizjami jest taki sam.
A z łatkami... albo zmienią f. hashujące, przejdą na 64-bitowe liczbby dla hashy albo może odrazu 160-bitowe (I kryptograficzne f. skrótów :))
F. hashująca generowana przy starcie serwera też by mogła trochę pomóc, albo dynamiczne zmienianie jej gdy wystepuje duża liczba kolizji.
A Perl jest oczywiście odporny, developerzy Perla zdawali sobie sprawę z zagrożenia i ostatnią podatną wersją było 5.8.0 (wydana w 2002 roku). Pozdrawiam użytkowników języków drugiej kategorii :))))
Chociaż, dla 5.3.9 RC4 się nie chwalą, na dodatek nic o security nie wspomniane:
22 Dec 2011, PHP 5.4.0 RC4
- Core:
. Added maxinputvars directive to prevent attacks based on hash collisions
(Dmitry)
Do pewnego stopnia nici z tej dziury.
BTM
Dlatego jeżeli przyjmujemy dane od nie zaufanego usera najlepiej używać SplFixedArray