CVE-2026-48815
sigstore-js: `certificateOIDs` verification constraints are silently dropped and never enforced
sigstore-js provides JavaScript libraries for interacting with Sigstore services. Prior to 4.1.1, the documented certificateOIDs option in sigstore.verify() is accepted by the public API but discarded before verification, so required certificate extension OIDs are never checked and applications relying on certificateOIDs to restrict which certificates may sign artifacts can accept unauthorized certificates. This issue is fixed in version 4.1.1.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- High
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
7.5
sigstore-js: `certificateOIDs` verification constraints are silently dropped and never enforced
sigstore-js provides JavaScript libraries for interacting with Sigstore services. Prior to 4.1.1, the documented certificateOIDs option in sigstore.verify() is accepted by the public API but discarded before verification, so required certificate extension OIDs are never checked and applications relying on certificateOIDs to restrict which certificates may sign artifacts can accept unauthorized certificates. This issue is fixed in version 4.1.1.
- Record
CVE-2026-48815- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N - Weakness
- CWE-347
- Updated
- 2026-11-02
EUVDEUVD-2026-44494
7.5
sigstore-js provides JavaScript libraries for interacting with Sigstore services. Prior to 4.1.1, the documented certificateOIDs option in sigstore.verify() is accepted by the public API but discarded before verification, so required certificate extension OIDs are never checked and applications relying on certificateOIDs to restrict which certificates may sign artifacts can accept unauthorized certificates. This issue is fixed in version 4.1.1.
- Record
EUVD-2026-44494- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-52v5-jr5w-gjxr
7.5
sigstore's `certificateOIDs` verification constraints are silently dropped and never enforced
Summary
The documented certificateOIDs option in sigstore.verify() is accepted by the public API but discarded before verification, so required certificate extension OIDs are never checked.
Details
The public verify options include certificateOIDs and the documentation says those OID/value pairs “must be present in the certificate’s extension list.” The policy-construction path used by sigstore.verify() and createVerifier() only copies the SAN and issuer settings into the verification policy and completely ignores certificateOIDs.
As a result, callers can believe they are constraining verification to certificates carrying specific Fulcio or workload-identifying OIDs, while the actual verifier never receives those constraints. Any bundle that satisfies the remaining checks is accepted even if the required OID extensions are absent or mismatched.
This is reachable from supported usage through the documented certificateOIDs verify option.
PoC
const { createVerificationPolicy } = require("sigstore/dist/config");
const policy = createVerificationPolicy({
certificateIssuer: "https://issuer.example",
certificateIdentityEmail: "[email protected]",
certificateOIDs: {
"1.2.3.4": "required-value",
},
});
console.log("certificateOIDs" in policy, JSON.stringify(policy));
// false {"subjectAlternativeName":"[email protected]","extensions":{"issuer":"https://issuer.example"}}
Impact
Applications that rely on certificateOIDs to restrict which certificates may sign artifacts receive no such protection. Unauthorized certificates that should be rejected on extension policy can be accepted as long as they satisfy the remaining verification checks.
- Record
GHSA-52v5-jr5w-gjxr- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N - Weakness
- CWE-347
- Updated
- 2026-11-02
NVD
7.5
sigstore-js provides JavaScript libraries for interacting with Sigstore services. Prior to 4.1.1, the documented certificateOIDs option in sigstore.verify() is accepted by the public API but discarded before verification, so required certificate extension OIDs are never checked and applications relying on certificateOIDs to restrict which certificates may sign artifacts can accept unauthorized certificates. This issue is fixed in version 4.1.1.
- Record
CVE-2026-48815- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N - Weakness
- CWE-347
- Updated
- 2026-11-02
OSV
7.5
sigstore-js: `certificateOIDs` verification constraints are silently dropped and never enforced
sigstore-js provides JavaScript libraries for interacting with Sigstore services. Prior to 4.1.1, the documented certificateOIDs option in sigstore.verify() is accepted by the public API but discarded before verification, so required certificate extension OIDs are never checked and applications relying on certificateOIDs to restrict which certificates may sign artifacts can accept unauthorized certificates. This issue is fixed in version 4.1.1.
- Record
CVE-2026-48815- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N - Weakness
- CWE-347
- Updated
- 2026-11-02
OSVGHSA-52v5-jr5w-gjxr
7.5
sigstore's `certificateOIDs` verification constraints are silently dropped and never enforced
Summary
The documented certificateOIDs option in sigstore.verify() is accepted by the public API but discarded before verification, so required certificate extension OIDs are never checked.
Details
The public verify options include certificateOIDs and the documentation says those OID/value pairs “must be present in the certificate’s extension list.” The policy-construction path used by sigstore.verify() and createVerifier() only copies the SAN and issuer settings into the verification policy and completely ignores certificateOIDs.
As a result, callers can believe they are constraining verification to certificates carrying specific Fulcio or workload-identifying OIDs, while the actual verifier never receives those constraints. Any bundle that satisfies the remaining checks is accepted even if the required OID extensions are absent or mismatched.
This is reachable from supported usage through the documented certificateOIDs verify option.
PoC
const { createVerificationPolicy } = require("sigstore/dist/config");
const policy = createVerificationPolicy({
certificateIssuer: "https://issuer.example",
certificateIdentityEmail: "[email protected]",
certificateOIDs: {
"1.2.3.4": "required-value",
},
});
console.log("certificateOIDs" in policy, JSON.stringify(policy));
// false {"subjectAlternativeName":"[email protected]","extensions":{"issuer":"https://issuer.example"}}
Impact
Applications that rely on certificateOIDs to restrict which certificates may sign artifacts receive no such protection. Unauthorized certificates that should be rejected on extension policy can be accepted as long as they satisfy the remaining verification checks.
- Record
GHSA-52v5-jr5w-gjxr- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N - Weakness
- CWE-347
- Updated
- 2026-11-02
OSVCLSA-2026-1791840004 No score
TuxCare security update for sigstore (1 CVE)
TuxCare rebuilt sigstore to address 1 CVE. Fixed in 2.3.1-tuxcare.1.
- Record
CLSA-2026-1791840004- Updated
- 2026-11-02
OSVCLSA-2026-1792582435 No score
TuxCare security update for sigstore (1 CVE)
TuxCare rebuilt sigstore to address 1 CVE. Fixed in 1.9.0-tuxcare.1.
- Record
CLSA-2026-1792582435- Updated
- 2026-11-02
OSVROOT-APP-NPM-CVE-2026-48815 No score
CVE-2026-48815 in @rootio/sigstore - Patched by Root
Root has patched CVE-2026-48815 in the @rootio/sigstore package for Root:npm. Multiple fixed versions available.
- Record
ROOT-APP-NPM-CVE-2026-48815- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
sigstorenpm |
through 4.1.0 | 4.1.1 |
sigstoreTuxCare:npm |
2.3.1-tuxcare.0 up to 2.3.1-tuxcare.1, plus listed versions 2.3.1 |
2.3.1-tuxcare.1 |
sigstoreTuxCare:npm |
1.9.0-tuxcare.0 up to 1.9.0-tuxcare.1, plus listed versions 1.9.0 |
1.9.0-tuxcare.1 |
sigstorenpm |
before 4.1.1 | 4.1.1 |
@rootio/sigstoreRoot:npm |
before 3.0.0-root.io.1 | 3.0.0-root.io.12.1.0-root.io.11.9.0-root.io.11.5.2-root.io.14.0.0-root.io.13.1.0-root.io.12.3.0-root.io.14.1.0-root.io.12.2.2-root.io.12.3.1-root.io.1 |
sigstoreRoot:npm |
before 3.0.0-aikido.1 | 3.0.0-aikido.12.1.0-aikido.11.9.0-aikido.11.5.2-aikido.14.0.0-aikido.13.1.0-aikido.12.3.0-aikido.14.1.0-aikido.12.2.2-aikido.12.3.1-aikido.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-48815 is a high vulnerability (CVSS 7.5) in Sigstore Sigstore-js, published July 1, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.17%, the 6th percentile. Fixed in sigstore 4.1.1.
References
github.com/sigstore/sigstore-js/security/advisories/GHSA-52v5-jr5w-gjxr
github.com/sigstore/sigstore-js/pull/1658
github.com/sigstore/sigstore-js/commit/7845532f9d17f6f765363dbee82b01bd159fb52b
github.com/sigstore/sigstore-js/releases/tag/sigstore%404.1.1
github.com/advisories/GHSA-52v5-jr5w-gjxr
github.com/CVEProject/cvelistV5/tree/main/cves/2026/48xxx/CVE-2026-48815.json
nvd.nist.gov/vuln/detail/CVE-2026-48815
github.com/sigstore/sigstore-js