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
| Ecosystem | Package | Vulnerable | First fixed |
|---|---|---|---|
| PyPI | rucio | >= 1.30.0, < 35.8.5 | 35.8.5 |
| PyPI | rucio | >= 36.0.0, < 38.5.5 | 38.5.5 |
| PyPI | rucio | >= 39.0.0, < 39.4.2 | 39.4.2 |
| PyPI | rucio | >= 40.0.0, < 40.1.1 | 40.1.1 |
| Vendor | Product | Affected versions (per CVE record) |
|---|---|---|
| rucio | rucio | >= 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 by | CVSS | Score | Vector |
|---|---|---|---|
| GitHub_M | 4.0 | 9 Critical | 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 |
| GitHub | 4.0 | 9.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
- GitHub Advisory GHSA-6j7p-qjhg-9947 github.com
- CVE.org record CVE-2026-29090 cve.org
- NVD entry CVE-2026-29090 nvd.nist.gov
Other references from the CVE record and advisory
- github.com github.com
- github.com github.com
- github.com github.com
- pypi.org pypi.org