Meerdere programmeertalen zijn kwetsbaar voor een denial of service-aanval door het veroorzaken van hash collisions. Met een post-request kan een webserver offline worden getrokken. Onder meer ASP.NET, PHP en Java zijn kwetsbaar.
Het beveiligingsbedrijf n.runs heeft de kwetsbaarheid naar buiten gebracht. Door misbruik te maken van hash tables in programmeertalen kunnen kwaadwillenden de cpu van een webserver volledig in beslag nemen, waardoor deze geen andere requests meer aankan. Daarvoor moeten hash collisions worden veroorzaakt, waarbij meerdere waarden dezelfde hash krijgen.
PHP5, Java en ASP.NET zijn kwetsbaar, net als de javascript-engine V8, die door node.js wordt gebruikt. In sommige gevallen zijn ook PHP4, Python en Ruby kwetsbaar; dat hangt af van de gebruikte versie en of de taal draait op een 32bit- of 64bit-server.
Omdat veel programmeertalen standaard een maximale uitvoeringstijd aan scripts stellen, is het nodig om constant nieuwe hash collisions te blijven sturen. Volgens n.runs is voor een aanval op een webserver met PHP5 en een Core i7-processor 70 tot 100 kilobit per seconde aan bandbreedte nodig om één core bezig te houden. Met een gigabit-verbinding kan één aanvaller zelfs 10.000 cores in een dergelijke configuratie feitelijk uitschakelen.
Microsoft heeft erkend dat ook ASP.NET kwetsbaar is en heeft een update voor de Forefront-firewall uitgegeven die eventuele aanvallen moet herkennen. Overigens kondigde Microsoft niet veel later een noodpatch aan die een kritiek Windows-probleem moet verhelpen. Daarbij gaat het hoogstwaarschijnlijk echter om een ander probleem, omdat ook desktopversies van Windows zijn getroffen.
Ik hoop toch echt dat hier héél binnenkort een patch voor wordt uitgebracht...The maximal POST request size is typically limited to 8 MB, which when filled with a set of multi-collisions would consume about four hours of CPU time on an i7 core.
[Reactie gewijzigd door TvdW op donderdag 29 december 2011 12:07]
ik heb dan nog het geluk dat ik php 4 heb, en dan niet eens op een x86 gebaseerde architectuur. of dit dan veel veiliger is weet ik ook nietPHP4, Python en Ruby kwetsbaar; dat hangt af van de gebruikte versie en of de taal draait op een 32bit- of 64bit-server.
[Reactie gewijzigd door wootah op donderdag 29 december 2011 13:18]
[Reactie gewijzigd door geez op vrijdag 30 december 2011 04:57]
[Reactie gewijzigd door Hadron op donderdag 29 december 2011 22:04]
[Reactie gewijzigd door StM op donderdag 29 december 2011 12:12]
[Reactie gewijzigd door Madnar op vrijdag 30 december 2011 03:51]
[Reactie gewijzigd door djexplo op donderdag 29 december 2011 13:07]
Ja, maar daarvoor geldt hetzelfde. POST is alleen wat bruikbaarder omdat 't niet in de headers van de request zit maar in de body, en dus een potentieel veel grotere hoeveelheid data kan bevatten.Wordt dat dan niet een GET-array ?
POST-variabelen zitten in de headers geloof ik, en niet in de link
Gewoon je scripts een timelimit geven en max_input_vars gebruiken dan ben je veilig.== PHP 5 ==
PHP 5 uses the DJBX33A (Dan Bernstein's times 33, addition) hash function and parses POST form data into the $_POST hash table.
Because of the structure of the hash function, it is vulnerable to an equivalent substring attack.
The maximal POST request size is typically limited to 8 MB, which when filled with a set of
multi-collisions would consume about four hours of CPU time on an i7 core.
Luckily, this time can not be exhausted because it is limited by the max_input_time (default configuration: -1,
unlimited), Ubuntu and several BSDs: 60 seconds) configuration parameter.
If the max_input_time parameter is set to -1 (theoretically: unlimited), it is bound by the max_execution_time configuration parameter (default value: 30).
On an i7 core, the 60 seconds take a string of multi-collisions of about 500k.
30 seconds of CPU time can be generated using a string of about 300k.
This means that an attacker needs about 70-100kbit/s to keep one i7 core constantly busy.
An attacker with a Gigabit connection can keep about 10.000 i7 cores busy.
[Reactie gewijzigd door Ergomane op donderdag 29 december 2011 12:58]
Dus ja, ook al gebruik je zelf geen hash functies is de kans vrij groot dat je kwetsbaar bent.PHP 5 uses the DJBX33A (Dan Bernstein's times 33, addition) hash function and parses POST form data into the $_POST hash table. Because of the structure of the hash function, it is vulnerable to an equivalent substring attack.
[Reactie gewijzigd door Brantje op donderdag 29 december 2011 12:21]
[Reactie gewijzigd door Grrmbl op donderdag 29 december 2011 13:00]
Dat is de gemiddelde snelheid van de verbinding die je nodig hebt om genoeg data te sturen naar een server om 'm lang genoeg bezig te houden dat je in die tijd, met die snelheid, genoeg data stuurt om 'm nog een keer zo lang bezig te houden.70 tot 100 kilobit per seconde lijkt weinig. Kan iemand me uitleggen hoe dit 1 core bezig houdt? Zeker aangezien een enkele computer al dataoverdracht van megabytes per seconde kan bewerkstelligen van en naar een andere computer. (Ja, ik lees het verschil tussen bits en bytes, al zou deze factor 8 hier niet de verklaring zijn lijkt me.)
Ik kom op zo'n 2.2 kbps.Dus als een server een 8 uur bezig is om 8 megabyte aan POST data te parsen, heb je een verbinding nodig van 1 megabyte per uur of ongeveer 18 kbps.
[Reactie gewijzigd door CyBeR op donderdag 29 december 2011 17:52]
Edit: Redenering achter algoritme verduidelijkt"Well, there's your problem..."
[Reactie gewijzigd door Hadron op donderdag 29 december 2011 15:18]
[Reactie gewijzigd door Shoq op donderdag 29 december 2011 19:15]
[Reactie gewijzigd door TheCodeForce op donderdag 29 december 2011 23:35]
Link naar de betreffende paper:The original theory behind this attack vector is described in the 2003 Usenix Security paper
“Denial of Service via Algorithmic Complexity Attacks” by Scott A. Crosby and Dan S. Wallach,
Rice University
[Reactie gewijzigd door Ergomane op donderdag 29 december 2011 13:22]
Op dit item kan niet meer gereageerd worden.
Populair: Asus Samsung Websites en communities Mobiele telefoons Laptops Sony Games Microsoft Consoles Microsoft Xbox One
© 1998 - 2013 Tweakers.net B.V. Contact Over Tweakers Jouw privacy Algemene voorwaarden Cookies
Tweakers wordt uitgegeven door De Persgroep en wordt gehost door True