Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-48791

CVE-2026-48791: sigstore-java Auth Bypass Vulnerability

CVE-2026-48791 is an authentication bypass flaw in sigstore-java version 2.0.0 that removed verification of integrated time against Fulcio certificates. This post explains its impact, affected versions, and mitigation steps.

Published:

CVE-2026-48791 Overview

CVE-2026-48791 affects dev.sigstore:sigstore-java, a Java client for interacting with Sigstore infrastructure. Version 2.0.0 erroneously removed verification of the integrated Rekor entry time against the Fulcio certificate validity window. This weakens the trust guarantees of Sigstore's short-lived certificate model and falls under Improper Verification of Cryptographic Signature [CWE-347]. Only consumers verifying bundles with sigstore-java:2.0.0 are affected. Older versions were not impacted, and the issue is fixed in sigstore-java:2.1.0, which re-adds the check with enhancements aligned to the Sigstore verification specification.

Critical Impact

An attacker who previously obtained a user's ephemeral signing key and an old Fulcio certificate could reuse them to produce artifact signatures that sigstore-java:2.0.0 would still accept as valid.

Affected Products

  • dev.sigstore:sigstore-java version 2.0.0
  • Java applications and build pipelines consuming sigstore-java 2.0.0 for artifact verification
  • Downstream distributions bundling sigstore-java 2.0.0

Discovery Timeline

  • 2026-08-13 - CVE-2026-48791 published to the National Vulnerability Database (NVD)
  • 2026-08-13 - Last updated in NVD database

Technical Details for CVE-2026-48791

Vulnerability Analysis

Sigstore uses short-lived Fulcio-issued X.509 certificates bound to an OIDC identity. Verifiers must confirm that the Rekor transparency log's integrated time falls within the Fulcio certificate's validity window. This ensures that a signature was produced while the identity's certificate was legitimately active.

In sigstore-java:2.0.0, this integrated-time check was removed. The client accepted bundles as valid even when the Rekor entry's integrated time did not fall within the certificate's validity period. A companion sigstore-conformance test was constructed incorrectly and failed to catch the regression before release.

The practical outcome is a weakened trust boundary. Signatures that should be rejected because they were logged outside a certificate's validity window are silently accepted.

Root Cause

The root cause is missing signature-context validation. The verifier omitted the check that binds Rekor entry integrated time to Fulcio certificate notBefore/notAfter bounds. The Bundle model also permitted bundles that lacked a positive integratedTime, allowing verification paths to skip the temporal check entirely.

Attack Vector

Exploitation requires an attacker who has already compromised a signing environment and exfiltrated the ephemeral private key used during a Sigstore signing operation. With that key and the corresponding Fulcio certificate, an attacker can later produce signatures over arbitrary artifacts. A verifier running sigstore-java:2.0.0 accepts these signatures despite the certificate being outside its short validity window at the time of signing. The attack does not require re-authenticating to the identity provider.

java
// Patch: require a positive integrated time alongside SET in Bundle.java
@Value.Check
protected void checkAtLeastOneTimestamp() {
  for (var entry : getEntries()) {
    if (entry.getVerification().getSignedEntryTimestamp() != null
        && entry.getIntegratedTime() > 0) {
      return;
    }
  }
  // ...
}

Source: GitHub Commit b529335

java
// Patch: KeylessVerifier.java now imports time primitives to enforce
// Rekor integrated-time vs Fulcio certificate validity checks
import java.security.cert.CertificateNotYetValidException;
import java.security.cert.X509Certificate;
import java.security.spec.InvalidKeySpecException;
import java.time.Instant;
import java.util.Arrays;
import java.util.Base64;
import java.util.Date;

Source: GitHub Commit b529335

Detection Methods for CVE-2026-48791

Indicators of Compromise

  • Rekor transparency log entries for a given identity whose integratedTime falls outside the associated Fulcio certificate's notBefore/notAfter window.
  • Unexpected Sigstore signatures attributed to a developer or CI identity that did not perform a signing action at the logged time.
  • Build or deployment pipelines that resolve dev.sigstore:sigstore-java at version 2.0.0.

Detection Strategies

  • Re-verify previously accepted artifacts using sigstore-java:2.1.0 or another current Sigstore client (for example, cosign or sigstore-python) and flag any signatures that now fail.
  • Audit the Rekor transparency log for the impacted identities and correlate entry timestamps with the corresponding Fulcio certificate validity windows.
  • Scan software bills of materials (SBOMs) and dependency manifests for the vulnerable dev.sigstore:sigstore-java:2.0.0 coordinate.

Monitoring Recommendations

  • Monitor CI/CD hosts for access to Sigstore ephemeral key material and OIDC token exchange artifacts.
  • Alert on new Rekor entries appearing for an identity outside expected signing windows or from unusual source environments.
  • Track dependency drift so that any regression back to sigstore-java:2.0.0 in downstream builds is surfaced.

How to Mitigate CVE-2026-48791

Immediate Actions Required

  • Upgrade all consumers to dev.sigstore:sigstore-java:2.1.0 or later, which restores integrated-time verification.
  • Re-verify recently released artifacts with a current Sigstore client and reject any that fail the updated checks.
  • Rotate any signing identities suspected of ephemeral-key exposure and invalidate related Fulcio certificates where operationally possible.

Patch Information

The fix is delivered in dev.sigstore:sigstore-java:2.1.0. Relevant changes are tracked in GitHub Pull Request #1185 and GitHub Pull Request #1008, with implementation details in GitHub Commit b529335 and GitHub Commit 4b7a49e. Full advisory context is available in GitHub Security Advisory GHSA-qqw8-7c2r-jxch.

Workarounds

  • Perform verification with an alternative, up-to-date Sigstore client such as cosign or sigstore-python until Java consumers can be upgraded.
  • Enforce out-of-band checks that a Rekor entry's integratedTime lies within the Fulcio certificate validity window before trusting a bundle.
  • Restrict access to signing hosts to reduce the likelihood of ephemeral key exfiltration that would make this flaw exploitable.
bash
# Force sigstore-java upgrade in a Gradle build
./gradlew dependencies --refresh-dependencies \
  -PsigstoreJavaVersion=2.1.0

# Maven enforcer rule snippet: ban vulnerable version
# <bannedDependencies>
#   <excludes>
#     <exclude>dev.sigstore:sigstore-java:2.0.0</exclude>
#   </excludes>
# </bannedDependencies>

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.