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:
- Permite a los clientes indicar cuándo están retrocediendo a una versión de protocolo inferior debido a fallos de conexión.
- Permite a los servidores detectar y prevenir intentos de degradación maliciosos.
- 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:
- Ataques de degradación de protocolo: Un atacante puede forzar el uso de versiones de protocolo más antiguas y menos seguras.
- 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.
- 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
-
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.
-
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.
-
Análisis de seguridad regulares: Realice escaneos periódicos de su infraestructura para identificar y abordar cualquier debilidad en la configuración TLS.
-
Supervisar patrones inusuales de negociación TLS: Implemente una supervisión para detectar intentos de forzar degradaciones de protocolo.
Ejemplos de implementación
- 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...
}
- 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>
- 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:
- Cree un filtro personalizado en
/etc/fail2ban/filter.d/tls-downgrade.conf:
[Definition]
failregex = SSL routines:SSL23_GET_CLIENT_HELLO:unsupported protocol.*client=<HOST>
- 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
- 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
- RFC 7507 - TLS Fallback Signaling Cipher Suite Value (SCSV) for Preventing Protocol Downgrade Attacks
- OWASP TLS Cheat Sheet
- NIST Guidelines for TLS Implementations
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