Unbounded query cache growth from interpolated JSON paths and splice lists in Ecto
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- Low
- Attack requirements
- Present
- Impact type
- Denial of service
- Confidentiality · integrity · availability
- None · None · High
- Fix status
- Fixed
Attack profile from CVSS 4.0 · CNA. Fix status from CNA. Impact type from CWE-770.
Summary
Allocation of Resources Without Limits or Throttling vulnerability in elixir-ecto ecto allows an unauthenticated remote attacker to exhaust memory in the application and in the database server by sending requests with distinct JSON keys or list lengths where the application interpolates them into json_extract_path/2, field[^key] or splice/1. Ecto caches prepared queries per repository in an ETS table with no size limit and no eviction. Interpolated JSON path elements become part of the query expression instead of its parameters, and splice/1 expands into one placeholder per element, so every distinct key or list length creates a new cache entry. With ecto_sql each entry is also a new prepared statement on the database connection that runs it. None of this memory is released until the processes restart. This issue affects ecto: from 3.4.0 before 3.14.3.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- Yes
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| elixir-ecto | ecto | 3.4.0 to before 3.14.3 | 3.14.3 | Patch available | CNA |
- ecto Vendorelixir-ecto Affected 3.4.0 to before 3.14.3 Fixed in 3.14.3 Patch available CNA
CPE names CNA · 1
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:a:elixir-ecto:ecto:*:*:*:*:*:*:*:* | — | — | elixir-ecto |
- cpe:2.3:a:elixir-ecto:ecto:*:*:*:*:*:*:*:* Versions — — ·elixir-ecto
Remediation
- Fix · CNA ecto (elixir-ecto) Fixed in 3.14.3
Timeline
- 2026-11-04 Threatist record created from CVE-2026-118391
- 2026-11-05 CISA SSVC decision points changed
References
Patch 2
Advisory 1
Other 8
- EEF CNA record for CVE-2026-118391
- OSV record EEF-CVE-2026-118391
- Ecto.Query.API.json_extract_path/2
- Ecto.Query.API.splice/1
- Add splice to fragment (#4228), v3.11.0
- Should we allow disabling of Ecto cache on specific queries? (#4470)
- String interpolation will grow cached unboundedly (#1031)
- Introducing commit cb2f039 in elixir-ecto/ecto
More elixir-ecto vulnerabilities
- TI-2026-47460 SQL injection via the :comment option in Postgrex.stream/4 CVSS 4.0MEDIUM 5.9
- TI-2026-41928 SQL injection in elixir-ecto postgrex CVSS 4.0LOW 2.1
- TI-2026-25179 SQL injection via channel name in Postgrex.Notifications.listen/3 and unlisten/3 CVSS 4.0HIGH 7.5
Sources
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences