August 2008 Archives

Vulnérabilitée DoS dans REXML

La librairie REXML, utilisé entre autre par RubyOnRails contient une faille. Une attaque de type XML entity explosion” peut être utilisé pour mettre hors service une application utilisant un parseur XML. La plus part des applications Rails sont vulnérable.

Les versions de Ruby touché sont:

  • 1.8.6-p287 et versions précédentes
  • 1.8.7-p72 et versions précédentes
  • 1.9 toute les versions

Voici le patch à appliquer: http://www.ruby-lang.org/security/20080823rexml/rexml-expansion-fix.rb .

Pour patcher votre application, chargez rexml-expansion-fix.rb avant d’utiliser REXML.

require "rexml-expansion-fix"
...
doc = REXML::Document.new(str)
...

Si vous avez une application Rails, copiez le rexml-expansion-fix.rb dans un répertoire de chargement de l’application (RAILS_ROOT/lib/ par exemple), et ajouter le require dans le config/environment.rb

require "rexml-expansion-fix"

Si votre application Rails utilise une version de rails supérieur ou égale à la version 2.1, vous pouvez simplement copier le fichier rexml-expansion-fix.rb dans votre répertoire RAILS_ROOT/config/initializers. Cela devrait permettre de le charger automatiquement au démarrage de votre application.

Par défaut, la limite d’entité XML prise en compte par REXML est à 1000. Vous pouvez changer cette limite en utilisant l’attribut REXML::Document.entity_expansion_limit

Ce fixe sera disponible dans les futures versions de Rails, mais il faut absoluement appliquer ce patch immédiatement.

Merci à Luka Treiber et Mitja Kolsek de ACROS Security pour la découverte de ce problème, et de l’avoir communiqué à l’équipe en charge de la sécurité sur Ruby.

Merci également à Michael Koziarski de la Rails Core Team pour la création du patch correctif.

La news officiel: DoS vulnerability in REXML

Lire la suite...