Skip to main content

erlang-jose CVE-2026-65627

| EUVDEUVD-2026-110306 MEDIUM
Improper Handling of Highly Compressed Data (Data Amplification) (CWE-409)
2026-10-26 EEF
6.9
CVSS 4.0 · Vendor: EEF
View

Attack ChainAIDerived

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

  1. Access
    Obtain recipient public key
  2. Delivery
    Craft small zip:DEF JWE over compressed zeros
  3. Exploit
    Submit token to JWE decrypt endpoint
  4. Execution
    Unbounded zlib:inflate expands payload in one call
  5. Impact
    Exhaust node memory and crash the BEAM

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V2 - Validation and Business Logic Compression ratio limits
Exploitation Conditions

The affected application must decrypt attacker-supplied JWE tokens using jose's JOSE.JWE.block_decrypt/2 (jose_jwe:block_decrypt/2) and must honor the optional zip:"DEF" DEFLATE header - which jose does automatically during decryption, before the recipient can inspect or reject the payload. With asymmetric key management (RSA-OAEP, ECDH-ES) the attacker needs only the recipient's public key and no authentication or secret material. Affected: jose 1.0.0 up to (not including) 1.11.13. LIMITING FACTORS: exploitation requires an exposed code path that decrypts JWEs received from untrusted senders; the attacker must be able to obtain or know the recipient's public key; applications that never accept compressed (zip-header) JWEs, or that reject them before decrypting, are not exposed. Per vendor, 1.11.13 caps inflation at zip_size_maximum (1 MiB default, tunable via the jose zip_size_maximum application env key or jose:zip_size_maximum/1); upgrading is the complete fix, with pre-decrypt rejection of any token whose protected header contains a zip member as the only stated workaround.

Impact

This is a remotely triggerable, availability-only denial-of-service (decompression bomb) in erlang-jose. The signals are mixed and point to a real but moderate priority. EPSS is low (0.25%, 16th percentile) and the CVE is NOT in CISA KEV, so there is no evidence of active or widespread exploitation - consistent with a niche-ecosystem library flaw rather than a mass-exploited internet bug. Offsetting that, a full working PoC is included in the GHSA advisory with a VERIFIED log showing 771x amplification (a ~348 KB token inflating to 256 MiB, +459.9 MB measured), so exploitation is demonstrably practical, not theoretical, and requires only the recipient's PUBLIC key with the common asymmetric algorithms (RSA-OAEP, ECDH-ES). The vuln.today decision label is 'this_month' (not act_now/emergency). A key signal conflict must be flagged: the official CVSS 4.0 vector uses AV:L (local), which depresses the 6.9 score, yet the description and PoC clearly show a remotely delivered JWE token crossing a network trust boundary via JOSE.JWE.block_decrypt/2 - a network-vector assessment would score higher (see assessed vectors). Impact is strictly availability (VC:N/VI:N/VA:H / C:N/I:N/A:H): no confidentiality or integrity loss, and the BEAM can be restarted, but a single small token can OOM-kill the node and take down the service for all users, so blast radius per successful request is high. Net: a genuine priority for any Elixir/Erlang service that decrypts JWE tokens from untrusted senders, but not an emergency given low EPSS, no KEV, and DoS-only impact.

Exploit ScenarioDerived

An outside attacker who holds only the recipient's public key (as is normal for RSA-OAEP or ECDH-ES) crafts a few-kilobyte JWE carrying the zip:"DEF" header over a highly compressible plaintext such as a long run of zero bytes. When the victim service decrypts the token with JOSE.JWE.block_decrypt/2, jose automatically DEFLATE-inflates the payload via unbounded zlib:inflate/2, expanding a tiny token into hundreds of MB or GB and OOM-killing the BEAM. A working, verified PoC is published in the GHSA advisory (348 KB token → 256 MiB, ~771x amplification), so no special attacker skill or secret material is required.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 28, 2026

Memory-exhaustion denial of service in the erlang-jose JOSE/JWE library for Erlang and Elixir (versions 1.0.0 through 1.11.12) lets a remote, unauthenticated attacker inflate a few-kilobyte JWE token into hundreds of megabytes or gigabytes on the decrypting node and crash the BEAM. When a token carries the optional zip: "DEF" header, jose_jwe_zip:uncompress/2 feeds the entire attacker-controlled plaintext to zlib:inflate/2 with no output-size or inflation-ratio bound, and this happens automatically inside jose_jwe:block_decrypt/2 (JOSE.JWE.block_decrypt/2) before the recipient can inspect or reject the payload; with RSA-OAEP or ECDH-ES key management the attacker only needs the recipient's public key and no secret material. Exposure is limited to applications that actually decrypt JWEs received from untrusted senders and do not reject compressed headers first; EPSS is 0.25% (16th percentile), no confirmed active exploitation (CISA KEV) is recorded, and a proof-of-concept script with supporting logs is published in the upstream advisory GHSA-wfpv-qxp8-x5gm.

RemediationAI

