Weak Message Authentication Code (MAC) Algorithms Supported
支持弱消息身份验证代码 (MAC) 算法
描述
此漏洞表明服务器支持一种或多种弱的或已弃用的消息身份验证代码 (MAC) 算法,例如 MD5 或 SHA1。这些算法具有已知的安全漏洞,在现代使用中被认为是不安全的。
弱 MAC 算法可能包括:
- MD5:容易受到碰撞攻击。
- SHA1:容易受到碰撞攻击、生日攻击 (Birthday Attack) 等。
- MD5-MAC:基于 MD5 哈希算法,该算法容易受到碰撞攻击。
- SHA-1-MAC:基于 SHA-1 哈希算法,该算法具有已知漏洞,包括碰撞攻击。
- HMAC-MD5:使用 MD5 的 HMAC 构造,继承了其漏洞。
- HMAC-SHA1:使用 SHA-1 的 HMAC 构造,由于碰撞攻击,它也被证明是弱的。
- RC4-MAC:基于 RC4 流密码,出于各种原因(包括其输出中的偏差)被认为是不安全的。
- CBC-MAC:如果未与适当的填充 (padding) 一起使用,或者底层块密码很弱,则密码块链接 MAC 可能会受到攻击。
- CMAC with weak block ciphers:虽然 CMAC (Cipher-based Message Authentication Code) 在使用强大的块密码(如 AES)时是安全的,但将其与弱密码(如 DES)一起使用可能会导致漏洞。
- Poly1305 with weak key lengths:虽然 Poly1305 通常是安全的,但使用弱的或较小的密钥长度会损害其安全性。
- GMAC (Galois Message Authentication Code):虽然与 Galois/Counter Mode (GCM) 一起使用时通常是安全的,但滥用或不正确的实现会导致漏洞。
- KMAC:尽管基于 SHA-3,但在密钥长度不足的情况下使用它会使其变得不安全。
这些算法具有各种可以被攻击者利用的弱点,可能导致:
- 碰撞攻击:找到产生相同哈希输出的两个不同输入。这破坏了哈希函数的完整性。
- 原像攻击:给定哈希值,寻找产生该哈希值的输入。这破坏了哈希函数的单向性。
- 长度扩展攻击:能够在仅已知
hash(message1)和message1的长度,而不知道message1本身的情况下,计算出hash(message1 || message2)。 - 伪造消息身份验证代码:在不知道密钥的情况下为消息创建有效的 MAC,通常是通过利用底层算法中的弱点来实现。
Example Scenario: 攻击者可能会利用 SHA1 中的弱点来创建两条产生相同 MAC 的不同消息。这可能会让攻击者伪造经过身份验证的消息,从而可能导致未经授权的操作或数据篡改。
支持这些弱 MAC 算法违反了各种安全标准和最佳实践,可能会影响对 PCI DSS 等法规的遵从性。
建议
为了缓解与弱 MAC 算法相关的风险,请考虑以下建议:
- 禁用弱 MAC 算法:
- 禁用对弱 MAC 算法(如 MD5 和 SHA1)的支持。
-
仅启用强大的 MAC 算法,如 SHA256、SHA384 或 SHA512。
-
配置强大的密码套件:
- 使用包含强 MAC 算法的密码套件。
-
禁用使用弱 MAC 算法的密码套件。
-
实施安全的 TLS 配置:
- 遵循业界有关 TLS 配置的最佳实践,例如 Mozilla 的 SSL 配置生成器或 OWASP 的 TLS 备忘单 (Cheat Sheet) 提供的最佳实践。
-
使用 SSL Labs 的 SSL 服务器测试等工具定期测试您的 TLS 配置。
-
使用 HTTP 严格传输安全 (HSTS):
-
实施 HSTS 以确保客户端始终使用 HTTPS 连接到您的服务器,从而防止降级攻击。
-
考虑 TLS 1.3:
- 如果可能,启用对 TLS 1.3 的支持,默认情况下它使用更安全的 MAC 算法。
常见 Web 服务器的配置示例:
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
New-Item 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server' -name 'Enabled' -value '1' -PropertyType 'DWord' -Force
New-ItemProperty -path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server' -name 'DisabledByDefault' -value 0 -PropertyType 'DWord' -Force
链接
标准
- 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
- SECURITY255