Hoe álle websites een DoS-gat hebben

door

ddos-aanval

door

Analyse - Net voor de jaarwisseling is een groot gat onthuld waardoor bijna elke website is plat te leggen met een pc en een lichte DSL-verbinding. De zwakke plek zit namelijk in veelgebruikte programmeertalen.

Twee dagen vóór de jaarwisseling is een groot beveiligingsgat onthuld, dat niet één specifiek product raakt maar verschillende platformen voor websites en webtoepassingen. Met een speciaal gevormd pakket kunnen processorcores voor korte tijd volledig worden belast, waarmee complete websites zijn neer te halen. Dit DoS-gat (denial of service) is vorige week onthuld op hackerconferentie CCC in Berlijn.

Noodpatch Microsoft

Het eigenlijke gat zit in veelgebruikte programmeertalen, zoals PHP, Java en Microsofts ASP.NET. Laatstgenoemde vormt de basis voor de bij Windows Server meegeleverde webserver IIS. Microsoft heeft op zeer korte termijn een noodpatch aangekondigd én die afgelopen vrijdag ook uitgebracht.

Die patch is voor alle huidige Windows-versies en dicht het eigenlijke gat in Microsofts .Net-raamwerk. Dat programmeerplatform komt mee met Windows. Het bedrijf is eind november geïnformeerd, bijna een maand na de makers van de andere kwetsbare software (PHP, Oracle, Python, Ruby, Google). Ook zij hebben inmiddels maatregelen genomen, hoewel sommige daarvan officieel nog niet geschikt zijn voor gebruik in de praktijk.

Al in november is gemeld dat Java-software hiermee kan worden geDoS't. Dit raakt dus op Java gebaseerde webapplicatieservers als Apache Tomcat, Apache Geronimo, Jetty en Oracle Glassfish. De meeste van deze pakketten zijn al voorzien van een workaround, of krijgen die binnenkort. Oracle heeft verklaard dat het niet het onderliggende Java wil aanpassen.

Vastlopen op doublures

De zwakke plek zit in hashes die worden gebruikt om het opslaan en weer ophalen van webpagina-data te versnellen. Dit zijn dus geen hashes voor de versleuteling (encryptie) van bijvoorbeeld wachtwoorden. De hashes voor vlotte data-opslag en -uitlezing kunnen bij normaal gebruik doublures opleveren, die de processor van de server dan met elkaar vergelijkt.

Kwaadwillenden kunnen, met kennis van het gebruikte hashing-algoritme, een speciaal geprepareerd http-verzoek sturen dat voor alleen maar doublures zorgt. De webserver moet al die doublures vergelijken, wat een zeer zware processorbelasting oplevert. Het hiervoor benodigde http-pakket kan zeer klein zijn, waardoor er relatief weinig bandbreedte nodig is om een succesvolle DoS-aanval uit te voeren.

Bandbreedte van telefoonmodems

In het geval van Microsofts webserver IIS is een http-pakket van 100 KB (kilobyte) voldoende om één processorcore zo'n anderhalve minuut volledig te bezetten. Met voldoende - maar toch nog relatief bescheiden - bandbreedte kan een enkele aanvaller op deze manier zware webservers en clusters uitschakelen, zónder botnet. Een 'antieke' bandbreedte van slechts 30 Kilobit per seconde (Kbps) is voldoende om één core van een oudere Core2-processor te belasten. Een aanval via een Gigabit-verbinding kan dan 30.000 van die rekenkernen bezet houden.

Voor PHP5 is een wat groter datapakket nodig: zo'n 800 KB, blijkt uit de white paper (PDF) van de security-onderzoekers die dit DoS-gat hebben ontdekt. Een aanval op een webserver met een quadcore i7-processor heeft een bandbreedte van 280 tot 400 Kbps (kilobit per seconde) nodig. Een Gigabit-verbinding (1 Gbps) kan 10.000 i7-cores (ofwel 2500 i7-processors) constant belasten.

Java is een flink zwakker platform. De Apache Tomcat-software is draaiend op een quadcore i7 met ongeveer 24 Kbps aan bandbreedte voor korte tijd te DoS'en. Een reeks pakketten van in totaal 2 megabyte (MB) levert een processorbezetting van wel 44 minuten op. Een enkele core van een i7-processor kan worden geclaimt met een 'prehistorische' bandbreedte van 6 kbps. Een aanval met 1 Gbps bezet dan 100.000 i7-cores.

Tijdens de onthulling op CCC hebben de ontdekkers van dit DoS-gat een Tomcat-server onder vuur genomen. Die demonstratiemachine was nog niet beschikbaar toen hun presentatie voorbij was. Python en Ruby scoren nog slechter dan Java. Webtoepassingen gebaseerd op die twee talen zijn te DoS'en met respectievelijk 20 Kbps en 720 bps per core, hoewel die bandbreedte gebaseerd is op respectievelijk een oudere Core Duo- en een nieuwe i7-processor.

Perl al in 2003

Overigens is de onderliggende kwetsbaarheid in de diverse programmeertalen in wezen al in 2003 ontdekt (PDF) voor Perl. Voor die taal is het gat toen ook gefixt. "De meeste andere talen hebben om één of andere reden dit voorbeeld niet gevolgd en zijn nog steeds kwetsbaar voor deze aanvallen", blogt securityleverancier Sophos. Perl is een relatief weinig gebruikte taal voor webtoepassingen.

