Skip to content

Comments

fix(dsa): reject invalid domain parameters to prevent universal signature forgery#646

Merged
kjur merged 2 commits intokjur:masterfrom
Kr0emer:fix/bug-002-dsa-domain-params-validation
Feb 20, 2026
Merged

fix(dsa): reject invalid domain parameters to prevent universal signature forgery#646
kjur merged 2 commits intokjur:masterfrom
Kr0emer:fix/bug-002-dsa-domain-params-validation

Conversation

@Kr0emer
Copy link
Contributor

@Kr0emer Kr0emer commented Feb 20, 2026

Summary

This PR fixes a high-impact DSA verification issue caused by missing domain-parameter validation.

Without validation, attacker-controlled DSA parameters (e.g. g=1, y=1) can make verification accept a forged signature for arbitrary message hashes.

Root Cause

KJUR.crypto.DSA accepted public parameters without checking DSA domain/public key constraints.
As a result, verification could be performed on invalid groups/keys.

Changes

  • src/dsa-2.0.js
    • add strict validation in public key import path (setPublic):
      • 1 < q < p
      • 1 < g < p
      • g^q mod p == 1
      • 1 < y < p
    • reject invalid keys with Error: invalid DSA public key
  • test/qunit-do-dsa.html
    • add regression: setPublicHex rejects g=1
  • test/qunit-do-x509.html
    • add regression: forged self-signed DSA certificate with g=1 is rejected by X509.verifySignature

Security Impact

Prevents universal DSA signature forgery under malicious parameters and blocks forged-certificate acceptance in DSA verification flows that consume untrusted keys/certs.

Validation

  • Reproduced vulnerable behavior before fix using PoC (g=1): forged signature/cert accepted.
  • After fix: invalid key rejected (invalid DSA public key), forged verification fails.
  • npm test in npm/ passes.

@kjur kjur merged commit 37b4c06 into kjur:master Feb 20, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants