CVE-2026-48758: sigstore-js: DSSE payloadType type-binding failure

Published Jun 26, 2026
·
Updated

Impact The 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.

In packages/core/src/dsse.ts, the PAE function builds a string containing payloadType and then encodes it with Buffer.from(prefix, 'ascii').

In 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:

| Original | Codepoint | Mutant | Codepoint | Encoded byte | |----------|-----------|--------|-----------|--------------| | t | U+0074 | Ŵ | U+0174 | 0x74 | | e | U+0065 | ť | U+0165 | 0x65 |

An attacker can substitute every character in payloadType with a Unicode variant whose low byte matches, producing identical PAE bytes and a passing signature verification.

Additionally, 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.

Reproduction

javascript const { preAuthEncoding } = require('@sigstore/core/dist/dsse.js'); const payload = Buffer.from('hello world');

const original = preAuthEncoding('text/plain', payload); // U+01xx chars whose low bytes match the original ASCII chars const mutant = preAuthEncoding('\u0174\u0165\u0178\u0174/\u0170\u016c\u0161\u0169\u016e', payload);

console.log('PAE bytes equal:', original.equals(mutant)); // true — should be false

Other sources

sigstore-js provides JavaScript libraries for interacting with Sigstore services. Prior to 3.2.1, the preAuthEncoding function in @sigstore/core uses Node.js ascii encoding when converting the PAE string to bytes, allowing payloadType to be mutated after signing without invalidating the signature and breaking the type-binding guarantee that DSSE is designed to provide. This issue is fixed in version 3.2.1.

— MITRE

Affected Software

1 affected componentFixes available
npm/@sigstore/core<=3.2.0
3.2.1

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade npm/@sigstore/core to a version that resolves this vulnerability.

    Fixed in 3.2.1
  2. Upgrade

    Upgrade @sigstore/core to a version that resolves this vulnerability.

    Fixed in 3.2.1
  3. Configuration

    Modify the preAuthEncoding/PAE byte conversion in @sigstore/core to encode the PAE string with UTF-8 rather than Node.js 'ascii' so that payloadType is type-bound and cannot be mutated to produce identical PAE bytes.

    @sigstore/core (preAuthEncoding in packages/core/src/dsse.ts) Node.js string-to-Buffer encoding for PAE string (Buffer.from(prefix, 'ascii')) = Use UTF-8 encoding instead of 'ascii' (ascii/latin1 truncates characters > U+00FF)

Event History

Jun 26, 2026
Advisory Published
via GitHub·07:11 PM
Data Sourced
via GitHub·07:11 PM
DescriptionSeverityWeaknessAffected Software
Jul 14, 2026
CVE Published
via MITRE·08:36 PM
Data Sourced
via MITRE·08:36 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·09:17 PM
DescriptionSeverityWeakness

Frequently Asked Questions

1

What is the severity of CVE-2026-48758?

The severity of CVE-2026-48758 is medium with a score of 5.4.

2

What impact does CVE-2026-48758 have on the system?

CVE-2026-48758 allows the `payloadType` to be mutated after signing without invalidating the signature, potentially breaking type-binding guarantees.

3

How does CVE-2026-48758 affect the Pre-Authentication Encoding process?

The vulnerability in CVE-2026-48758 relates to the use of Node.js 'ascii' encoding in the `preAuthEncoding` function which can lead to unauthorized modifications.

4

How do I fix CVE-2026-48758?

To fix CVE-2026-48758, ensure you are using an updated version of the @sigstore/core library that addresses this vulnerability.

5

Is CVE-2026-48758 related to any specific software?

Yes, CVE-2026-48758 is specifically related to the npm package @sigstore/core.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203