Description
Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') vulnerability in elixir-ecto postgrex ('Elixir.Postgrex.Notifications' module) allows SQL Injection.

The channel argument passed to 'Elixir.Postgrex.Notifications':listen/3 and 'Elixir.Postgrex.Notifications':unlisten/3 is interpolated directly into LISTEN "..." / UNLISTEN "..." SQL statements without escaping the " character. An attacker who can influence the channel name can inject a " to break out of the quoted identifier and append arbitrary SQL. Because the notifications connection uses the PostgreSQL simple query protocol, multi-statement payloads are accepted, allowing DDL and DML commands to be chained (e.g. ; DROP TABLE ...; --). The same unsanitized interpolation also occurs in handle_connect/1 when replaying LISTEN commands after a reconnect.

This vulnerability is associated with program file lib/postgrex/notifications.ex and program routines 'Elixir.Postgrex.Notifications':listen/3, 'Elixir.Postgrex.Notifications':unlisten/3, 'Elixir.Postgrex.Notifications':handle_connect/1.

This issue affects postgrex: from 0.16.0 before 0.22.2, from pkg:github/elixir-ecto/postgrex@266b530faf9bde094e31e0e4ab851f933fadc0f5 before 0.22.2.
Published: 2026-05-12
Score: 7.5 High
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability lies in the Postgres notifications module of the Elixir Ecto Postgrex package, where channel names supplied to listen/3 and unlisten/3 are directly interpolated into LISTEN/UNLISTEN SQL statements without escaping the quotation mark. This oversight is a classic example of CWE-89, allowing an attacker who can choose a channel name to inject a double quote and additional SQL. Because the underlying PostgreSQL connection accepts the simple query protocol, the attacker can terminate the quoted identifier, inject arbitrary statements, and chain them with a semicolon, enabling DDL or DML commands to be executed. Successful exploitation would compromise database integrity, potentially exfiltrate or modify data, and could also serve as a vector for further system compromise.

Affected Systems

Any deployment of Elixir Ecto Postgrex prior to version 0.22.2 is vulnerable. This includes the 0.16.0‑0.22.2 range mentioned in the advisory, regardless of GitHub commit tag. Systems using these versions that allow untrusted code or user input to dictate notification channel names are affected. The vulnerability exists in the lib/postgrex/notifications.ex source file and is triggered through the Elixir.Postgrex.Notifications module.

Risk and Exploitability

The advisory assigns a CVSS score of 7.5, indicating high severity, while an EPSS value is not provided and the issue is not listed in the CISA KEV database. The attack is feasible in environments where the application exposes channel names to external actors; the simple query protocol permits multiple statements, making the risk tangible. Exploitation requires no special hardware or advanced techniques beyond the ability to send constructed channel names, therefore a determined attacker with application access could immediately craft a payload such as channel="foo\"; DROP TABLE users;--" and trigger destructive actions on the database.

Generated by OpenCVE AI on May 12, 2026 at 16:23 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the Elixir Ecto Postgrex dependency to version 0.22.2 or later to receive the security fix.
  • Validate or sanitize all channel names before passing them to listen/3 or unlisten/3, ensuring that quotation marks or other special characters are removed or escaped.
  • If an upgrade is not immediately possible, restrict channel names to a safe whitelist of characters (e.g., alphanumeric and underscore) and enforce this rule within the application logic.

Generated by OpenCVE AI on May 12, 2026 at 16:23 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Tue, 12 May 2026 20:15:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Tue, 12 May 2026 15:00:00 +0000

Type Values Removed Values Added
Description Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') vulnerability in elixir-ecto postgrex ('Elixir.Postgrex.Notifications' module) allows SQL Injection. The channel argument passed to 'Elixir.Postgrex.Notifications':listen/3 and 'Elixir.Postgrex.Notifications':unlisten/3 is interpolated directly into LISTEN "..." / UNLISTEN "..." SQL statements without escaping the " character. An attacker who can influence the channel name can inject a " to break out of the quoted identifier and append arbitrary SQL. Because the notifications connection uses the PostgreSQL simple query protocol, multi-statement payloads are accepted, allowing DDL and DML commands to be chained (e.g. ; DROP TABLE ...; --). The same unsanitized interpolation also occurs in handle_connect/1 when replaying LISTEN commands after a reconnect. This vulnerability is associated with program file lib/postgrex/notifications.ex and program routines 'Elixir.Postgrex.Notifications':listen/3, 'Elixir.Postgrex.Notifications':unlisten/3, 'Elixir.Postgrex.Notifications':handle_connect/1. This issue affects postgrex: from 0.16.0 before 0.22.2, from pkg:github/elixir-ecto/postgrex@266b530faf9bde094e31e0e4ab851f933fadc0f5 before 0.22.2.
Title SQL injection via channel name in Postgrex.Notifications.listen/3 and unlisten/3
First Time appeared Elixir-ecto
Elixir-ecto postgrex
Weaknesses CWE-89
CPEs cpe:2.3:a:elixir-ecto:postgrex:*:*:*:*:*:*:*:*
Vendors & Products Elixir-ecto
Elixir-ecto postgrex
References
Metrics cvssV4_0

{'score': 7.5, 'vector': 'CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N'}


Subscriptions

Elixir-ecto Postgrex
cve-icon MITRE

Status: PUBLISHED

Assigner: EEF

Published:

Updated: 2026-05-13T04:30:33.402Z

Reserved: 2026-03-13T09:12:14.475Z

Link: CVE-2026-32687

cve-icon Vulnrichment

Updated: 2026-05-12T19:44:30.638Z

cve-icon NVD

Status : Received

Published: 2026-05-12T15:16:12.810

Modified: 2026-05-12T15:16:12.810

Link: CVE-2026-32687

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-05-12T16:30:19Z

Weaknesses