Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain leaked encrypted key export
-
DeliveryParse weak PBKDF2 parameters from DER
-
ExploitRun cheap offline password-cracking attack
-
ExecutionRecover full private key
-
ImpactImpersonate or decrypt as victim
Vulnerability Assessment
| Weakness |
CWE
|
| Exploitation Conditions | Exploitation requires three concrete preconditions. (1) The victim application must have exported a private key using the password-based export path - JOSE.JWK.to_der/2 (jose_jwk:to_der/2), the PEM equivalents, or their _file variants - which produces a PKCS#8 EncryptedPrivateKeyInfo protected by the hardcoded PBES2 parameters; keys exported without a password or by other means are unaffected. (2) The attacker must obtain that exported blob from a location they can read (backup, config repository, object storage, or logs); no host access, runtime access, or authenticated session on the victim system is needed. (3) Success is gated on the export password being weak or moderate enough to fall to an offline attack at only 2048 PBKDF2 iterations - a long, randomly generated password still resists even this reduced work factor. The key LIMITING factors are therefore blob exposure and password strength, not any network-reachable interface; the flaw cannot be triggered against a running service and does not affect keys already on disk unless their encrypted export leaks. |
| Impact | Signals point consistently to a genuine-but-bounded issue rather than a drop-everything emergency. The CVSS 4.0 base score is 7.4 (High), but the vector itself tells the real story: AV:L with AT:P means this is not a remote attack against a running jose service - exploitation happens offline, after an attacker has already obtained an exported, password-encrypted private-key blob, and only when an attack requirement (the blob being exposed somewhere readable) is met. EPSS is effectively zero (0.06%, 0th percentile) and the CVE is NOT in CISA KEV, so there is no evidence of active or widespread exploitation; this is a latent cryptographic-strength weakness, not a mass-exploitable network flaw. Working proof-of-concept code is published in the GHSA advisory, which raises practical risk for anyone whose exported blobs have leaked, but POC availability is a distinct signal from active exploitation and should not be conflated with it. The vendor/CNA (EEF/ErlEF) priority label is 'this_week,' which is consistent with the picture: patch promptly, but the dominant real-world risk is conditional on (a) using the password-export API and (b) a blob leaking plus (c) a weak/moderate export password. Note a signal tension worth flagging: a 7.4 High score sits alongside near-zero EPSS and no KEV listing - this reflects high theoretical impact (full private-key compromise) gated behind preconditions the attacker does not control, i.e. targeted/opportunistic rather than widespread exploitation. |
| Exploit ScenarioDerived | An application uses JOSE.JWK.to_der(password, jwk) to export a password-encrypted private key, and the resulting PKCS#8 EncryptedPrivateKeyInfo blob ends up in a readable location such as a backup, a configuration repository, object storage, or logs. An attacker who obtains only that blob parses the embedded PBES2/PBKDF2 parameters (2048 iterations, 64-bit salt) and runs an offline dictionary or brute-force attack against the export password roughly 300x cheaper than modern guidance would allow, recovering the full private key on success. A working proof-of-concept demonstrating parameter recovery and the offline crack via the library's public decrypt path is published in the GHSA advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Password-protected private-key exports produced by the Erlang/Elixir jose library between 1.10.0 and 1.11.12 are encrypted with a hardcoded, drastically under-strength key-derivation step, so anyone who obtains such an exported blob can crack the export password offline at roughly 300 times less cost than modern guidance intends and recover the full private key. Only the password-based export path is affected (JOSE.JWK.to_der/2, jose_jwk:to_der/2, the PEM equivalents and their _file variants); the attack requires possession of the exported DER/PEM file and succeeds only where the export password is weak or moderate, since a long randomly generated password still resists 2048 PBKDF2 iterations. EPSS is very low (0.06%) and there is no KEV listing, but a public proof-of-concept script accompanies the upstream advisory; a public PoC reference exists and demonstrates parameter extraction plus dictionary recovery, though it is not verified here as working exploit code. The vendor fixed the parameters in 1.11.13, and the CVSS vector indicates no privileges are required (PR:N), with the practical gating factors being blob exposure and password strength rather than any network-reachable interface.
RemediationAI
Vendor-released patch: 1.11.13, available via the Hex package jose (advisory https://github.com/potatosalad/erlang-jose/security/advisories/GHSA-h4gx-8jq2-mfhc, fix commit https://github.com/potatosalad/erlang-jose/commit/461b261902531ca016190e780bb70862d561a7e0). Upgrading changes password-protected PKCS#8 exports to PBES2 with PBKDF2-HMAC-SHA256 at 600,000 iterations and a 16-byte random salt, using native PBKDF2 where available. Upgrading alone does not repair artifacts already written: blobs produced by earlier versions remain importable and keep their original weak parameters, so re-export them with 1.11.13 and, if an older password-encrypted export may have been exposed (backups, config repositories, object storage, logs), treat the private key as compromised and rotate it. If you cannot upgrade, the vendor's stated workaround is to not rely on jose for password-based key export: export the key unencrypted only into storage you control and encrypt it with a tool whose KDF cost you choose, for example openssl pkcs8 -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA256 -iter 600000, using a long, randomly generated password; the trade-off is that the unencrypted intermediate must be handled and deleted safely, and callers lose the convenience of the library's built-in export path.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The flaw is in jose_jwk_der:to_binary/3 (src/jwk/jose_jwk_der.erl, around lines 48-49), reached whenever a caller supplies a password to the JWK export API. The key is serialized as a PKCS#8 EncryptedPrivateKeyInfo using the PBES2 scheme, where the key-derivation parameters are compiled into the source and cannot be overridden by the caller: PBKDF2-HMAC-SHA256 with iterationCount = 2048 and an 8-byte (64-bit) random salt. Both violate current guidance (OWASP suggests on the order of 600,000 PBKDF2-HMAC-SHA256 iterations; NIST recommends salts of at least 128 bits), reducing the per-guess work factor by roughly 300x and lowering the cost of precomputation and cross-key attacks because of the short salt. The symmetric layer itself is sound - AES-256-CBC with a 16-byte random IV - so the vulnerability class, CWE-916 (Use of Password Hash With Insufficient Computational Effort), maps purely to derivation strength. The CVSS 4.0 vector published with the CVE (AV:L, AT:P, PR:N, VC:H/VI:H/VA:N) reflects that the attacker must already hold the encrypted artifact and that a weak password is a precondition, not that any remotely reachable service can be attacked. Because the parameters are fixed, every EncryptedPrivateKeyInfo emitted by affected versions carries the same weak work factor regardless of application configuration.
Know when Jose gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Exploitation is offline against a leaked export (AV:L) and depends on blob exposure plus password strength outside attacker control (AC:H); no system privileges needed (PR:N); recovered key breaks confidentiality and enables forgery (C:H/I:H), no availability impact.
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
DescriptionCVE.org
Use of Password Hash With Insufficient Computational Effort in the jose library allows an attacker who obtains a password-encrypted private-key export to recover the private key through an offline password-cracking attack.
When jose exports a password-encrypted private key with jose_jwk:to_der/2 (JOSE.JWK.to_der/2), the jose_jwk_der:to_binary/3 function in src/jwk/jose_jwk_der.erl serializes the key as a PKCS#8 EncryptedPrivateKeyInfo using the PBES2 scheme with hardcoded key-derivation parameters: PBKDF2-HMAC-SHA256 with an iteration count of 2048 and an 8-byte (64-bit) random salt. Neither value can be overridden by the caller.
Both values are far below current guidance (OWASP recommends on the order of 600,000 iterations for PBKDF2-HMAC-SHA256, and NIST recommends salts of at least 128 bits), so the key-stretching work factor is roughly 300 times lower than intended and the short salt reduces the cost of precomputation across keys. The symmetric encryption (AES-256-CBC with a 16-byte random IV) is not affected; the weakness is entirely in the derivation strength. An attacker who obtains one of these exported blobs (for example from a backup, configuration repository, object storage, or logs) can mount a cheap offline dictionary or brute-force attack against the export password, and success yields the full private key.
This issue affects jose: from 1.10.0 before 1.11.13.
Executive ViewAI
The Erlang/Elixir jose library versions 1.10.0-1.11.12 use a weak key derivation function when exporting password-protected private keys, weakening the encryption for those files. If an exported blob is exposed (e.g., via misconfigured storage or repository leak) and the export password is weak, an attacker can crack it offline at reduced cost and recover the private key, potentially compromising JWT signing, encryption, or TLS authentication across services that rely on those keys. Leadership should care because a single recovered key can allow unauthorized token generation or decryption, impacting authentication integrity and data confidentiality.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
JOSE is "JSON Web Almost Everything" - JWA, JWS, JWE, JWT, JWK, JWKS with no dependencies using runtime's native crypto
Signature verification bypass in the OCaml jose library (ulrikstrid/ocaml-jose) before 0.11.0 lets attackers forge valid
JWT token forgery in appsup-dart/jose library (versions prior to 0.3.5+1) enables remote attackers to bypass authenticat
Memory-exhaustion denial of service in the erlang-jose JOSE/JWE library for Erlang and Elixir (versions 1.0.0 through 1.
CPU-exhaustion denial of service in the erlang-jose library (versions 1.7.7 through 1.11.12) lets remote attackers who c
jose is an npm library providing a number of cryptographic operations. Rated medium severity (CVSS 5.9), this vulnerabil
Recovery of a long-term X25519 private key is possible in erlang-jose 1.10.0 through 1.11.12 whenever the pure-Erlang Cu
The Erlang/Elixir JOSE library (potatosalad/erlang-jose) can be driven into an unbounded tail-recursive loop through JOS
Authentication-tag forgery in the Erlang JOSE library (jose 1.2.0 through 1.11.12) lets an unauthenticated remote attack
Bleichenbacher padding-oracle weakness in erlang-jose's pure-Erlang RSAES-PKCS1-v1_5 decryption (jose 1.3.0 through befo
jose is JavaScript module for JSON Object Signing and Encryption, providing support for JSON Web Tokens (JWT), JSON Web
ECDSA JWS signature malleability in erlang-jose (potatosalad:jose) 1.0.0 through 1.11.12 lets anyone holding a single le
EUVD-2026-110308
NVD
CVE.org
EPSS
GitHub
Exploit-DB