Severity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Network-reachable service exploitable by any authenticated user (PR:L) with no interaction; SQLi-to-eval yields full host compromise and credential theft crossing security scope (S:C, C/I/A:H).
Primary rating from Vendor (https://github.com/DIRACGrid/DIRAC).
CVSS VectorVendor: https://github.com/DIRACGrid/DIRAC
Lifecycle Timeline
3DescriptionCVE.org
Summary
The FileCatalog DatasetManager runs a query on the database and passes the result to eval. The SQL query contains an injection vulnerability which allows an authenticated user to control the parameter returned to the eval resulting in remote code execution.
Details
The FileCatalog checkDataset function passes its datasets argument directly to the backend DB handler: https://github.com/DIRACGrid/DIRAC/blob/f7e0a3ac153315030fb3520e8ca747f013758967/src/DIRAC/DataManagementSystem/Service/FileCatalogHandler.py#L591-L593
Which in turn passes it to the __checkDataset function: https://github.com/DIRACGrid/DIRAC/blob/f7e0a3ac153315030fb3520e8ca747f013758967/src/DIRAC/DataManagementSystem/DB/FileCatalogComponents/DatasetManager/DatasetManager.py#L390
This uses an f-string to create a query without escaping, resulting in an SQL injection: https://github.com/DIRACGrid/DIRAC/blob/f7e0a3ac153315030fb3520e8ca747f013758967/src/DIRAC/DataManagementSystem/DB/FileCatalogComponents/DatasetManager/DatasetManager.py#L400-L402
The result (which is user controllable due to the SQL injection) is passed into eval almost immediately on return, leading to code execution: https://github.com/DIRACGrid/DIRAC/blob/f7e0a3ac153315030fb3520e8ca747f013758967/src/DIRAC/DataManagementSystem/DB/FileCatalogComponents/DatasetManager/DatasetManager.py#L409
There are other functions in the same file which use a similar pattern and would likely be exploitable in a similar way.
Impact
This allows any authenticated user to run commands on the server, which allows a full compromise of the DIRAC system (they can read the local dirac.cfg, get database passwords and export all stored proxies and tokens). If local logging is used, they can also remove evidence of the exploit from the log.
Patched versions:
https://pypi.org/project/DIRAC/8.0.79/ https://pypi.org/project/DIRAC/9.0.22/ https://pypi.org/project/DIRAC/9.1.10/
AnalysisAI
Remote code execution in DIRAC (Distributed Infrastructure with Remote Agent Control) grid middleware lets any authenticated user run arbitrary commands on the server through the FileCatalog DatasetManager. A SQL injection (CWE-89) in the checkDataset code path lets the attacker control a value that is fed directly into a Python eval(), turning a data-layer flaw into full server compromise. Rated CVSS 9.9 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H); no public exploit identified at time of analysis, though the vendor advisory names the exact vulnerable source lines.
Technical ContextAI
DIRAC is Python-based grid computing middleware widely used by large scientific collaborations (notably the LHCb experiment at CERN and other high-energy physics/WLCG communities) to manage distributed workloads and data across sites. The flaw is in the DataManagementSystem FileCatalog: FileCatalogHandler.checkDataset passes the user-supplied datasets argument to DatasetManager.__checkDataset, which builds a SQL query using an unescaped Python f-string (CWE-89, SQL Injection). Because DIRAC then passes the query result straight into eval() (line 409 of DatasetManager.py in commit f7e0a3a), an attacker who controls the injected SQL result also controls the string that Python evaluates, chaining classic injection into arbitrary code execution. The advisory notes other functions in the same file follow the same result-into-eval pattern and are likely similarly exploitable.
RemediationAI
Upgrade to a fixed release matching your branch: Vendor-released patch: 8.0.79 (for the 6.x-8.0.x line, https://pypi.org/project/DIRAC/8.0.79/), 9.0.22 (for the 8.1.0a1-9.0.x line, https://pypi.org/project/DIRAC/9.0.22/), or 9.1.10 (for the 9.1.x line, https://pypi.org/project/DIRAC/9.1.10/). Full details are in advisory GHSA-m4m7-4cw8-62j6. If immediate patching is impossible, restrict who can reach and authenticate to the FileCatalog service and treat the dataset-checking endpoints as untrusted: limit the DatasetManager/FileCatalog service to trusted, audited users and network segments, and monitor its DB queries for injection patterns - note this reduces but does not eliminate risk since any authenticated user is in scope. Because credentials on the host may already be exposed, after patching rotate the FileCatalog database passwords and re-issue/revoke any proxies and tokens that could have been exported, and review logs (kept off the compromised host where possible, given the advisory's note that local logs can be tampered with).
Same weakness CWE-89 – SQL Injection
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-78896
GHSA-m4m7-4cw8-62j6