漏洞概述 漏洞名称: CVE-2026-34182 描述: 该漏洞涉及一个字节标签(one-byte tag)的脆弱性,影响多个加密库(OpenSSL、wolfSSL、Bouncy Castle、GnuPG)。 核心问题: 在PKCS#7 / CMS解析中,AES-GCM生成的认证标签长度被错误地设置为1字节,导致攻击者可以通过暴力破解伪造有效消息。 影响范围 受影响库: - OpenSSL - wolfSSL - Bouncy Castle - GnuPG (gpgsm) 具体影响: - OpenSSL: 接受1字节的认证标签,导致安全性降低。 - wolfSSL: 同样接受1字节的认证标签。 - Bouncy Castle: 虽然设置了4字节的最低限制,但在解密时跳过了长度检查。 - GnuPG: 使用wolfSSL的路径,但部分保存了一层,最终接受1字节的认证标签。 修复方案 根本原因: 认证标签长度不应作为可变的参数嵌入密文中,而应由密钥和算法决定。 建议: - 最佳实践: 密文格式应尽可能简单,不包含任何元数据。 - 密钥管理: 使用本地密钥ID(local key id)来查找密钥材料,而不是全局密钥ID。 - 多租户环境: 为每个租户创建命名密钥桶,避免全局密钥ID的使用。 代码示例 总结 核心教训: 密文格式是攻击面,任何参数都应由攻击者选择。 建议: 构建密钥时携带自己的参数,密文尽量接近“不透明blob加本地密钥句柄”,并谨慎对待每个字段。