{
  "affected": [
    {
      "ranges": [
        {
          "database_specific": {
            "source": "REFERENCES"
          },
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "4011be852c99dc61ddb98cb01aa41e8775a0e3dd"
            },
            {
              "fixed": "e1ecba618ddea4cee2556bd6ad9b6285e05f9d3c"
            }
          ],
          "repo": "https://github.com/elixir-ecto/postgrex",
          "type": "GIT"
        }
      ]
    }
  ],
  "aliases": [
    "GHSA-3gww-3f36-2388"
  ],
  "database_specific": {
    "cna_assigner": "EEF",
    "cwe_ids": [
      "CWE-89"
    ],
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/66xxx/CVE-2026-66838.json",
    "unresolved_ranges": [
      {
        "extracted_events": [
          {
            "introduced": "0.19.3"
          },
          {
            "fixed": "0.22.4"
          },
          {
            "introduced": "4971a2722fa72f8e1b54a2c403cad4c43916e36d"
          },
          {
            "fixed": "*"
          }
        ],
        "source": "AFFECTED_FIELD"
      },
      {
        "extracted_events": [
          {
            "introduced": "0.19.3"
          },
          {
            "fixed": "0.22.4"
          }
        ],
        "source": "CPE_FIELD"
      },
      {
        "extracted_events": [
          {
            "fixed": "Ecto.Repo.stream"
          },
          {
            "introduced": "0.19.3"
          },
          {
            "fixed": "0.22.4"
          }
        ],
        "source": "DESCRIPTION"
      }
    ]
  },
  "details": "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.\n\nPostgrex 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.\n\nThis issue affects postgrex: from 0.19.3 before 0.22.4.",
  "id": "CVE-2026-66838",
  "modified": "2026-08-09T03:30:21.957195785Z",
  "published": "2026-08-07T12:20:02.376Z",
  "references": [
    {
      "type": "WEB",
      "url": "https://cna.erlef.org/cves/CVE-2026-66838.html"
    },
    {
      "type": "WEB",
      "url": "https://github.com"
    },
    {
      "type": "WEB",
      "url": "https://osv.dev/vulnerability/EEF-CVE-2026-66838"
    },
    {
      "type": "WEB",
      "url": "https://repo.hex.pm"
    },
    {
      "type": "ADVISORY",
      "url": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/66xxx/CVE-2026-66838.json"
    },
    {
      "type": "ADVISORY",
      "url": "https://github.com/elixir-ecto/ecto/security/advisories/GHSA-3gww-3f36-2388"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-66838"
    },
    {
      "type": "FIX",
      "url": "https://github.com/elixir-ecto/postgrex/commit/4011be852c99dc61ddb98cb01aa41e8775a0e3dd"
    },
    {
      "type": "FIX",
      "url": "https://github.com/elixir-ecto/postgrex/commit/e1ecba618ddea4cee2556bd6ad9b6285e05f9d3c"
    },
    {
      "type": "PACKAGE",
      "url": "https://github.com/elixir-ecto/postgrex"
    }
  ],
  "schema_version": "1.8.0",
  "severity": [
    {
      "score": "CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N",
      "type": "CVSS_V4"
    }
  ],
  "summary": "SQL injection via the :comment option in Postgrex.stream/4"
}