PT-2026-136970

CVE-2026-118391

·

Published

2026-11-04

·

Updated

2026-11-04

Description by

CVSS 4.0
8.9
High
MetricsAV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:H
Name of the Vulnerable Software and Affected Versions ecto versions 3.4.0 through 3.14.2
Description An unauthenticated remote attacker can cause memory exhaustion in both the application and the database server. This occurs when the application interpolates user-supplied data into json extract path/2, field[^key], or splice/1. Ecto caches prepared queries in an ETS table without size limits or eviction policies. Because interpolated JSON path elements and splice/1 expansions become part of the query expression rather than parameters, every unique key or list length creates a new cache entry. When using ecto sql, each entry also generates a new prepared statement on the database connection. This memory is not released until the processes restart.
Recommendations Upgrade ecto to version 3.14.3 or later. As a temporary workaround, pass the path as a query parameter to prevent it from becoming part of the cache key (e.g., using fragment("? #> ?", i.meta, type(^path, {:array, :string})) for PostgreSQL). As a temporary workaround, disable the cache for affected queries by setting query cache: false in the Repo.all() call. As a temporary workaround, restrict keys and list lengths to a predefined known set before constructing the query.
Exploitability
Fix
Impacts
Researchers
Vendors
Affected products
Related identifiers
GHSA-CXJX-VMM2-QR8R
Found an issue in the description? Have something to add? Feel free to write us 👾