Une vulnérabilité a été découverte dans le module WEBRick, qui fait
partie de la bibliothèque standard. Elle permet à des tiers malveillants
d\'injecter des séquences d\'échappement vers les logs de WEBRick, en
vue notamment de l\'exécution de caractères de contrôles dangereux au
sein d\'un terminal utilisateur.

Un fix a d\'ores et déjà été produit pour contrer cette faille. De
nouvelles versions intégrant le patch seront produites sous peu. \[màj :
solutions disponibles dans la suite de cette news\]

## Description détaillée

Les séquences d\'échappement de terminaison sont utilisées pour
autoriser un certain nombre d\'interactions entre le terminal
d\'exécution des processus et ces derniers. Un problème classique réside
dans le fait qu\'a priori, ces séquences ne sont pas censées être
produites par une ressource non autorisée du point de vue du terminal,
du type réseau tiers (internet…). Jusqu\'alors, WEBRick ne filtrait pas
les séquences d\'échappement en se basant sur cette approche standard,
de sorte que la protection des logs était faible. Un attaquant distant
pouvait mettre à profit [certaines faiblesses bien connues des
terminaux][1] en injectant dans les logs WEBRick des séquences
d\'échappement bien placées, en vue de leur exécution dans un terminal
client.

Exemple, avec une version non patchée de WEBRick :

    % xterm -e ruby -rwebrick -e 'WEBrick::HTTPServer.new(:Port=>8080).start' &
    % wget http://localhost:8080/%1b%5d%32%3b%6f%77%6e%65%64%07%0a

Regardez le titre de la fenêtre xterm.

## Versions concernées

* Ruby 1.8.6 patchlevel 383 et toutes les versions précédentes
* Ruby 1.8.7 patchlevel 248 et toutes les versions précédentes
* Versions de développement de Ruby 1.8 (1.8.8dev)
* Ruby 1.9.1 patchlevel 376 et toutes les versions précédentes
* Versions de développement de Ruby 1.9 (1.9.2dev)

## Solutions

* Des fixs pour les versions 1.8.6, 1.8.7 et 1.9.1 suivront bientôt
  cette annonce.
  * **Mise-à-jour** 1.8.7 pl. 249 règle le problème pour la brache 1.8.
    Les utilisateurs de la version 1.8.7 sont encouragés à appliquer le
    patch.
    * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.tar.gz][2]
    * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.tar.bz2][3]
    * [https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.zip][4]

  * **Mise-à-jour** 1.9.1 pl. 378 règle le problème pour la branche 1.9.
    Les utilisateurs de la version 1.9.1 sont encouragés à appliquer le
    patch.
    * [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.tar.gz][5]
    * [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.tar.bz2][6]
    * [https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.zip][7]

* Pour ce qui est des versions de développement, une mise-à-jour vers la
  révision la plus récente règle le problème.

## Sources

Merci à Giovanni \"evilaliv3\" Pellerano, Alessandro \"jekil\" Tanasi et
Francesco \"ascii\" Ongaro pur la découvert de cette vulnérabilité.



[1]: http://marc.info/?l=bugtraq&amp;m=104612710031920&amp;w=2 "Terminal Emulator Security Issues"
[2]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.tar.gz
[3]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.tar.bz2
[4]: https://cache.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.zip
[5]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.tar.gz
[6]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.tar.bz2
[7]: https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p378.zip
