Executive brief
A vulnerability was identified in the sigstore-js library, which is used to verify the authenticity of software and digital signatures. Due to a technical error in how the library processes data types, an attacker could modify the description of a signed file without breaking the digital signature. This could allow a malicious actor to misrepresent the nature of a signed file while still appearing to have a valid, trusted signature.
Technical details
The preAuthEncoding (PAE) function in @sigstore/core incorrectly used Node.js 'ascii' encoding when converting PAE strings to bytes. In Node.js, 'ascii' encoding truncates characters above U+00FF to their low byte, meaning multiple Unicode characters can produce the same byte output as standard ASCII characters. An attacker can exploit this by substituting characters in the payloadType with Unicode variants that result in identical encoded bytes, effectively bypassing the type-binding guarantees of the Dead Simple Signing Envelope (DSSE) specification. This allows the payload type to be altered after signing while the signature remains valid. The issue is fixed in version 3.2.1 by implementing proper UTF-8 encoding.
Affected products
- sigstore sigstore-js < 3.2.1
- sigstore @sigstore/core <= 3.2.0
Timeline
- 2026-05-22: patched: Fix merged into main branch and version 3.2.1 released.
- 2026-05-27: advisory: GitHub Security Advisory published.
- 2026-07-14: disclosed: CVE-2026-48758 published to NVD.