Skip to main content

DIRAC CVE-2026-61667

| EUVDEUVD-2026-78896 CRITICAL
SQL Injection (CWE-89)
2026-07-13 https://github.com/DIRACGrid/DIRAC GHSA-m4m7-4cw8-62j6 PYSEC-2026-3463
9.9
CVSS 3.1 · Vendor: https://github.com/DIRACGrid/DIRAC
Share

Severity by source

Vendor (https://github.com/DIRACGrid/DIRAC) PRIMARY
9.9 CRITICAL
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
vuln.today AI
9.9 CRITICAL

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).

3.1 AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H

Primary rating from Vendor (https://github.com/DIRACGrid/DIRAC).

CVSS VectorVendor: https://github.com/DIRACGrid/DIRAC

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Changed
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

3
Source Code Evidence Fetched
Jul 13, 2026 - 19:25 vuln.today
Analysis Generated
Jul 13, 2026 - 19:25 vuln.today
CVE Published
Jul 13, 2026 - 18:37 github-advisory
CRITICAL 9.9

DescriptionCVE.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).

Share

CVE-2026-61667 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy