Dépassement du tas dans la lecture de nombres à virgule flottante (CVE-2013-4164)

Un dépassement sur le tas (heap overflow) affectant la lecture des nombres à virgule flottante existe dans Ruby. Cette vulnérabilité est référencée par l’identifiant CVE-2013-4164.

Détails

À chaque fois qu’une chaîne de caractères est convertie en nombre à virgule flottante, il existe la possibilité qu’une chaîne de caractères spécialement construite puisse provoquer un dépassement sur le tas. Cela peut conduire à une attaque de type déni de service, via des segmentation faults, et potentiellement à l’exécution de code arbitraire. Tout programme qui convertit des données provenant d’une source inconnue en nombres à virgule flottante (ce qui est particulièrement fréquent quand un programme accepte du JSON) est touché par cette vulnérabilité.

Le code vulnérable est du type :

untrusted_data.to_f

Ainsi, tout code qui produit des nombres à virgule flottante à partir de données externes est vulnérable. Par exemple :

JSON.parse untrusted_data

Notez que ce bug est similaire à celui décrit par CVE-2009-0689.

Tous les utilisateurs utilisant une version de Ruby concernée par ce bug sont encouragés à mettre à jour Ruby vers une version qui corrige ce problème.

Versions concernées

  • Toutes les versions de Ruby 1.8
  • Toutes les versions de Ruby 1.9 antérieures à Ruby 1.9.3 patchlevel 484
  • Toutes les versions de Ruby 2.0 antérieures à Ruby 2.0.0 patchlevel 353
  • Toutes les versions de Ruby 2.1 antérieures à Ruby 2.1.0 preview2
  • Toutes les versions antérieurs à la révision 43780 de trunk

Solutions

Tous les utilisateurs sont encouragés à mettre à jour vers Ruby 1.9.3 patchlevel 484, Ruby 2.0.0 patchlevel 353 ou Ruby 2.1.0 preview2.

Veuillez noter que la série 1.8 de Ruby, ainsi que les versions antérieures, n’est plus maintenue. Il n’est pas prévue de sortir une version qui corrigerait ce problème pour ces versions. Les utilisateurs de telles versions sont encouragés à mettre à jour dès que possible, vu que nous ne pouvons pas garantir la disponibilité de corrections pour les failles de sécurités sur ces versions obsolètes.

Crédits

Merci à Charlie Somerville pour avoir remonté ce problème !

Historique

  • Publié originellement à 2013-11-22 04:00:00 UTC
  • Publié une seconde fois à 2013-11-22 06:46:00 UTC