Faille CVE-2015-7551 : vulnérabilité liée à une chaîne de caractère dans Fiddle et DL
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
Actualité récente
Sortie de Ruby 3.4.4
Ruby 3.4.4 est sorti.
Posté par k0kubun le 2025-05-14
Ruby 3.5.0 preview1 est disponible
Nous avons le plaisir d’annoncer la sortie de Ruby 3.5.0-preview1. Ruby 3.5 met à jour sa version Unicode vers 15.1.0, et plus encore.
Posté par naruse le 2025-04-18
Ruby 3.4.3 est disponible
Ruby 3.4.3 est sorti.
Posté par k0kubun le 2025-04-14
Ruby 3.3.8 est disponible
Ruby 3.3.8 est sorti.
Posté par nagachika le 2025-04-09