Safeguard
Vulnerability Analysis•

CVE-2026-4601: DSA Key Recovery Flaw in jsrsasign

CVE-2026-4601 can leak a DSA private key from a jsrsasign signature in versions before 11.1.1. Upgrade to 11.1.1 or later and rotate keys you signed with.

Safeguard Security Team
3 min read

CVE-2026-4601 is a high severity (CVSS 8.7) cryptographic flaw in jsrsasign. In versions before 11.1.1, DSA signing can emit an invalid signature that lets an observer solve for the private key. Upgrade to 11.1.1 or later, and rotate any DSA key used with older versions.

What's affected

The NVD record says jsrsasign versions before 11.1.1 are vulnerable, in KJUR.crypto.DSA.signWithMessageHash. I could not read the Snyk page for this specific CVE, but the Snyk page for the sibling CVE-2026-4600 gives the same range and names 11.1.1 as the fix. The upstream pull request does not state a release number, so confirm 11.1.1 in the project's release notes.

The vector is CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:N. The scope is changed because a leaked signing key affects whatever trusts that key, not only the library.

The record also references a WebJars package and a Red Hat erratum, RHSA-2026:19375, so the code may come to you outside npm.

How to check if you're exposed

  1. Print the version in each project with npm ls jsrsasign.
  2. Look through your code for DSA signing with this library. If you only verify, or only sign with RSA or ECDSA, this flaw is not on your path.
  3. Check lockfiles and Java WebJars for bundled copies.
  4. Scan your dependency tree with gold.safeguard.sh/scan.

What to do now

  1. Upgrade to jsrsasign 11.1.1 or later.
  2. List every DSA key that signed data with an older version.
  3. Rotate those keys where you can, since one bad signature may already have been seen.
  4. Move to ECDSA or RSA for new signing work if DSA is not required.

Why it matters

The class is CWE-325, a missing cryptographic step. DSA requires that if either part of a signature comes out as zero, the signer must pick a fresh random value and try again. The pull request says the library skipped that retry. When one part is zero, the private key can be worked out from that single signature, according to the pull request author.

The fix adds the retry loop, as FIPS 186-4 requires, and changes no API. The KEV flag is false and no page I read reports exploitation.

Quick check

Do I need to rotate keys after upgrading?

Upgrading stops new bad signatures. Keys that signed data on an older version are worth rotating if the signatures were public.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.