Security Digest · Vulnerability record

CVE-2026-29090: Rucio has SQL Injection in FilterEngine PostgreSQL Query Builder via DID Search API

Summary A SQL injection vulnerability exists in Rucio versions 1.30.0 and later before 35.8.5, 38.5.5, 39.4.2, and 40.1.1, in FilterEngine.createpostgresquery().

CVSS 9.0 Critical EPSS 0.5% · p45

Should you act?

Critical, preconditions apply

Severe if exploited, but exploitation needs conditions that may not apply to you. This signal is computed from CISA KEV, EPSS and CVSS data; it is not an editorial verdict.

  • No confirmed exploitation. It is not in CISA’s KEV catalog and CISA’s SSVC assessment records no known exploitation. That can change quickly after a public write-up; re-check if you are affected.
  • EPSS 0.5%, percentile 45: FIRST’s model estimates a 0.5% chance of exploitation activity in the next 30 days, higher than 45% of all scored CVEs (low). EPSS is a probability, not a verdict.
  • Needs an account (low (any account)). Exposure depends on who can log in.
  • Only applies if your dependency tree includes rucio (PyPI) >= 1.30.0, < 35.8.5, fixed in 35.8.5; rucio (PyPI) >= 36.0.0, < 38.5.5, fixed in 38.5.5; rucio (PyPI) >= 39.0.0, < 39.4.2, fixed in 39.4.2; rucio (PyPI) >= 40.0.0, < 40.1.1, fixed in 40.1.1. Check your lockfile, including transitive dependencies.

What it is

Summary A SQL injection vulnerability exists in Rucio versions 1.30.0 and later before 35.8.5, 38.5.5, 39.4.2, and 40.1.1, in FilterEngine.createpostgresquery(). This allows any authenticated Rucio user to execute arbitrary SQL against the PostgreSQL metadata database through the DID search endpoint (GET /dids/ /dids/search). When the postgresmeta metadata plugin is configured, attacker-controlled filter keys and values are interpolated directly into raw SQL strings via Python .format(), then passed to psycopg3's sql.SQL() which treats the string as trusted SQL syntax. Depending on the database privileges assigned to the service account, exploitation can expose sensitive tables, modify or delete metadata, access server-side files, or achieve code execution through PostgreSQL features such as COPY ... FROM PROGRAM. This issue affects deployments that explicitly use the postgresmeta metadata plugin. This vulnerability has been fixed in versions 35.8.5, 38.5.5, 39.4.2, and 40.1.1.

From the GitHub advisory

Summary

A SQL injection vulnerability in FilterEngine.createpostgresquery allows any authenticated Rucio user to execute arbitrary SQL against the configured PostgreSQL metadata database through the DID search endpoint (GET /dids/ /dids/search). When the external metadata plugin postgresmeta is configured, attacker-controlled filter keys and values are interpolated directly into raw SQL statements via Python str.format. This enables full database compromise including data exfiltration, data modification, and potential remote code execution via COPY ... FROM PROGRAM.

---

Details

The vulnerability exists in lib/rucio/core/didmetaplugins/filterengine.py within the createpostgresquery() method (lines 408-484). This method builds raw SQL strings via Python .format() across 6 distinct injection points:

Weakness type: CWE-89.

Product: rucio (PyPI) · Assigned by: GitHub_M · Published: 2026-05-06

Affected and fixed versions

EcosystemPackageVulnerableFirst fixed
PyPIrucio>= 1.30.0, < 35.8.535.8.5
PyPIrucio>= 36.0.0, < 38.5.538.5.5
PyPIrucio>= 39.0.0, < 39.4.239.4.2
PyPIrucio>= 40.0.0, < 40.1.140.1.1
VendorProductAffected versions (per CVE record)
ruciorucio>= 1.30.0, < 35.8.5, >= 35.9.0, < 38.5.5, >= 38.6.0, < 39.4.2, >= 40.0.0, < 40.1.1

Severity scores

Scored byCVSSScoreVector
GitHub_M4.09 CriticalCVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
GitHub4.09.0 CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
  • Attack vector: network (remotely reachable)
  • Attack complexity: low
  • Attack requirements: present (depends on deployment conditions)
  • Privileges required: low (any account)
  • User interaction: none

CVSS measures how bad a flaw is if exploited, not how likely exploitation is. Read it next to the exploitation data below.

Exploitation and urgency

  • CISA KEV: not listed (no confirmed in-the-wild exploitation known to CISA).
  • CISA SSVC assessment: exploitation none, automatable no, technical impact total.
  • FIRST EPSS (model of 2026-10-21): 0.54% probability of exploitation activity in the next 30 days; percentile 45.

Timeline

  • — CVE record last updated
  • — CVE record published by GitHub_M
  • — GitHub-reviewed advisory GHSA-6j7p-qjhg-9947 published (critical)

Sources and references

Original sources first. Version and fix details should always be confirmed against the vendor or project advisory.

Vulnerability records

  1. GitHub Advisory GHSA-6j7p-qjhg-9947 github.com
  2. CVE.org record CVE-2026-29090 cve.org
  3. NVD entry CVE-2026-29090 nvd.nist.gov

Other references from the CVE record and advisory

  1. github.com github.com
  2. github.com github.com
  3. github.com github.com
  4. pypi.org pypi.org

Critical PyPI advisories · Today’s Security Digest