Después del ataque BEAST y el error Heartbleed , ahora escuché sobre una nueva vulnerabilidad en SSL / TLS llamada POODLE . ¿Cómo me protejo de ser explotado?
- ¿Solo se ven afectados los servidores o los clientes?
- ¿Es esto específico de OpenSSL / GnuTLS?
- ¿Qué tipo de servicios se ven afectados? ¿Solo HTTPS o también IMAPS, SMTPS, OpenVPN, etc.?
Muéstrame ejemplos sobre cómo evitar esta vulnerabilidad.
Respuestas:
Información de fondo
SSL está diseñado para asegurar el nivel de transporte en Internet. Para 'la web', también conocido como HTTP, lo conocerá como HTTPS, pero también se usa para otros protocolos de aplicación. SSLv2 fue el primer protocolo de seguridad de transporte ampliamente utilizado, pero se encontró inseguro poco después. Los sucesores SSLv3 y TLSv1 son ampliamente compatibles ahora. TLSv1.1 y TLSv1.2 son más nuevos y están ganando mucho soporte también. La mayoría, si no todos los navegadores web lanzados a partir de 2014 tienen soporte para ello.
El reciente descubrimiento de los ingenieros de Google señala que SSLv3 ya no debería usarse (como SSLv2 ha quedado obsoleto hace mucho tiempo). Los clientes que no podrán conectarse a su sitio / servicio probablemente sean muy, muy limitados. CloudFlare anunció que menos del 0.09% de sus visitantes aún dependen de SSLv3.
Solución simple: deshabilitar SSLv3.
¿Ubuntu proporciona alguna actualización?
Sí, a través de usn-2385-1 con la adición de la función SCSV, pero no mitiga el problema por completo ya que no deshabilita SSLv3 y el parche solo funcionará si ambos lados de la conexión han sido parcheados. Lo recibirá a través de sus actualizaciones de seguridad periódicas en su administrador de paquetes.
Por lo tanto, USTED DEBE tomar medidas para deshabilitar SSLv3 (es configurable). Las versiones futuras de clientes / navegadores deshabilitarán SSLv3 muy probablemente. Por ejemplo, Firefox 34 lo hará.
Deshabilitar SSLv3 por completo de manera predeterminada en Ubuntu en el nivel de implementación probablemente romperá algunas cosas también para el uso de SSL que no sea HTTPS, que no es tan vulnerable, por lo que supongo que los mantenedores no harán eso y solo se aplicará este parche SCSV.
¿Por qué la actualización SCSV en OpenSSL a través de usn-2385-1 no mitiga el problema?
Realmente, deje de hacer tales preguntas y solo omita algunos párrafos y desactive SSLv3. Pero bueno, si no estás convencido, aquí tienes:
POODLE muestra que SSLv3 con cifrados CBC está roto, la implementación de SCSV no cambia eso. SCSV solo se asegura de no degradar de algún protocolo TLS a ningún protocolo TLS / SSL más bajo según sea necesario con el ataque Man-in-the-Middle requerido para los casos habituales.
Si tiene que acceder a un servidor que no ofrece TLS en absoluto, sino solo SSLv3, entonces su navegador realmente no tiene otra opción y tiene que hablar con el servidor usando SSLv3, que es vulnerable sin ningún ataque de degradación.
Si tiene que acceder a algún servidor que también ofrece TLSv1 + y SSLv3 (lo que se desaconseja) y desea asegurarse de que un atacante no baje la conexión a SSLv3, entonces tanto el servidor como el cliente necesitan este parche SCSV.
Para mitigar completamente el problema, la desactivación de SSLv3 su final es suficiente y puede estar seguro de que no será degradado. Y no podrá hablar con servidores solo SSLv3.
Bien, entonces, ¿cómo deshabilito SSLv3?
Consulte a continuación las secciones específicas de la aplicación: Firefox, Chrome, Apache, Nginx y Postfix están cubiertos por ahora.
¿Solo se ven afectados los servidores o los clientes?
La vulnerabilidad existe si tanto el servidor como el cliente aceptan SSLv3 (incluso si ambos son capaces de TLSv1 / TLSv1.1 / TLS1.2 debido a un ataque de degradación).
Como administrador del servidor, debe desactivar SSLv3 ahora para la seguridad de sus usuarios.
Como usuario, debe deshabilitar SSLv3 en su navegador ahora para asegurarse cuando visite sitios web que aún admiten SSLv3.
¿Es este navegador OpenSSL / GnuTLS / específico?
No. Es un error de protocolo (diseño), no un error de implementación. Esto significa que realmente no puede parchearlo (a menos que esté cambiando el diseño del antiguo SSLv3).
Y sí, hay una nueva versión de seguridad de OpenSSL , pero lea a continuación (¡ pero realmente necesito el soporte SSLv3 ... por la razón X, Y, Z! ) Sobre por qué es mejor que se concentre en deshabilitar SSLv3 por completo.
¿Puedo eliminar SSLv3 en el nivel de red (firewall)?
Bueno, si, probablemente. Puse esto en una publicación de blog separada para reflexionar y trabajar más. ¡Podemos tener alguna
iptables
regla mágica que puedas usar!Mi publicación de blog: ¿Cómo eliminar SSLv3 en su red usando iptables para POODLE?
¿Es relevante solo para HTTPS o también para IMAP / SMTP / OpenVPN y otros protocolos con soporte SSL?
El vector de ataque actual, como lo muestran los investigadores, funciona con el control del texto sin formato enviado al servidor utilizando Javascript que se ejecuta en la máquina de la víctima. Este vector no se aplica a escenarios que no sean HTTPS sin usar un navegador.
Además, normalmente un cliente SSL no permite que la sesión se reduzca a SSLv3 (teniendo TLSv1 + visto en las capacidades de protocolo de enlace), pero los navegadores quieren ser compatibles con versiones anteriores y lo hacen. La combinación con el control de texto sin formato y la forma específica en que se crea un encabezado HTTP lo hace explotable.
Conclusión: deshabilite SSLv3 para HTTPS ahora , deshabilite SSLv3 para otros servicios en su próxima ventana de servicio.
¿Cuál es el impacto? ¿Necesito revocar y regenerar mi certificado de servidor? (Como con Heartbleed)
No, no necesita rotar sus certificados para esto. La vulnerabilidad expone la recuperación de texto sin formato de los datos de la sesión, no proporciona acceso a ningún secreto (ni la clave de sesión ni la clave de certificado).
Es muy probable que un atacante solo sea capaz de robar los encabezados de texto sin formato como las cookies de sesión para realizar el secuestro de sesión . Una restricción adicional es la necesidad de un ataque MitM completo (activo) .
¿Hay algo más que pueda hacer para mejorar mi configuración SSL en general?
Como usuario, además de deshabilitar SSLv3 en su navegador, en realidad no. Bueno, solo instala las últimas actualizaciones de seguridad.
Para los servidores, siga la guía del servidor TLS de Mozilla . Y prueba con la prueba Qualys 'SSL Labs . Realmente no es tan difícil obtener una calificación A + en su sitio. Simplemente actualice sus paquetes e implemente las recomendaciones de la guía de Mozilla.
Pero realmente realmente necesito soporte SSLv3 ... ¡por la razón X, Y, Z! ¿Ahora que?
Bueno, hay un parche que evita el ataque de degradación de los clientes con capacidad TLSv1, llamado SSLv3 Fallback Protection. Por cierto, también mejorará la seguridad de TLSv1 + (el ataque de degradación es más difícil / imposible). Se ofrece como backport de una versión más reciente de OpenSSL en el aviso de seguridad de Ubuntu usn-2385-1 .
Gran problema: tanto los clientes como los servidores necesitan este parche para funcionar. Por lo tanto, en mi opinión, mientras actualiza clientes y servidores, debería actualizar a TLSv1 + de todos modos.
Sin embargo, por favor, solo retire SSLv3 en su red por ahora. Esfuércese por actualizar los estándares de seguridad y simplemente abandone SSLv3.
Escuché sobre el soporte de SCSV para eliminar el ataque de degradación del protocolo. ¿Lo necesito?
Solo si realmente necesita SSLv3 por alguna extraña razón, pero también mejora la seguridad en TLSv1 +, así que sí, le recomiendo que lo instale. Ubuntu proporciona una actualización para esta característica en usn-2385-1 . Lo recibirá a través de sus actualizaciones de seguridad periódicas en su administrador de paquetes.
Prueba de vulnerabilidad para sitios alojados de forma privada (por ejemplo, intranet / fuera de línea).
Sus servidores son vulnerables simplemente si admiten SSLv3. Varias opciones aquí:
Con OpenSSL s_client:
Si la conexión tiene éxito, sslv3 está habilitado. Si falla, está deshabilitado. Cuando falla, debería ver algo como:
Utilizando
nmap
:Debería salir '
SSLv3: No supported ciphers found
'. Ajuste para su nombre de host / puerto.Usando cipherscan . Clonar / descargar el binario y ejecutarlo:
Debe no enumerar nada con SSLv3 en la columna 'protocolos'.
Navegador Firefox
Abrir
about:config
, buscarsecurity.tls.version.min
y establecer el valor en1
. Luego, reinicie su navegador para descartar cualquier conexión SSL abierta.Firefox a partir de la versión 34 en adelante deshabilitará SSLv3 de forma predeterminada y, por lo tanto, no requiere ninguna acción ( fuente ). Sin embargo, al momento de escribir, 33 acaba de ser lanzado y 34 está programado para el 25 de noviembre.
Google Chrome (Linux)
Edite el
/usr/share/applications/google-chrome.desktop
archivo, p. Ej.Edite todas las líneas que empiecen
Exec=
por incluir--ssl-version-min=tls1
.Por ejemplo, una línea como
se convierte
Luego, asegúrese de cerrar completamente el navegador (¡las aplicaciones de Chrome pueden mantener su navegador activo en segundo plano!).
Nota: es posible que deba repetir esta actualización de cada paquete de google-chrome, sobrescribiendo este
.desktop
archivo de inicio. Un navegador Google Chrome o Chromium con SSLv3 deshabilitado por defecto aún no se anuncia al momento de la escritura.Servidor Apache HTTPD
Si está ejecutando un servidor web Apache que actualmente permite SSLv3, deberá editar la configuración de Apache. En los sistemas Debian y Ubuntu, el archivo es /etc/apache2/mods-available/ssl.conf . En CentOS y Fedora, el archivo es /etc/httpd/conf.d/ssl.conf . Deberá agregar la siguiente línea a su configuración de Apache con otras directivas SSL.
Esto permitirá todos los protocolos excepto SSLv2 y SSLv3.
Mientras lo hace, es posible que desee considerar mejorar la configuración del conjunto de cifrado para su servidor web como se explica en la guía del servidor TLS de Mozilla . Agregar por ejemplo:
Luego verifique si la nueva configuración es correcta (sin errores tipográficos, etc.):
Y reinicie el servidor, p. Ej.
En CentOS y Fedora:
Más información: documentación de Apache
Ahora pruébelo: si su sitio está disponible públicamente, pruébelo utilizando la herramienta Qualys 'SSL Labs .
Servidor Nginx
Si está ejecutando Nginx, simplemente incluya la siguiente línea en su configuración entre las otras directivas SSL:
Mientras lo hace, es posible que desee considerar mejorar la configuración del conjunto de cifrado para su servidor web como se explica en la guía del servidor TLS de Mozilla . Agregar por ejemplo:
Y reinicie el servidor, p. Ej.
Referencia: documentación de Nginx
Ahora pruébelo: si su sitio está disponible públicamente, pruébelo con la herramienta SSL Labs de Qualys .
Servidor web Lighttpd
Las versiones Lighttpd> 1.4.28 admiten una opción de configuración para deshabilitar SSLv2 y v3. Las versiones de Lighttpd anteriores a 1.4.28 le permiten deshabilitar SSLv2 SOLAMENTE. Tenga en cuenta que Ubuntu 12.04 LTS y versiones anteriores se instalan en el mejor lighttpd v1.4.28 y, por lo tanto, una solución simple no está disponible para esas distribuciones. Por lo tanto, esta solución solo debe usarse para versiones de Ubuntu superiores a 12.04.
Para Ubuntu versión 12.04 o Debian 6, hay un paquete lighttpd actualizado disponible en el repositorio de openSUSE: http://download.opensuse.org/repositories/server:/http/Debian_6.0
El paquete está destinado a Debian 6 (squeeze) pero también funciona en 12.04 (preciso)
Edite su
/etc/lighttpd/lighttpd.conf
para agregar las siguientes líneas después de lassl.engine = "enable"
directivaLuego, debe reiniciar el servicio lighttpd con a
sudo service lighttpd restart
y realizar una prueba de reconocimiento ssl3 como se describe en las secciones anteriores para asegurarse de que el cambio se implementó con éxito.Tomado de http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_SSL .
Postfix SMTP
Para 'SSL oportunista' (la política de cifrado no se aplica y también es aceptable), no necesita cambiar nada. Incluso SSLv2 es mejor que simple, por lo que si necesita proteger su servidor, debería usar el modo 'SSL obligatorio' de todos modos.
Para el modo 'SSL obligatorio' ya configurado, simplemente agregue / cambie la configuración smtpd_tls_mandatory_protocols para conexiones entrantes y smtp_tls_mandatory_protocols para conexiones salientes:
Opcionalmente, si también desea deshabilitar SSLv3 para el cifrado oportunista (aunque sea innecesario como se explicó anteriormente), hágalo así:
y reinicie Postfix:
Enviar correo
(Edición no verificada por usuario anónimo, no me siento cómodo con Sendmail, verifíquelo).
Estas opciones se configuran en la
LOCAL_CONFIG
sección de susendmail.mc
Palomar
En Dovecot v2.1 +, agregue lo siguiente a su
/etc/dovecot/local.conf
(o un nuevo archivo/etc/dovecot/conf.d
):y reinicie Dovecot:
Para versiones anteriores, tendrá que parchear el código fuente .
Courier-imap (imapd-ssl)
Courier-imap permite SSLv3 por defecto en Ubuntu 12.04 y otros. Debe deshabilitarlo y usar STARTTLS en su lugar para forzar TLS. Edite su
/etc/courier/imapd-ssl
archivo de configuración para reflejar los siguientes cambiosServidor HAProxy
SSL es compatible con HAProxy> = 1.5.
Edite el
/etc/haproxy.cfg
archivo y encuentre subind
línea. Anexarno-sslv3
. Por ejemplo:Referencia: documentación de HAProxy
OpenVPN
Parece no verse afectado ( fuente ).
Marioneta
Puppet usa SSL sobre HTTPS pero no lo usan los clientes de 'navegador', solo los agentes Puppet que no son vulnerables al vector de ataque que se muestra. Sin embargo, se recomienda deshabilitar SSLv3.
Mi recomendación es usar el módulo Puppet stephenrjohnson / puppetmodule para configurar su Puppet master en el que maté SSLv3 hace algún tiempo.
fuente
Puede que no sea ubuntu específico, sino con el fin de evitar la vulnerablity caniche en Node.js puede establecer el
secureOptions
querequire('constants').SSL_OP_NO_SSLv3
cuando se crea un servidor https o TLS.Consulte https://gist.github.com/3rd-Eden/715522f6950044da45d8 para obtener información adicional
fuente
La "solución" para el servicio de mensajería desactiva tls 1.1 y tls 1.2. No parece haber una manera de ejecutar el servicio de mensajería con tls 1.1 o superior. Un escaneo PCI en su servidor puede volver con la recomendación:
Configure los servidores SSL / TLS para usar solo TLS 1.1 o TLS 1.2 si es compatible. Configure los servidores SSL / TLS para que solo admitan conjuntos de cifrado que no utilizan cifrados de bloque.
fuente
Dado que la vulnerabilidad de POODLE es una falla de diseño en el protocolo en sí y no un error de implementación, no habrá parches. La única forma de mitigar esto es deshabilitar SSLv3 en el servidor apache. Agregue las líneas siguientes en ssl.conf y realice un reinicio apache elegante.
fuente