PHP is met voorsprong de grootste: het doet dienst voor 77,3 procent van alle webtoepassingen. Die aanvoerder wordt op afstand gevolgd door Microsofts ASP.net met 21,7 procent. Nummer drie is Oracle's Java met een bescheiden 4 procent, gevolgd door ColdFusion met 1,2 procent, Perl met 1 procent, Ruby met 0,6 procent, Python met 0,2 procent en JavaScript met minder dan 0,1 procent. Deze marktaandelen zijn volgens metingen van W3Techs.com in december 2011, die de Duitse DoS-ontdekkers aanhalen in hun presentatie.

Snel reageren

Volgens de ontdekkers van dit DoS-gat was Microsoft een van de partijen die snel reageerde. Ook het team achter Ruby is vlot met een patch gekomen, terwijl de nieuwere versie 1.9 (uit 2008) niet kwetsbaar blijkt. Veel van de andere betrokken softwaremakers hebben inmiddels ook workarounds uitgebracht.

Zo hebben de ontwikkelaars van het op Java gebaseerde Apache Tomcat updates uitgebracht, meldt de Duitse techsite The H. Deze Tomcat-patches dichten het gat zelf niet, maar leggen een bovengrens op aan het 'DoS-effect' van een enkel datapakket. Hetzelfde is ook al gedaan door de ontwikkelaars van PHP: zij hebben in december een update uitgebracht net vóór de onthulling op hackerconferentie CCC.

Deze PHP 5.4.0 RC4 is echter nog een versie die niet helemaal af is: het is een release candidate. De PHP-makers stellen zelf dat die niet gebruikt moet worden in productie-omgevingen. Hetzelfde geldt voor voorganger 5.3.9 RC4, die ook is beschermd tegen dit DoS-gat. De officiële stabiele PHP-versie (5.3.8) is nog wel kwetsbaar.

Eerste stap

Het beperken van de DoS-mogelijkheden is maar een eerste stap in de goede richting, aldus de security-onderzoekers die dit DoS-gat hebben ontdekt. Zij reiken zelf al de belangrijkste, en definitieve, oplossing aan: gebruik een hash-functie die echt willekeurig is. Dit zijn dus echte random hashes, die niet vantevoren kunnen worden voorspeld, zelfs niet als je het gebruikte algoritme kent. Ze zijn daardoor niet te misbruiken met een malafide http-verzoeken om webdiensten te DoS'en.

De in 2008 uitgekomen versie 1.9 van Ruby gebruikt al echte random hashes, net zoals Perl sinds 2003. Het is overigens geen makkelijke klus om over te stappen van semi-random naar echt random hashes. “We kijken ernaar. Het veranderen van de core hash-functie in PHP is geen triviale verandering en zal ons enige tijd kosten", liet PHP-ontwikkelaar Rasmus Lerdorf eind november weten aan de hackers.

Daarom ook dat veel van de getroffen ontwikkelaar eerst workarounds hebben doorgevoerd die maxima opleggen aan het aantal verzoeken en threads dat één enkele http-pakket mag veroorzaken. Microsoft heeft dat met zijn patch ook gedaan. Een echt willekeurige hash-functie wordt later doorgevoerd.

Tegenmaatregelen

Ondertussen kunnen beheerders eigen workarounds instellen, veelal gelijk aan wat softwaremakers nu doen. Zo kunnen ze het gat dus afdekken in plaats van echt dichten. Dit kan op verschillende manieren, waaronder het lager instellen van de maximale omvang die een http-pakket mag hebben. Deze maatregel is niet voor alle websites te gebruiken. Sommige webtoepassingen gebruiken van zichzelf grotere pakketten en dat beperken zou dus de dienst zelf kunnen saboteren. Microsoft heeft hier al voor gewaarschuwd in zijn security-bulletin vóór het uitbrengen van zijn .Net-patch.

Andere beheerdersmaatregelen zijn het beperken van het aantal parameters dat is toegestaan, de mate van cpu-belasting die een http-verzoek mag veroorzaken, en een tijdslimiet voor het draaien van processen. Laatstgenoemde is een valide optie voor PHP en Microsofts IIS, draaiend op ASP.NET. Deze workaround is normaliter niet beschikbaar voor Java-applicatieservers, merken de hackers op in hun presentatie.

Een complete lijst van de getroffen webplatformen, inclusief eventuele niet-kwetsbare of gefixte versies, is te vinden bij oCERT (het Open Source Computer Security Incident Response Team). Via die security-organisatie hebben de hackers ook hun ontdekking gemeld aan de verantwoordelijke software-ontwikkelaars.

Hackers Alexander Klink, van het Duitse bedrijf n.runs, en Julian Wälde van de Technische Universiteit Darmstadt, bespreken hun grote DoS-ontdekking op CCC. Hun technische presentatie (PDF) is ook te downloaden.

eerst ▾ Reacties

De reacties worden ingeladen...

Insider naam

 
{$quantity}%

Mijn insider overzicht Uitloggen

Briefcase({$quantity}) Mijn Downloads({$quantity})

Word insider

  • Exclusieve content
  • Achtergrond verhalen
  • Praktische tips

Topbedrijven met ICT vacatures

IT Innovation Day 2014
 
dagen
:
 
uren
:
 
min.
:
 
sec.
promotionele afbeeldingen promotionele afbeeldingen

Webwereld nieuwsbrief

Ontvang dagelijks een overzicht van het laatste ICT-Nieuws in uw mailbox.