1.4.34

2014年1月20日

重要变更

有一些重要的安全修复正在进行中(您应该已经通过您喜欢的发行版获得);对于延迟发布我深表歉意(我们可能也应该在我们的页面和邮件列表中公布安全漏洞,以供那些未关注 oss-security 的人了解)。

我们更新了“标准”SSL密码串推荐为 ssl.cipher-list = "aRSA+HIGH !3DES +kEDH +kRSA !kSRP !kPSK";详细原因请参见下文。

回归警告

针对 lighttpd SA-2013-01 (CVE-2013-4508,“使用可能存在漏洞的SNI密码套件”) 的修复包含一个回归问题

每个 SSL_CTX 也会从配置中的所有块加载 ssl.ca-file 的所有值。

这意味着您的 ssl.ca-file 值不得包含循环链,并且应使用唯一的主题名称。

更多详情请参见 Debian Bug - #729555

安全修复

OpenSSL 密码串推荐

密码串推荐基于 ssllabs 的 SSL/TLS 部署最佳实践 1.3 / 2013年9月17日

  • BEAST 现在被认为在客户端已得到缓解,并且 RC4 中发现了新的弱点,因此强烈建议禁用 RC4 密码(HIGH 不包含 RC4)
  • 也建议禁用 3DES(尽管禁用 RC4 和 3DES 会导致 Windows XP 上的 IE6+8 无法正常工作,所以您可能暂时仍希望支持 3DES——只需移除下面的 !3DES 部分;在末尾用 +3DES !MD5 替换它,以优先选择 AES128 而非 3DES,并禁用使用 MD5 的 3DES 变体)。
  • 它优先选择具有“前向保密性”(Forward Secrecy)的密码套件,以及 ECDHE 优于 DHE(又名 EDH);如果您不希望如此,请移除 +kEDH +kRSA
  • SRP 和 PSK 无论如何都不受支持,排除这些(!kSRP !kPSK)只是为了使列表更小(更易于审查)
  • 由于目前几乎所有密钥都是 RSA,因此限制为 aRSA+HIGH 会使列表更小。对于更通用的版本,请使用 HIGH 而不是 aRSA+HIGH
  • 如果您想强制执行“前向保密性”(Forward Secrecy)(这会破坏某些客户端),请将 +kRSA 替换为 -kRSA

故意未包含

  • STRENGTH:来自 HIGH 的列表已经排序,无需重新排序。STRENGTH 也优先选择 3DES 而非 AES128。
  • !SSLv2!EXPORT!eNULL!DES!RC4!LOW:在最新的 openssl 版本中,HIGH 不应包含这些密码,无需移除它们。如果您使用的是旧版本,附加 !RC4 !NULL 应该可以修复(并且在最新版本中无害)。也请考虑升级——您可能缺少 TLS1.2。
  • !MD5:在旧系统中,HIGH 可能包含使用 MD5 的 3DES 密码;!3DES 也应该移除 MD5。
  • !aNULL!ADH:在服务器端无关紧要,客户端应始终验证服务器证书,如果服务器没有证书,验证将失败。

您可以使用以下命令检查密码列表:openssl ciphers -v 'aRSA+HIGH !3DES +kEDH +kRSA !kSRP !kPSK' | column -t(请使用单引号,因为您的 shell 不会在双引号中处理 ! 字符)。

lighttpd 中包含的默认 DH 参数仅为 1024 位;有些现有实现无法处理更多位,并且您也无法协商它们。要解决此问题,您有两种选择

  • 移除 DH 密码:将 +kEDH 替换为 -kEDH
  • 使用 4096 位参数,这会破坏那些您会协商 DH 但只支持 1024 位参数的客户端。将以下(gnutls 中包含的)参数放入文件中,并使用 ssl.dh-file 选项进行设置
-----BEGIN DH PARAMETERS-----
MIICCAKCAgEA///////////JD9qiIWjCNMTGYouA3BzRKQJOCIpnzHQCC76mOxOb
IlFKCHmONATd75UZs806QxswKwpt8l8UN0/hNW1tUcJF5IW1dmJefsb0TELppjft
awv/XLb0Brft7jhr+1qJn6WunyQRfEsf5kkoZlHs5Fs9wgB8uKFjvwWY2kg2HFXT
mmkWP6j9JM9fg2VdI9yjrZYcYvNWIIVSu57VKQdwlpZtZww1Tkq8mATxdGwIyhgh
fDKQXkYuNs474553LBgOhgObJ4Oi7Aeij7XFXfBvTFLJ3ivL9pVYFxg5lUl86pVq
5RXSJhiY+gUQFXKOWoqqxC2tMxcNBFB6M6hVIavfHLpk7PuFBFjb7wqK6nFXXQYM
fbOXD4Wm4eTHq/WujNsJM9cejJTgSiVhnc7j0iYa0u5r8S/6BtmKCGTYdgJzPshq
ZFIfKxgXeyAMu+EXV3phXWx3CYjAutlG4gjiT6B05asxQ9tb/OD9EI5LgtEgqSEI
ARpyPBKnh+bXiHGaEL26WyaZwycYavTiPBqUaDS2FQvaJYPpyirUTOjbu8LbBN6O
+S6O/BQfvsqmKHxZR05rwF2ZspZPoJDDoiM7oYZRW+ftH2EpcM7i16+4G912IXBI
HNAGkSfVsFqpk7TqmI2P3cGG/7fckKbAj030Nck0BjGZ//////////8CAQU=
-----END DH PARAMETERS-----

下载

从 1.4.33 版本以来的变更

  • [mod_auth] 显式链接 SHA1 的 ssl(修复了 #2517
  • [mod_extforward] 修复了在没有 IPv6 的情况下编译时使用未定义变量的问题(修复了 #2515,感谢 mm)
  • [ssl] 修复 SNI 处理;仅使用来自 SNI 特定配置的密钥+证书(修复了 #2525, CVE-2013-4508
  • [doc] 更新 ssl.cipher-list 推荐
  • [stat-cache] FAM: 修复释放后使用(use after free)漏洞 (CVE-2013-4560)
  • [stat-cache] 修复 FAM 清理/fdevent 处理
  • [core] 检查 setuid, setgid, setgroups 的成功性 (CVE-2013-4559)
  • [ssl] 修复来自 CVE-2013-4508 的回归问题(客户端证书会话已损坏)
  • 在更多地方维护 physical.basedir(作为 physical.path 前缀的“实际”文档根目录)
  • [core] 在重写前解码 URL,使其能在 $HTTP[“url”] 条件句中工作(修复了 #2526
  • [auto* build] 从链接器标志中移除 -no-undefined,因为我们实际链接的模块带有未定义符号(修复了 #2533
  • [mod_mysql_vhost] 修复配置初始化时的内存泄漏(#2530
  • [mod_webdav] 修复使用 parfait 发现的 fd 泄漏(修复了 #2530,感谢 kukackajiri)