VDB
Sign up

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 postgrex

Details

## 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

Hex/postgrex
Introduced in: 0.19.3Fixed in: 0.22.4
Fixmix deps.update postgrex

References