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)