Vigil@nce - Ruby : corruption de mémoire via BigDecimal
mai 2011 par Vigil@nce
Ce bulletin a été rédigé par Vigil@nce : http://vigilance.fr/
SYNTHÈSE DE LA VULNÉRABILITÉ
Lorsqu’un attaquant peut forcer une application Ruby à utiliser un
BigDecimal très grand, sur une machine 64 bits, il peut corrompre
la mémoire de l’application, afin de la stopper ou d’y exécuter du
code.
Gravité : 2/4
Date création : 23/05/2011
PRODUITS CONCERNÉS
– Mandriva Corporate
– Mandriva Enterprise Server
– Mandriva Linux
– Microsoft Windows - plateforme
– Unix - plateforme
DESCRIPTION DE LA VULNÉRABILITÉ
Le module Ruby BigDecimal gère les calculs sur les grands nombres.
Il est par exemple utilisé en cryptographie.
La fonction VpMemAlloc() du fichier bigdecimal/bigdecimal.c alloue
la zone mémoire nécessaire pour stocker un BigDecimal. Cette
fonction tronque (via un "cast") la taille du BigDecimal à 32
bits, puis elle initialise le BigDecimal avec memset(). Cependant,
l’initialisation est effectuée sur la taille non tronquée. Les
octets situés après 2^32 octets sont alors mis à zéro sur une
machine 64 bits.
Lorsqu’un attaquant peut forcer une application Ruby à utiliser un
BigDecimal très grand, sur une machine 64 bits, il peut donc
corrompre la mémoire de l’application, afin de la stopper ou d’y
exécuter du code.
ACCÈS AU BULLETIN VIGIL@NCE COMPLET
http://vigilance.fr/vulnerabilite/Ruby-corruption-de-memoire-via-BigDecimal-10678