← Back to CVE Explorer

CVE-2026-8798

Full vulnerability record from the local CVENow database.

Description

In Bouncy Castle for Java FIPS (BC-FJA) before bc-fips 2.1.3, the native entropy source used on Intel platforms retried the CPU entropy instructions without any bound. RDSEED and RDRAND report failure through their carry flag, and the JNI seeding routine spun re-issuing the instruction for as long as that flag stayed clear, so a persistent failure of the on-chip entropy source - whether from a hardware fault, from the underlying DRBG being exhausted by contention across many cores, or from a hypervisor that does not provide the instruction - left the calling thread looping indefinitely inside the JNI call, where it could be neither interrupted nor timed out. Any operation drawing from the native entropy source could therefore hang, denying service to the application. The retry loops are now bounded (200 attempts for RDSEED and 20 for RDRAND, twice the baselines given in Intel's Digital Random Number Generator software implementation guide), pausing between attempts and, on exhaustion, clearing any partially written buffer and throwing rather than continuing to spin. The clear is performed by an un-elidable memzero, which uses a volatile pointer and an assembly memory barrier so that a compiler cannot optimise the erase away as a dead store. Bouncy Castle for Java (bcprov) is not affected, as it has no native entropy source; the 1.0.X and 2.0.X FIPS series are not affected.

Severity
HIGH
CVSS score
8.7 (v4.0)
Vulnerability status
Awaiting Analysis
Source identifier
91579145-5d7b-4cc5-b925-a0262ff19630
Published
2026-08-08 01:16:31.393000
Last modified
2026-10-24 13:10:00.147000
View original CVE JSON
{
  "id": "CVE-2026-8798",
  "sourceIdentifier": "91579145-5d7b-4cc5-b925-a0262ff19630",
  "published": "2026-08-08T01:16:31.393",
  "lastModified": "2026-10-24T13:10:00.147",
  "vulnStatus": "Awaiting Analysis",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "In Bouncy Castle for Java FIPS (BC-FJA) before bc-fips 2.1.3, the native entropy source used on Intel platforms retried the CPU entropy instructions without any bound. RDSEED and RDRAND report failure through their carry flag, and the JNI seeding routine spun re-issuing the instruction for as long as that flag stayed clear, so a persistent failure of the on-chip entropy source - whether from a hardware fault, from the underlying DRBG being exhausted by contention across many cores, or from a hypervisor that does not provide the instruction - left the calling thread looping indefinitely inside the JNI call, where it could be neither interrupted nor timed out. Any operation drawing from the native entropy source could therefore hang, denying service to the application. The retry loops are now bounded (200 attempts for RDSEED and 20 for RDRAND, twice the baselines given in Intel's Digital Random Number Generator software implementation guide), pausing between attempts and, on exhaustion, clearing any partially written buffer and throwing rather than continuing to spin. The clear is performed by an un-elidable memzero, which uses a volatile pointer and an assembly memory barrier so that a compiler cannot optimise the erase away as a dead store. Bouncy Castle for Java (bcprov) is not affected, as it has no native entropy source; the 1.0.X and 2.0.X FIPS series are not affected."
    },
    {
      "lang": "es",
      "value": "En Bouncy Castle para Java FIPS (BC-FJA) antes de bc-fips 2.1.3, la fuente de entropía nativa utilizada en plataformas Intel reintentaba las instrucciones de entropía de la CPU sin límite alguno. RDSEED y RDRAND informan de fallos a través de su bandera de acarreo, y la rutina de siembra JNI seguía reemitiendo la instrucción mientras esa bandera permaneciera clara, por lo que un fallo persistente de la fuente de entropía en el chip -ya sea por un fallo de hardware, por el agotamiento del DRBG subyacente debido a la contención entre muchos núcleos, o por un hipervisor que no proporciona la instrucción- dejaba el hilo llamador en un bucle indefinido dentro de la llamada JNI, donde no podía ser ni interrumpido ni se le podía agotar el tiempo de espera. Cualquier operación que se nutriese de la fuente de entropía nativa podía, por lo tanto, colgarse, denegando el servicio a la aplicación. Los bucles de reintento ahora están limitados (200 intentos para RDSEED y 20 para RDRAND, el doble de las líneas base dadas en la guía de implementación de software del Generador de Números Aleatorios Digitales de Intel), haciendo pausas entre intentos y, al agotarse, limpiando cualquier búfer parcialmente escrito y lanzando una excepción en lugar de seguir en bucle. La limpieza se realiza mediante un memzero no eludible, que utiliza un puntero volátil y una barrera de memoria de ensamblador para que un compilador no pueda optimizar el borrado como un almacenamiento muerto. Bouncy Castle para Java (bcprov) no se ve afectado, ya que no tiene una fuente de entropía nativa; las series FIPS 1.0.X y 2.0.X no se ven afectadas."
    }
  ],
  "affected": [
    {
      "source": "91579145-5d7b-4cc5-b925-a0262ff19630",
      "affectedData": [
        {
          "vendor": "Legion of the Bouncy Castle Inc.",
          "product": "BC-FJA",
          "defaultStatus": "unaffected",
          "collectionURL": "https://www.bouncycastle.org/download/bouncy-castle-java-fips/",
          "packageName": "bc-fips",
          "platforms": [
            "x86",
            "x86-64"
          ],
          "programFiles": [
            "rand_jni.c",
            "NativeEntropySource"
          ],
          "packageURL": "pkg:maven/org.bouncycastle/bc-fips",
          "versions": [
            {
              "version": "2.1.0",
              "lessThan": "2.1.3",
              "versionType": "maven",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV40": [
      {
        "source": "91579145-5d7b-4cc5-b925-a0262ff19630",
        "type": "Secondary",
        "cvssData": {
          "version": "4.0",
          "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:Amber",
          "baseScore": 8.7,
          "baseSeverity": "HIGH",
          "attackVector": "NETWORK",
          "attackComplexity": "LOW",
          "attackRequirements": "NONE",
          "privilegesRequired": "NONE",
          "userInteraction": "NONE",
          "vulnConfidentialityImpact": "NONE",
          "vulnIntegrityImpact": "NONE",
          "vulnAvailabilityImpact": "HIGH",
          "subConfidentialityImpact": "NONE",
          "subIntegrityImpact": "NONE",
          "subAvailabilityImpact": "NONE",
          "exploitMaturity": "NOT_DEFINED",
          "confidentialityRequirement": "NOT_DEFINED",
          "integrityRequirement": "NOT_DEFINED",
          "availabilityRequirement": "NOT_DEFINED",
          "modifiedAttackVector": "NOT_DEFINED",
          "modifiedAttackComplexity": "NOT_DEFINED",
          "modifiedAttackRequirements": "NOT_DEFINED",
          "modifiedPrivilegesRequired": "NOT_DEFINED",
          "modifiedUserInteraction": "NOT_DEFINED",
          "modifiedVulnConfidentialityImpact": "NOT_DEFINED",
          "modifiedVulnIntegrityImpact": "NOT_DEFINED",
          "modifiedVulnAvailabilityImpact": "NOT_DEFINED",
          "modifiedSubConfidentialityImpact": "NOT_DEFINED",
          "modifiedSubIntegrityImpact": "NOT_DEFINED",
          "modifiedSubAvailabilityImpact": "NOT_DEFINED",
          "Safety": "NOT_DEFINED",
          "Automatable": "NOT_DEFINED",
          "Recovery": "NOT_DEFINED",
          "valueDensity": "NOT_DEFINED",
          "vulnerabilityResponseEffort": "NOT_DEFINED",
          "providerUrgency": "AMBER"
        }
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-08-10T16:25:32.762419Z",
          "id": "CVE-2026-8798",
          "options": [
            {
              "exploitation": "none"
            },
            {
              "automatable": "yes"
            },
            {
              "technicalImpact": "partial"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "91579145-5d7b-4cc5-b925-a0262ff19630",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-835"
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://github.com/bcgit/bc-java/wiki/CVE%E2%80%902026%E2%80%908798",
      "source": "91579145-5d7b-4cc5-b925-a0262ff19630"
    }
  ]
}