Posté par usa le 2015-12-16
Traduit par Jean-Denis Vauguet
La librairie Fiddle (wrapper libffi) et l’API DL comportent une
vulnérabilité liée à la possibilité de compromettre une chaîne de caractère.
Cette vulnérabilité s’est vue assigner l’identifiant CVE
CVE-2015-7551.
Détails
La vulnérabilité a tout d’abord été signalée sous l’identifiant CVE-2009-5147
dans DL. Elle a été corrigée, puis malheureusement réintroduite lors de la
réécriture de DL avec Fiddle et libffi.
La correction initiale pour CVE-2009-5147
s’est faite dans Ruby 1.9.1, mais n’a pas été portée sur les autres branches, de
sorte que les versions de Ruby incorporant DL (mise à part Ruby 1.9.1) sont
touchées par cette faille.
Voici une démonstration de la vulnérabilité :
handle = Fiddle::Handle.new(dangerous_user_input)Ou bien encore :
handle = Fiddle::Handle.new(some_library)
function_pointer = handle[dangerous_user_input]Nous invitons fortement tous les utilisateurs d’une version affectée par cette vulnérabilité à procéder à une mise à jour, ou au minimum à implémenter un contournement (hotfix) le plus rapidement possible (cf. ci-après).
Versions affectées
- Toutes les releases de niveau “patch” pour Ruby 1.9.2 et Ruby 1.9.3 (
DLetFiddle). - Toutes les releases de niveau “patch” pour Ruby 2.0.0 avant p648 (
DLetFiddle). - Toutes les versions de Ruby 2.1 antérieures à Ruby 2.1.8 (
DLetFiddle). - Toutes les versions de Ruby 2.2 antérieures à Ruby 2.2.4 (
Fiddle). - Ruby 2.3.0-preview 1 et -preview 2 (
Fiddle). - Sur le
trunk, toute version avant la révision 53153 (Fiddle).
Contournements
Si vous ne pouvez pas mettre à jour votre version de Ruby, vous pouvez choisir
d’implémenter un contournement pour Fiddle :
class Fiddle::Handle
alias :old_initialize :initialize
def initialize file, *args
raise SecurityError if file.tainted? && $SAFE > 0
old_initialize file, *args
end
alias :sym :[]
alias :old_call :[]
def [] fun
raise SecurityError if fun.tainted? && $SAFE > 0
old_call fun
end
endSi vous utilisez encore DL, passez à Fiddle.
Remerciements
À Christian Hofstaedtler zeha@debian.org pour avoir remonter le bug !
Historique
- Initialement publié le 16 décembre 2015 à 12:00:00 UTC