Vigil@nce - Ruby : modification de variable malgré SAFE 4
octobre 2012 par Vigil@nce
Ce bulletin a été rédigé par Vigil@nce : http://vigilance.fr/offre
SYNTHÈSE DE LA VULNÉRABILITÉ
Lorsqu’une application Ruby autorise un code externe à s’exécuter
en mode SAFE 4, il peut employer Exception ou NameError, afin de
modifier une variable de l’application.
Produits concernés : Fedora, Unix (plateforme)
Gravité : 2/4
Date création : 03/10/2012
DESCRIPTION DE LA VULNÉRABILITÉ
Le niveau de sécurité "$SAFE = 4" limite les fonctionnalités que
le code Ruby est autorisé à utiliser. Par exemple, en mode SAFE 4,
un code Ruby ne peut pas modifier une chaîne non "taintée"
(c’est-à-dire une chaîne interne à l’application). Le mode SAFE 4
est généralement employé pour exécuter du code provenant d’une
source non sûre, comme un plugin.
Une Exception ou un NameError peut être converti en chaîne. Par
exemple :
Exception.new($variable).to_s
NameError.new($variable).to_s
Les fonctions exc_to_s() et name_err_to_s() sont utilisées pour
effectuer cette conversion. Cependant, ces fonctions "taintent"
automatiquement la variable avec OBJ_INFECT(). Comme la variable
devient "taintée", le mode SAFE 4 n’empêche plus sa modification.
Lorsqu’une application Ruby autorise un code externe à s’exécuter
en mode SAFE 4, il peut donc employer Exception ou NameError, afin
de modifier une variable de l’application. Selon la variable
modifiée, l’application peut ensuite être amenée à effectuer des
opérations non prévues.
ACCÈS AU BULLETIN VIGIL@NCE COMPLET
http://vigilance.fr/vulnerabilite/Ruby-modification-de-variable-malgre-SAFE-4-11993