Saltar a contenido

TLS_FALLBACK_SCSV Not Supported

TLS_FALLBACK_SCSV no soportado

Descripción

Esta vulnerabilidad indica que el servidor no soporta TLS_FALLBACK_SCSV (Signaling Cipher Suite Value), el cual es un mecanismo diseñado para prevenir ataques de degradación (downgrade) de protocolo en conexiones SSL/TLS.

TLS_FALLBACK_SCSV es crucial porque:

  1. Permite a los clientes indicar cuándo están retrocediendo a una versión de protocolo inferior debido a fallos de conexión.
  2. Permite a los servidores detectar y prevenir intentos de degradación maliciosos.
  3. Ayuda a mantener el nivel más alto posible de seguridad en las conexiones SSL/TLS.

Cuando TLS_FALLBACK_SCSV no está soportado, el servidor se vuelve vulnerable a:

  1. Ataques de degradación de protocolo: Un atacante puede forzar el uso de versiones de protocolo más antiguas y menos seguras.
  2. Ataques Man-in-the-Middle (MitM): La degradación a un protocolo más débil puede facilitar a los atacantes interceptar y descifrar las comunicaciones.
  3. Explotación de vulnerabilidades en protocolos más antiguos: Las versiones SSL/TLS antiguas pueden tener vulnerabilidades conocidas que pueden ser explotadas una vez que ocurre la degradación.

Escenario de ejemplo:

Un atacante intercepta el handshake inicial entre un cliente y un servidor. El atacante manipula la conexión para que falle, provocando que el cliente vuelva a intentarlo con una versión de protocolo inferior. Sin TLS_FALLBACK_SCSV, el servidor acepta esta degradación, exponiendo potencialmente la conexión a vulnerabilidades en la versión de protocolo más antigua. La falta de soporte para TLS_FALLBACK_SCSV infringe las mejores prácticas para la seguridad SSL/TLS y puede afectar el cumplimiento de varios estándares y normativas de seguridad.

Recomendación

Cuando TLS_FALLBACK_SCSV (Signaling Cipher Suite Value) no está soportado, puede dar lugar a posibles ataques de degradación. A continuación se presentan estrategias para mitigar este riesgo:

Estrategias proactivas

  1. Deshabilitar la degradación de versiones SSL/TLS: Configure los servidores para deshabilitar el fallback a versiones más antiguas de SSL/TLS. Esto evita que los atacantes fuercen a las conexiones a usar protocolos vulnerables.

  2. Exigir una versión mínima de TLS: Establezca una versión TLS mínima aceptable (por ejemplo, TLS 1.2) tanto en el lado del cliente como en el del servidor para evitar la degradación a versiones vulnerables.

  3. Análisis de seguridad regulares: Realice escaneos periódicos de su infraestructura para identificar y abordar cualquier debilidad en la configuración TLS.

  4. Supervisar patrones inusuales de negociación TLS: Implemente una supervisión para detectar intentos de forzar degradaciones de protocolo.

Ejemplos de implementación

  1. Configuración de Nginx

Para deshabilitar la degradación de la versión SSL/TLS y hacer cumplir una versión mínima de TLS en Nginx:

server {
    listen 443 ssl;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
    # Otras configuraciones de SSL...
}
  1. Configuración de Apache

Para Apache, utilice la siguiente configuración para lograr resultados similares:

<VirtualHost *:443>
    SSLEngine on
    SSLProtocol -all +TLSv1.2 +TLSv1.3
    SSLCipherSuite ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
    SSLHonorCipherOrder on
    # Otras configuraciones de SSL...
</VirtualHost>
  1. Comando OpenSSL para pruebas

Use OpenSSL para probar la configuración TLS de su servidor:

openssl s_client -connect example.com:443 -tls1_2

Este comando intenta establecer una conexión TLS 1.2. Si tiene éxito, indica que su servidor está configurado correctamente para usar versiones modernas de TLS.

Supervisión de intentos de degradación

  • Uso de fail2ban

Puede utilizar fail2ban para supervisar los registros en busca de posibles intentos de degradación:

  1. Cree un filtro personalizado en /etc/fail2ban/filter.d/tls-downgrade.conf:
[Definition]
failregex = SSL routines:SSL23_GET_CLIENT_HELLO:unsupported protocol.*client=<HOST>
  1. Agregue un jail en /etc/fail2ban/jail.local:
[tls-downgrade]
enabled = true
filter = tls-downgrade
logpath = /var/log/nginx/error.log
maxretry = 3
bantime = 3600
  1. Reinicie fail2ban:
sudo systemctl restart fail2ban

Esta configuración prohibirá las direcciones IP que realicen intentos repetidos de conexión utilizando versiones SSL/TLS no soportadas (probablemente más antiguas).

Al implementar estas medidas, puede reducir significativamente el riesgo de ataques de degradación de TLS, incluso cuando TLS_FALLBACK_SCSV no está soportado.

Enlaces

Estándares

  • SOC2_CONTROLS:
    • CC_6_7
    • CC_7_1
  • CCPA:
    • CCPA_1798_150
  • GDPR:
    • ART_32
  • PCI_STANDARDS:
    • REQ_2_3
    • REQ_4_1
    • REQ_6_5
  • HIPAA_CONTROLS:
    • SECURITY252
    • SECURITY212
    • SECURITY213