Vendor-released patch: upgrade erlang-jose to 1.11.13 (fix commit 857eb8e7f2d33e2c9ca2189e77226561cacaf2ad, advisory https://github.com/potatosalad/erlang-jose/security/advisories/GHSA-wfpv-qxp8-x5gm), which inflates JWE plaintext incrementally and raises an error as soon as the decompressed size would exceed zip_size_maximum (default 1048576 bytes / 1 MiB) instead of materializing the full output, and which also returns authentication failures on compressed JWEs without invoking decompression at all; per the vendor, upgrading is the complete fix, and applications that legitimately need larger compressed plaintexts can raise the ceiling via the jose application environment key zip_size_maximum or the accessor jose:zip_size_maximum/1 (:jose.zip_size_maximum/1 from Elixir). If upgrading is not immediately possible, the only workaround the vendor states is to reject compressed JWEs before decrypting: base64url-decode the protected segment returned by jose_jwe:expand/1 (JOSE.JWE.expand/1) and refuse any token whose header contains a zip member - the trade-off is that applications which must interoperate with peers that legitimately emit zip: "DEF" tokens will reject those payloads, and the check must be applied on every decryption path, including code that calls jose_jwe:block_decrypt/2 directly rather than through the Elixir wrapper.

Affected VersionsENISA

jose a7746ecd4950f85a393136e449a91dac62b5c429 <857eb8e7f2d33e2c9ca2189e77226561cacaf2ad
jose 1.0.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

JSON Web Encryption (RFC 7516) defines an optional "zip" protected-header member that DEFLATE-compresses the plaintext before encryption; erlang-jose implements the "DEF" codec in src/jwe/jose_jwe_zip.erl using raw DEFLATE (zlib:inflateInit/2 with window bits -15, i.e. RFC 1951 without the zlib wrapper). The root cause is CWE-409 (improper handling of highly compressed data / data amplification, also tracked as CWE-400 uncontrolled resource consumption): uncompress/2 calls zlib:inflate/2 on the whole stream, which returns the complete inflated output in one allocation, so a ~1000:1 ratio on highly repetitive input turns a few kilobytes into hundreds of megabytes. The from_map/1 codec selection only chooses the decompression algorithm and does nothing to bound output, and decompression is invoked as part of normal decryption, so the victim never gets a decision point before the allocation. Because the common asymmetric key-management modes (RSA-OAEP, ECDH-ES) let anyone encrypt to the recipient's public key, the attacker needs no authentication or shared secret; the CVSS v3.1 assessment (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) reflects a network-delivered, unauthenticated, availability-only impact, whereas the CNA record carries a CVSS v4.0 score of 6.9 whose vector uses AV:L. The upstream PoC demonstrates the mechanism end-to-end: a 348,334-byte RSA-OAEP/A128GCM token with zip: "DEF" decrypts to 268,435,456 bytes of zeros (about 771x amplification) with a measured memory delta of roughly 459.88 MB. The 1.11.13 fix replaces the single-shot inflate with incremental zlib:safeInflate/2 and aborts once zip_size_maximum is exceeded.

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 6.9 MEDIUM
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 7.5 HIGH

Token is delivered remotely and decrypted automatically, needing only the recipient's public key, so AV:N/AC:L/PR:N/UI:N; impact is availability-only (A:H), contradicting the input's AV:L.

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

Primary rating from Vendor (EEF).

CVSS VectorVendor: EEF

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

DescriptionCVE.org

Improper Handling of Highly Compressed Data (Data Amplification) vulnerability in potatosalad jose (erlang-jose) allows a remote attacker to exhaust a node's memory with a small crafted JWE token.

The jose_jwe_zip:uncompress/2 function in src/jwe/jose_jwe_zip.erl decompresses the DEFLATE-compressed plaintext of a JWE that carries the optional zip: DEF header by calling zlib:inflate/2 on the entire attacker-controlled stream, with no bound on the output size or the inflation ratio. Raw DEFLATE reaches ratios around 1000:1 on highly repetitive input, so a few-kilobyte token inflates to hundreds of megabytes or gigabytes in a single call.

Decompression runs automatically during decryption through jose_jwe:block_decrypt/2 (JOSE.JWE.block_decrypt/2 in Elixir), before the recipient can inspect or reject the payload. With the common asymmetric key-management algorithms (RSA-OAEP, ECDH-ES) an attacker needs only the recipient's public key to craft such a token, so no authentication or secret material is required. A single small token can exhaust the node's memory and crash the BEAM, denying service to all users.

This issue affects jose: from 1.0.0 before 1.11.13.

Threat Intelligence Overview

EPSS Score
0.2%
Top 84% exploitable
Prevalence
Medium
de facto JOSE/JWE library for Erlang/Elixir, mid-size 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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Medium

Priority Score

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

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

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-65629 HIGH
7.4 Oct 26

Password-protected private-key exports produced by the Erlang/Elixir `jose` library between 1.10.0 and 1.11.12 are encry

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