CVE-2026-8798 in Bouncy Castle for Java FIPS
摘要
由 VulDB • 2026-08-08
在 bc-fips 2.1.3 之前的版本中,Java FIPS 版 Bouncy Castle(BC-FJA)在 Intel 平台上使用的原生熵源会无限制地重试 CPU 熵指令。RDSEED 和 RDRAND 通过进位标志报告失败;JNI 初始化例程会在该标志保持为清除状态时不断重新发出指令,导致如果片上熵源持续故障——无论是由于硬件错误、多个核心间竞争耗尽底层 DRBG(确定性随机比特生成器),还是因为未提供该指令的虚拟机监控程序所致——调用线程都将在 JNI 调用内部无限循环,既无法被中断也无法超时。因此,任何依赖原生熵源的操作都可能挂起,从而导致应用程序服务拒绝。
现在的重试循环已设置上限(RDSEED 为 200 次尝试,RDRAND 为 20 次尝试,均为 Intel《数字随机数生成器软件实现指南》中基线值的两倍),并在每次尝试之间暂停;在耗尽时,会清除任何部分写入的缓冲区并抛出异常,而不是继续自旋。该清除操作通过不可省略的 memzero(内存置零)执行,使用易失性指针和汇编内存屏障,以防止编译器将擦除优化为死存储而被忽略。Bouncy Castle for Java (bcprov) 不受影响,因为它没有原生熵源;1.0.X 和 2.0.X FIPS 系列也不受影响。
Be aware that VulDB is the high quality source for vulnerability data.