Skip to main content

erlang-jose EUVDEUVD-2026-110308

| CVE-2026-65629 HIGH
Use of Password Hash With Insufficient Computational Effort (CWE-916)
2026-10-26 EEF
7.4
CVSS 4.0 · Vendor: EEF
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain leaked encrypted key export
  2. Delivery
    Parse weak PBKDF2 parameters from DER
  3. Exploit
    Run cheap offline password-cracking attack
  4. Execution
    Recover full private key
  5. Impact
    Impersonate 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

jose 85fddd89ee56b6f9c19eff7d9cfffeef62c330b9 <461b261902531ca016190e780bb70862d561a7e0
jose 1.10.0 <1.11.13

Affected Packages

euvd jose fix: 1.11.13

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

Vendor (EEF) PRIMARY 7.4 HIGH
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
vuln.today AI 6.7 MEDIUM

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.

3.1 AV:L/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
4.0 AV:L/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (EEF).

CVSS VectorVendor: EEF

Attack Vector
Local
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

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

Why It Matters

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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.1%
Top 100% exploitable
Prevalence
Medium
de facto JOSE/JWT library for the Erlang/Elixir ecosystem
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact
High

Priority Score

37
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +37
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Jose

View all
CVE-2022-36083 MEDIUM POC
5.3 Sep 07

JOSE is "JSON Web Almost Everything" - JWA, JWS, JWE, JWT, JWK, JWKS with no dependencies using runtime's native crypto

CVE-2026-89086 CRITICAL
9.1 Sep 10

Signature verification bypass in the OCaml jose library (ulrikstrid/ocaml-jose) before 0.11.0 lets attackers forge valid

CVE-2026-34240 HIGH
7.5 Mar 31

JWT token forgery in appsup-dart/jose library (versions prior to 0.3.5+1) enables remote attackers to bypass authenticat

CVE-2026-65627 MEDIUM
6.9 Oct 26

Memory-exhaustion denial of service in the erlang-jose JOSE/JWE library for Erlang and Elixir (versions 1.0.0 through 1.

CVE-2026-65631 MEDIUM
6.9 Oct 26

CPU-exhaustion denial of service in the erlang-jose library (versions 1.7.7 through 1.11.12) lets remote attackers who c

CVE-2021-29443 MEDIUM
5.9 Apr 16

jose is an npm library providing a number of cryptographic operations. Rated medium severity (CVSS 5.9), this vulnerabil

CVE-2026-65630 MEDIUM
5.9 Oct 26

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

CVE-2026-65628 MEDIUM
5.9 Oct 26

The Erlang/Elixir JOSE library (potatosalad/erlang-jose) can be driven into an unbounded tail-recursive loop through JOS

CVE-2026-65625 MEDIUM
5.9 Oct 26

Authentication-tag forgery in the Erlang JOSE library (jose 1.2.0 through 1.11.12) lets an unauthenticated remote attack

CVE-2026-65626 MEDIUM
5.9 Oct 26

Bleichenbacher padding-oracle weakness in erlang-jose's pure-Erlang RSAES-PKCS1-v1_5 decryption (jose 1.3.0 through befo

CVE-2024-28176 MEDIUM
5.9 Mar 09

jose is JavaScript module for JSON Object Signing and Encryption, providing support for JSON Web Tokens (JWT), JSON Web

CVE-2026-65632 MEDIUM
5.1 Oct 26

ECDSA JWS signature malleability in erlang-jose (potatosalad:jose) 1.0.0 through 1.11.12 lets anyone holding a single le

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy