EEF-CVE-2026-66838
SQL injection via the :comment option in Postgrex.stream/4
Quick fix
EEF-CVE-2026-66838 — postgrex: upgrade to the fixed version with the command below.
mix deps.update postgrexDetails
## Summary
Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') vulnerability in elixir-ecto postgrex allows SQL Injection via the `:comment` option of `Postgrex.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 through `Ecto.Repo.stream/2`.
Postgrex appends the comment by concatenating it into the statement text sent in the `Parse` message, without escaping or rejecting `*/`. The option is validated by `comment_not_present!/1` at every other execution point; `stream/4` never calls it. Because `Parse` accepts 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 `:comment` value containing `*/` or a null byte before passing it to `Postgrex.stream/4` or `Ecto.Repo.stream/2`. Alternatively, build comments only from trusted values.
## Configurations
The application must pass a `:comment` derived from untrusted input to `Postgrex.stream/4` or `Ecto.Repo.stream/2`. Applications that omit the option or pass only static values are unaffected.
Are you affected?
Enter the version of the package you're using.
Affected packages
References
- https://github.com/elixir-ecto/ecto/security/advisories/GHSA-3gww-3f36-2388[ADVISORY]
- https://cna.erlef.org/cves/CVE-2026-66838.html[WEB]
- https://github.com/elixir-ecto/postgrex/commit/e1ecba618ddea4cee2556bd6ad9b6285e05f9d3c[FIX]
- https://github.com/elixir-ecto/postgrex/commit/4011be852c99dc61ddb98cb01aa41e8775a0e3dd[FIX]
- https://hex.pm/packages/postgrex[PACKAGE]