CD-008 - Critical Vulnerability - Generic Verifier - VC Authorization Bypass
VC Authorization Bypass
Status: Released
Published: 31.07.2026
Effective: 31.07.2026
Affected Components: Generic Verifier
Internal Reference: EIDSEC-890, EIDOMNI-1171
The VC signature verification uses the kid header to resolve the signing key, but trust validation used the iss claim without comparing the two. This allows an attacker to present a credential signed by their own key (kid=attacker) while claiming a trusted issuer iss=trusted), bypassing trust validation.
Action required
⚠️ Required soon 🚨 Breaking 🆕 Optional ✅ Improvement 🐞 Fix
Generic Verifier
Version: 4.1.2
⚠️ Critical Vulnerability, upgrade ASAP
- Version 4.1.2 contains the fix (branch: feature/EIDOMNI-1171_rework_did_resolution), upgrade to this version
- The fix binds trust validation to the DID from the kid header (actual signer), not the iss claim
Migration steps
- Since there are no breaking changes associated with the fix, there are no specific migration steps necessary.
Timeline
- 27 July 2026: Vulnerability reported through the BugBounty Program
- 29 July 2026: Vulnerability announced, fix available on feature branch
- 30 July 2026: Version 4.1.2 released with fix
Root Cause (EIDOMNI-873)
| Commit | Date | Change |
|---|---|---|
| a870ddd2 | 2026-07-08 | Removed iss claim from DidJwtValidator.getDidString() — DID resolution now uses only kid header |
| a4d7dde5 | 2026-07-08 | Removed kid vs iss equality check in SdJwtVpTokenVerifier.verifyVpTokenTrustStatement() |
Affected Versions
| Version | Status | Notes |
|---|---|---|
| 4.1.0 | 🚨 Vulnerable | First release with EIDOMNI-873 changes |
| 4.1.1 | 🚨 Vulnerable | Current main branch |
| 4.1.2 | ✅ Fixed | Branch feature/EIDOMNI-1171_rework_did_resolution |
Fix Commits
| Commit | Issue | Change |
|---|---|---|
| da633dcd | EIDOMNI-1171 | DCQL flow: trust validated against kid DID via DidKidParser |
| bcf4bca2 | EIDOMNI-1050 | Trust Protocol 1.0: explicit kid DID == iss check restored |