Vulnerabilities in pkg:npm/@sigstore/core
PACKAGECVE-2026-48758 is a MODERATE (CVSS 5.4) @sigstore/core has dsse payloadtype type-binding vulnerability (CWE-347: Improper Verification of Cryptographic Signature) affecting @sigstore/core libraries in the npm ecosystem. The issue involves @sigstore/core has dsse payloadtype type-binding failure. Remediation is available by upgrading affected packages to version 3.2.1.
pkg:npm/@sigstore/core
Vulnerability advisories affecting package pkg:npm/@sigstore/core. Select an advisory below to view technical details or fixes.
| Advisory ID | CVE / NVD | Severity | Summary |
|---|---|---|---|
| GHSA-jfc7-64v2-mr8c | CVE-2026-48758 | MODERATE | @sigstore/core has DSSE payloadType type-binding failure |
CVE-2026-48758 at a Glance
Security Impact
CVSS: 5.4
The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L).
How to Fix CVE-2026-48758
To remediate this vulnerability, upgrade all affected @sigstore/core dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
npm install @sigstore/core@3.2.1
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
npm ls @sigstore/core
How to Check if You Are Affected
To determine whether your Node.js application is affected by CVE-2026-48758, inspect your project dependencies using npm:
npm ls @sigstore/core
Analyze the terminal output to locate any version of @sigstore/core in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 3.2.1), your application is affected.
Note: The npm ls @sigstore/core command inspects dependencies declared in your package.json and lockfile; it does not perform automated runtime dynamic scanning.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-347: Improper Verification of Cryptographic Signature, where the product does not verify, or incorrectly verifies, the cryptographic signature for data. In @sigstore/core, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
CVE-2026-48758 Affected @sigstore/core Versions
1 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
@sigstore/core
|
npm |
< 3.2.1
|
3.2.1
|
References
Frequently Asked Questions
What is CVE-2026-48758?
Which @sigstore/core versions are affected?
What version fixes CVE-2026-48758?
Is @sigstore/core affected?
What is the CVSS score of CVE-2026-48758?
What CWE is associated with CVE-2026-48758?
How can I check npm dependencies for CVE-2026-48758?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-jfc7-64v2-mr8c",
"modified" : "2026-06-26T19:11:20Z",
"published" : "2026-06-26T19:11:19Z",
"aliases" : [ "CVE-2026-48758" ],
"summary" : "@sigstore/core has DSSE payloadType type-binding failure",
"details" : "### Impact\nThe `preAuthEncoding` function in `@sigstore/core` uses Node.js `'ascii'` encoding when converting the PAE (Pre-Authentication Encoding) string to bytes. This allows `payloadType` to be mutated after signing without invalidating the signature, breaking the type-binding guarantee that DSSE is designed to provide.\n\nIn `packages/core/src/dsse.ts`, the PAE function builds a string containing `payloadType` and then encodes it with `Buffer.from(prefix, 'ascii')`.\n\nIn Node.js, `'ascii'` encoding for string-to-Buffer is equivalent to `'latin1'`, which **truncates characters above U+00FF to their low byte**. This means for any ASCII character, there exist Unicode characters (at U+01xx, U+02xx, etc.) that produce the identical encoded byte:\n\n| Original | Codepoint | Mutant | Codepoint | Encoded byte |\n|----------|-----------|--------|-----------|--------------|\n| `t` | U+0074 | `Ŵ` | U+0174 | `0x74` |\n| `e` | U+0065 | `ť` | U+0165 | `0x65` |\n\nAn attacker can substitute every character in `payloadType` with a Unicode variant whose low byte matches, producing **identical PAE bytes** and a passing signature verification.\n\nAdditionally, `payloadType.length` returns the JavaScript string length (UTF-16 code units) rather than the UTF-8 byte length required by the DSSE spec, though this is only a contributing factor for non-ASCII types.\n\n#### Reproduction\n\n```javascript\nconst { preAuthEncoding } = require('@sigstore/core/dist/dsse.js');\nconst payload = Buffer.from('hello world');\n\nconst original = preAuthEncoding('text/plain', payload);\n// U+01xx chars whose low bytes match the original ASCII chars\nconst mutant = preAuthEncoding('\\u0174\\u0165\\u0178\\u0174/\\u0170\\u016c\\u0161\\u0169\\u016e', payload);\n\nconsole.log('PAE bytes equal:', original.equals(mutant)); // true — should be false\n```",
"severity" : [ {
"type" : "CVSS_V3",
"score" : "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "npm",
"name" : "@sigstore/core"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "0"
}, {
"fixed" : "3.2.1"
} ]
} ],
"database_specific" : {
"last_known_affected_version_range" : "<= 3.2.0"
}
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/sigstore/sigstore-js/security/advisories/GHSA-jfc7-64v2-mr8c"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/sigstore/sigstore-js"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-347" ],
"severity" : "MODERATE",
"github_reviewed" : true,
"github_reviewed_at" : "2026-06-26T19:11:19Z",
"nvd_published_at" : null
}
}