跳转至

TLS_FALLBACK_SCSV Not Supported

不支持 TLS_FALLBACK_SCSV

描述

此漏洞表明服务器不支持 TLS_FALLBACK_SCSV(Signaling Cipher Suite Value),这是一种旨在防止 SSL/TLS 连接中发生协议降级攻击的机制。

TLS_FALLBACK_SCSV 极其重要,因为:

  1. 它允许客户端在由于连接失败而回退到较低协议版本时发出指示。
  2. 它使服务器能够检测并阻止恶意的降级尝试。
  3. 它有助于在 SSL/TLS 连接中保持尽可能高的安全级别。

如果不支持 TLS_FALLBACK_SCSV,服务器将面临以下漏洞风险:

  1. 协议降级攻击:攻击者可以强制使用较旧、安全性较低的协议版本。
  2. 中间人 (MitM) 攻击:降级到较弱的协议会使攻击者更容易拦截和解密通信。
  3. 旧协议漏洞的利用:旧版 SSL/TLS 可能存在已知漏洞,一旦发生降级,这些漏洞便可能被利用。

示例场景:

攻击者拦截了客户端和服务器之间的初始握手。攻击者操纵连接使其失败,导致客户端使用较低的协议版本重试。在没有 TLS_FALLBACK_SCSV 的情况下,服务器接受了这种降级,这可能会使连接暴露于旧协议版本的漏洞之中。 缺乏 TLS_FALLBACK_SCSV 支持违反了 SSL/TLS 安全的最佳实践,并且可能影响对各种安全标准和法规的合规性。

建议

当不支持 TLS_FALLBACK_SCSV(Signaling Cipher Suite Value)时,可能会导致潜在的降级攻击。以下是缓解此风险的策略:

主动策略

  1. 禁用 SSL/TLS 版本回退:将服务器配置为禁用向后回退到旧版 SSL/TLS。这可以防止攻击者强制连接使用易受攻击的协议。

  2. 强制使用最低 TLS 版本:在客户端和服务器端设置可接受的最低 TLS 版本(例如,TLS 1.2),以防止降级到易受攻击的版本。

  3. 定期安全扫描:对您的基础架构进行定期扫描,以识别并解决任何 TLS 配置缺陷。

  4. 监控异常的 TLS 协商模式:实施监控以检测强制协议降级的尝试。

实施示例

  1. 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 设置...
}
  1. 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>
  1. 用于测试的 OpenSSL 命令

使用 OpenSSL 测试您的服务器 TLS 配置:

openssl s_client -connect example.com:443 -tls1_2

此命令尝试建立 TLS 1.2 连接。如果成功,则表明您的服务器已正确配置为使用现代 TLS 版本。

监控降级尝试

  • 使用 fail2ban

您可以使用 fail2ban 来监控日志中是否存在潜在的降级尝试:

  1. /etc/fail2ban/filter.d/tls-downgrade.conf 中创建自定义过滤器:
[Definition]
failregex = SSL routines:SSL23_GET_CLIENT_HELLO:unsupported protocol.*client=<HOST>
  1. /etc/fail2ban/jail.local 中添加一个 jail:
[tls-downgrade]
enabled = true
filter = tls-downgrade
logpath = /var/log/nginx/error.log
maxretry = 3
bantime = 3600
  1. 重启 fail2ban:
sudo systemctl restart fail2ban

此配置将封禁重复尝试使用不受支持(可能是较旧)的 SSL/TLS 版本进行连接的 IP 地址。

通过实施这些措施,即使在不支持 TLS_FALLBACK_SCSV 的情况下,您也可以显著降低 TLS 降级攻击的风险。

链接

标准

  • 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