TLS_FALLBACK_SCSV Not Supported
不支持 TLS_FALLBACK_SCSV
描述
此漏洞表明服务器不支持 TLS_FALLBACK_SCSV(Signaling Cipher Suite Value),这是一种旨在防止 SSL/TLS 连接中发生协议降级攻击的机制。
TLS_FALLBACK_SCSV 极其重要,因为:
- 它允许客户端在由于连接失败而回退到较低协议版本时发出指示。
- 它使服务器能够检测并阻止恶意的降级尝试。
- 它有助于在 SSL/TLS 连接中保持尽可能高的安全级别。
如果不支持 TLS_FALLBACK_SCSV,服务器将面临以下漏洞风险:
- 协议降级攻击:攻击者可以强制使用较旧、安全性较低的协议版本。
- 中间人 (MitM) 攻击:降级到较弱的协议会使攻击者更容易拦截和解密通信。
- 旧协议漏洞的利用:旧版 SSL/TLS 可能存在已知漏洞,一旦发生降级,这些漏洞便可能被利用。
示例场景:
攻击者拦截了客户端和服务器之间的初始握手。攻击者操纵连接使其失败,导致客户端使用较低的协议版本重试。在没有 TLS_FALLBACK_SCSV 的情况下,服务器接受了这种降级,这可能会使连接暴露于旧协议版本的漏洞之中。
缺乏 TLS_FALLBACK_SCSV 支持违反了 SSL/TLS 安全的最佳实践,并且可能影响对各种安全标准和法规的合规性。
建议
当不支持 TLS_FALLBACK_SCSV(Signaling Cipher Suite Value)时,可能会导致潜在的降级攻击。以下是缓解此风险的策略:
主动策略
-
禁用 SSL/TLS 版本回退:将服务器配置为禁用向后回退到旧版 SSL/TLS。这可以防止攻击者强制连接使用易受攻击的协议。
-
强制使用最低 TLS 版本:在客户端和服务器端设置可接受的最低 TLS 版本(例如,TLS 1.2),以防止降级到易受攻击的版本。
-
定期安全扫描:对您的基础架构进行定期扫描,以识别并解决任何 TLS 配置缺陷。
-
监控异常的 TLS 协商模式:实施监控以检测强制协议降级的尝试。
实施示例
- Nginx 配置
要在 Nginx 中禁用 SSL/TLS 版本回退并强制执行最低 TLS 版本:
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';
# 其他 SSL 设置...
}
- Apache 配置
对于 Apache,请使用以下配置来实现类似的结果:
<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
# 其他 SSL 设置...
</VirtualHost>
- 用于测试的 OpenSSL 命令
使用 OpenSSL 测试您的服务器 TLS 配置:
openssl s_client -connect example.com:443 -tls1_2
此命令尝试建立 TLS 1.2 连接。如果成功,则表明您的服务器已正确配置为使用现代 TLS 版本。
监控降级尝试
- 使用 fail2ban
您可以使用 fail2ban 来监控日志中是否存在潜在的降级尝试:
- 在
/etc/fail2ban/filter.d/tls-downgrade.conf中创建自定义过滤器:
[Definition]
failregex = SSL routines:SSL23_GET_CLIENT_HELLO:unsupported protocol.*client=<HOST>
- 在
/etc/fail2ban/jail.local中添加一个 jail:
[tls-downgrade]
enabled = true
filter = tls-downgrade
logpath = /var/log/nginx/error.log
maxretry = 3
bantime = 3600
- 重启 fail2ban:
sudo systemctl restart fail2ban
此配置将封禁重复尝试使用不受支持(可能是较旧)的 SSL/TLS 版本进行连接的 IP 地址。
通过实施这些措施,即使在不支持 TLS_FALLBACK_SCSV 的情况下,您也可以显著降低 TLS 降级攻击的风险。
链接
- RFC 7507 - TLS Fallback Signaling Cipher Suite Value (SCSV) for Preventing Protocol Downgrade Attacks
- OWASP TLS Cheat Sheet
- NIST Guidelines for TLS Implementations
标准
- 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