CSIRTCV

Está usted visitando una publicación en la hemeroteca de CSIRT-CV.
Para acceder al portal y contenido actual, visite https://www.csirtcv.gva.es

02/01/2012

Una vulnerabilitat podria permetre deixar sense servici a la majoria de servicis web

Imagen de Chaos Una vulnerabilitat, que afecta la gran majoria de les plataformes de servicis web actuals, podria permetre la realització d’atacs de denegació de servici.

La vulnerabilitat va ser presentada por dos investigadors en una conferència del ja mític congrés Chaos Communication Congress, organitzat pel Chaos Computer Club.

La conferència completa està disponible en este vídeo http://www.youtube.com/watch?v=R2Cq3CLI6H8&feature=player_embedded

El problema afecta una llarga llista de tecnologies de desenrotllament web, incloent-hi PHP, ASP.NET, Java, Python, Ruby, Apache Tomcat, Apache Geronimo, Jetty o Glassfish. Concretament versions:

Bàsicament és més fàcil citar els llenguatges que no afecta: Perl i CRuby 1.9.

La base de la vulnerabilitat residix que pràcticament tots els llenguatges emmagatzemen en taules de dispersió (hash) els valors dels paràmetres de les peticions web. Però les funcions de dispersió (hash) empleades es veuen afectades per col·lisions. Per la qual cosa és fàcil generar peticions amb paràmetres que tinguen el mateix hash. De manera que quan el servidor inserix els valors en la taula de dispersió (hash) es veu obligat a realitzar un gran nombre d’operacions. El que, amb un nombre adequat de paràmetres, provoca la denegació de servici.

Este problema no és nou, bàsicament és idèntic a un altre ja conegut des de 2003, que afectava Perl. Motiu pel qual este llenguatge ja incorpora l’adequada solució, que passa per aleatoritzar la clau empleada per a calcular la dispersió (hash). D’esta manera, l’atacant no podrà precalcular paràmetres amb hashes que provoquen col·lisions. Una altra forma d’evitar la fallada, molt més senzilla, passa per limitar el nombre de paràmetres processats en cada petició.

Per a tindre una idea de l’abast del problema, en un sistema amb Intel Core i7, sobre una aplicació PHP, bastarien 500k de dades POST per a ocupar un minut de temps de càlcul de CPU. De tal manera que hi hauria prou amb una connexió d’entre 70 a 100 kbits/s per a mantindre ocupada una CPU d’este tipus.

Els principals llenguatges ja han publicat actualitzacions i pedaços que corregixen esta vulnerabilitat, que poden ser descarregats des de la pàgina oficial de cada un d’ells.

Microsoft, per exemple, ha publicat un butlletí d’urgència per a corregir esta vulnerabilitat en Microsoft .NET Framework (si bé este problema no és considerat crític), a més de solucionar altres tres vulnerabilitats (una d’elles crítica).

Apache Tomcat ha implementat una contramesura per a evitar els efectes d’un possible atac, per al qual proporciona la nova opció "maxParameterCount", que limita el nombre de paràmetres processats en cada petició. Per defecte està fixat a 10.000, prou alt per a suportar qualsevol aplicació i prou baix per a mitigar els efectes del DoS. Esta contramesura està disponible en les branques 7.0.23 (d’ara en avant) i 6.0.35 (d’ara en avant).

En PHP una contramesura passa per limitar el temps de CPU de generació d’una resposta per mitjà de "max_input_estafe".

Altres actualitzacions:

Més informació:

#2011-003 multiple implementations denial-of-service via hash algorithm collision
http://www.ocert.org/advisories/ocert-2011-003.html

Efficient Denial of ServiceAttacks on Web ApplicationPlatforms
http://events.ccc.de/congress/2011/Fahrplan/attachments/2007_28C3_Effective_DoS_on_web_application_platforms.pdf

Microsoft Security Bulletin MS11-100 – Critical

Vulnerabilities in .NET Framework Could Allow Elevation of Privilege (2638420)
http://technet.microsoft.com/es-es/security/bulletin/ms11-100

[SECURITY] Apache Tomcat and the hashtable collision DoS vulnerability
http://mail-archives.apache.org/mod_mbox/www-announce/201112.mbox/%3C4EFB9800.5010106@apache.org%3E

Denial of Service through hash tablemulti-collisions
http://www.nruns.com/_downloads/advisory28122011.pdf

Denial of Service via Algorithmic Complexity Attacks
http://www.cs.rice.edu/~scrosby/hash/CrosbyWallach_UsenixSec2003/index.html

CCC Event blog – 28C3
http://events.ccc.de/

Font: Hispasec una-al-día

CSIRT-CV