chore(deps): update dependency postgrex to v0.22.4 [security] #580
No reviewers
Labels
No labels
bug
duplicate
enhancement
help wanted
high priority
invalid
L
low priority
M
medium priority
needs refinement
optional
question
S
security
technical improvement
UX Improvement
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
local-it/mitgliederverwaltung!580
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "renovate/hex-postgrex-vulnerability"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This PR contains the following updates:
0.22.2→0.22.4SQL injection via unescaped dollar-quote in Postgrex.Notifications reconnect replay causes notification denial of service
CVE-2026-58225 / EEF-CVE-2026-58225 / GHSA-4mw9-4qgj-m97w
More information
Details
Summary
SQL Injection vulnerability in elixir-ecto postgrex allows an attacker who can influence a LISTEN channel name to inject SQL into the reconnect replay query, causing a denial of service of the notification connection.
Postgrex.Notifications sanitizes channel names with quote_channel/1, which doubles double quotes so the name is safe inside a double-quoted identifier. This protects the single-statement LISTEN and UNLISTEN paths. On every (re)connect, however, handle_connect/1 replays all registered channels at once by concatenating their LISTEN statements and wrapping them in a dollar-quoted anonymous code block (DO
BEGIN ... END). quote_channel/1 does not escape thedollar-quote delimiter that opens and closes this block.The listen/3 guards only reject null bytes and names longer than 63 bytes, so a channel name containing
passes validation unchanged. Once such a name is embedded, itsprematurely terminates the outer dollar-quoted string and PostgreSQL parses the remainder as additional top-level statements. Because handle_connect/1 runs on every (re)connect, the malformed replay query is rejected each time and the notification connection never re-establishes its subscriptions, silently dropping notifications for every channel sharing that connection.An application is affected when it passes untrusted input (for example a tenant or user identifier) as a channel name to Postgrex.Notifications.listen/3. The double-quote doubling prevents forming a fully valid injected statement, so arbitrary SQL execution is not possible, but the corrupted query reliably breaks the shared notification connection for all tenants, resulting in denial of service.
This issue affects postgrex: from 0.16.0 before 0.22.3.
Workarounds
Validate channel names before passing untrusted input to Postgrex.Notifications.listen/3. Reject any name that contains the dollar-quote delimiter (
), or restrict channel names to a safe character set such as alphanumeric characters and underscores.Severity
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:NReferences
This data is provided by OSV.
SQL injection via the :comment option in Postgrex.stream/4
CVE-2026-66838 / EEF-CVE-2026-66838 / GHSA-3gww-3f36-2388
More information
Details
Summary
Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') vulnerability in elixir-ecto postgrex allows SQL Injection via the
:commentoption ofPostgrex.stream/4. An attacker who can influence that value can close the comment delimiter with*/and extend the streamed statement with their own clauses, which execute under the connection's role. Ecto exposes the same option throughEcto.Repo.stream/2.Postgrex appends the comment by concatenating it into the statement text sent in the
Parsemessage, without escaping or rejecting*/. The option is validated bycomment_not_present!/1at every other execution point;stream/4never calls it. BecauseParseaccepts a single command, the injection is confined to the streamed statement and further statements cannot be chained.This issue affects postgrex: from 0.19.3 before 0.22.4.
Workarounds
Reject any
:commentvalue containing*/or a null byte before passing it toPostgrex.stream/4orEcto.Repo.stream/2. Alternatively, build comments only from trusted values.Configurations
The application must pass a
:commentderived from untrusted input toPostgrex.stream/4orEcto.Repo.stream/2. Applications that omit the option or pass only static values are unaffected.Severity
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:NReferences
This data is provided by OSV.
Release Notes
elixir-ecto/postgrex (postgrex)
v0.22.4Compare Source
Postgrex.stream/4(CVE-2026-66838)v0.22.3Compare Source
Postgrex.Notifications.listen/3(CVE-2026-58225)Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate.
28900be67222fec276e722fec276e769556becc369556becc355aafaf083View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.