天下漏洞,尽知其名
MEDIUM

CVE-2026-103603 Bouncy Castle bc-csharp HSS/LMS 内存耗尽漏洞

影响远程未认证攻击者可致内存耗尽拒绝服务

MEDIUM
暂无 CVSS 评分
AI 研判

Bouncy Castle bc-csharp 2.7.0 之前的 HSS/LMS 签名代码在解析 HSS 公钥时未校验层级计数 L 是否超过 RFC 8554 规定的最大值 8,随后解析签名时按 L-1 分配数组,导致内存被过度占用。攻击者只需提供特制的 HSS 公钥和签名即可触发,单次验证可能占用约 17 GB 内存或抛出 OutOfMemoryException。

影响范围

Bouncy Castle bc-csharp

Legion of the Bouncy Castle Inc. bc-csharp 2.7.0 之前的版本,涉及 HssPublicKeyParameters 与 HssSignature 相关代码。

漏洞详情

漏洞类型为不受控资源消耗(内存耗尽型拒绝服务)。成因是解析 HSS 公钥时读取的层级计数 L 未与 RFC 8554 规定的上限 8 做校验,签名解析阶段又依据该值预先分配 L-1 个元素的数组。攻击者构造层级计数超大的公钥并配合签名提交验证,即可让程序分配巨量内存。

利用条件与风险

利用前提是攻击者能够向使用受影响库的应用提交 HSS 公钥与签名,且该应用会执行验证操作;无需认证即可远程触发,可造成服务不可用。

修复建议

升级到 bc-csharp 2.7.0 或更高版本;若无法立即升级,应对 HSS 公钥解析中的层级计数 L 增加不超过 8 的校验,并限制单次验证可分配的内存。

原始情报

Memory allocation with excessive size value in the HSS/LMS signature code (HssPublicKeyParameters, HssSignature) in Legion of the Bouncy Castle Inc. bc-csharp before 2.7.0 allows a remote unauthenticated attacker who can supply both an HSS public key and a signature to cause a denial of service through memory exhaustion via a public key encoding with an excessive level count, because the level count L read when parsing an HSS public key was not checked against the RFC 8554 maximum of 8, and signature parsing then allocated an array of L – 1 entries before reading any further signature data. A single verification can commit up to about 17 GB of memory or fail with an OutOfMemoryException.