Vulnerabilidad por evasión de validación del nombre de cliente de SSL (CVE-2013-4073)

Publicado por nagachika el 2013-06-27
Traducción de David Padilla

Vulnerabilidad en el cliente de SSL de Ruby que puediera permitir a atacantes, utilizando la técnica de man-in-the-middle, falsificar certificados de SSL por medio de un certificado válido, expedido por una autoridad de certificados confiable.

A esta vulnerabilidad se le ha asignado el identificador CVE-2013-4073.

Resumen

El cliente SSL de Ruby implementa revisiones de identidad para las conexiones pero no maneja adecuadamente los nombres de los clientes en certificados que incluyen bytes nulos.

OpenSSL::SSL.verify_certificate_identity implementa la revisión de identidad RFC2818 en el cliente de Ruby de SSL pero no maneja apropiadamente el manejo de los nombres de cliente en la extensión subjectAltName X509 si contiene bytes nulos.

El código en lib/openssl/ssl.rb utiliza OpenSSL::X509::Extension#value para extraer la identidad del cliente de subjectAltName. Extension#value depende de la función de OpenSSL X509V3_EXT_print() y para dNSName de subjectAltName utiliza sprintf() que se conoce es insegura con bytes nulos. Como resultado de esto Extension#value regresa ‘www.ruby-lang.org’ si subjectAltName es ‘www.ruby-lang.org\0.example.com’ y OpenSSL::SSL.verify_certificate_identity identifica erronamente que el certificado es para ‘www.ruby-lang.org’.

Cuando una CA confiable para un cliente de SSL permite al servidor extender un certificado que tiene un byte nulo en subjectAltName, atacantes remotos pueden obtener el certificado para ‘www.ruby-lang.org\0.example.com’ de la CA para hacerse pasar por ‘www.ruby-lang.org’ y hacer ataques del tipo man-in-the-middle entre un cliente de Ruby de SSL y servidores de SSL.

Versiones afectadas

  • Todas las versiones de ruby 1.8 anteriores a 1.8.7-p374
  • Todas las versiones de ruby 1.9 anteriores a 1.9.3-p448
  • Todas las versiones de ruby 2.0 anteriores a 2.0.0-p247
  • todo lo anterior a la revision 41671

Solución

Se recomienda a todos los usuarios actualizar la versión de Ruby a 2.0.0-p247, 1.9.3-p448 o 1.8.7-p374.

Créditos

Esta vulnerabilidad fue encotrada por William (B.J.) Snow Orvis y coordinada con security@ruby-lang.org por David Thiel de los socios de iSEC.

Historia

  • Publicado originalmente 2013-06-27 11:00:00 (UTC)

Noticias recientes

Publicado Ruby 4.0.0 preview3

Nos complace anunciar la publicación de Ruby 4.0.0-preview3. Ruby 4.0 introduce Ruby::BOX y “ZJIT”, y agrega muchas mejoras.

Publicado por naruse el 2025-12-18

Publicación de Ruby 4.0.0 preview2

Nos complace anunciar el lanzamiento de Ruby 4.0.0-preview2. Ruby 4.0 actualiza su versión de Unicode a 17.0.0, entre otras novedades.

Publicado por naruse el 2025-11-17

Más noticias...