A SQL injection in DIRAC's FileCatalog DatasetManager lets any authenticated user smuggle attacker-controlled SQL into an unescaped f-string query, and the query result is then passed straight to Python's eval(), turning a routine dataset lookup into remote code execution with a 9.9 CVSS score. DIRAC is grid/distributed-computing middleware used to manage large scientific and research dataset catalogs; because only low privileges are required and no user interaction is needed, a single low-trust account (a researcher, a compromised worker-node credential) is enough to fully compromise the server, read dirac.cfg, harvest database passwords, and export every stored proxy and token in the deployment, enabling lateral movement across the whole DIRAC installation. It is not in CISA KEV and no public exploit or Nuclei template exists yet, but the flaw is trivially exploitable — classic string-interpolated SQL feeding eval — and the maintainers explicitly note other functions in the same file share the pattern, so this patch cycle may not close every variant. Downstream exposure is meaningful (2,841 dependents, OpenSSF Scorecard only 6.1/10), so any organization running DIRAC to catalog AI/ML training data should treat this as a same-day patch: upgrade to 8.0.79, 9.0.22, or 9.1.10, and in the interim restrict and monitor calls to checkDataset for anomalous query parameters.
What is the risk?
This is a critical (CVSS 9.9), pre-authentication-adjacent vulnerability: it requires only low privileges (any authenticated DIRAC user) and no user interaction, with scope change and full confidentiality/integrity/availability impact. Exploitability is high from a technical standpoint — the SQL injection is a straightforward unescaped f-string, and the eval() sink is reached almost immediately after the query returns, so building a working exploit requires no AI/ML-specific expertise, just standard SQLi-to-code-execution chaining. There is no evidence of active exploitation (not in CISA KEV, no EPSS data, no public PoC or Nuclei template), which lowers near-term likelihood, but the low bar to exploit and the fact that DIRAC deployments are often shared multi-tenant research/grid environments where many users already hold 'low privilege' accounts significantly raises real-world risk. The vendor's own disclosure flags that the vulnerable pattern (f-string SQL feeding eval) recurs elsewhere in the same file, meaning the current patch should be treated as a first fix, not a guarantee that the underlying pattern is fully eradicated.
How does the attack unfold?
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| HF Datasets | pip | >= 6, < 8.0.79 | 8.0.79 |
Do you use HF Datasets? You're affected.
How severe is it?
What is the attack surface?
What should I do?
1 stepPatch immediately to DIRAC 8.0.79, 9.0.22, or 9.1.10 (all release lines are fixed) — this is the only complete remediation since the injection is in core query-construction logic. Where immediate upgrade isn't possible, restrict which accounts can invoke checkDataset/DatasetManager operations and monitor FileCatalogHandler service logs for dataset query parameters containing SQL metacharacters or anomalous eval-triggering payloads. Rotate database credentials and any proxies/tokens stored in dirac.cfg on hosts that ran a pre-patch version, since exposure cannot be ruled out retroactively. Because the maintainers note the same f-string-to-SQL pattern likely exists elsewhere in DatasetManager.py, audit or code-review that module for other unescaped query construction even after patching, and add SAST/CI rules flagging f-string-built SQL queries and eval() usage on any value derived from a database read.
What does CISA's SSVC say?
Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-61667?
A SQL injection in DIRAC's FileCatalog DatasetManager lets any authenticated user smuggle attacker-controlled SQL into an unescaped f-string query, and the query result is then passed straight to Python's eval(), turning a routine dataset lookup into remote code execution with a 9.9 CVSS score. DIRAC is grid/distributed-computing middleware used to manage large scientific and research dataset catalogs; because only low privileges are required and no user interaction is needed, a single low-trust account (a researcher, a compromised worker-node credential) is enough to fully compromise the server, read dirac.cfg, harvest database passwords, and export every stored proxy and token in the deployment, enabling lateral movement across the whole DIRAC installation. It is not in CISA KEV and no public exploit or Nuclei template exists yet, but the flaw is trivially exploitable — classic string-interpolated SQL feeding eval — and the maintainers explicitly note other functions in the same file share the pattern, so this patch cycle may not close every variant. Downstream exposure is meaningful (2,841 dependents, OpenSSF Scorecard only 6.1/10), so any organization running DIRAC to catalog AI/ML training data should treat this as a same-day patch: upgrade to 8.0.79, 9.0.22, or 9.1.10, and in the interim restrict and monitor calls to checkDataset for anomalous query parameters.
Is CVE-2026-61667 actively exploited?
No confirmed active exploitation of CVE-2026-61667 has been reported, but organizations should still patch proactively.
How to fix CVE-2026-61667?
Patch immediately to DIRAC 8.0.79, 9.0.22, or 9.1.10 (all release lines are fixed) — this is the only complete remediation since the injection is in core query-construction logic. Where immediate upgrade isn't possible, restrict which accounts can invoke checkDataset/DatasetManager operations and monitor FileCatalogHandler service logs for dataset query parameters containing SQL metacharacters or anomalous eval-triggering payloads. Rotate database credentials and any proxies/tokens stored in dirac.cfg on hosts that ran a pre-patch version, since exposure cannot be ruled out retroactively. Because the maintainers note the same f-string-to-SQL pattern likely exists elsewhere in DatasetManager.py, audit or code-review that module for other unescaped query construction even after patching, and add SAST/CI rules flagging f-string-built SQL queries and eval() usage on any value derived from a database read.
What systems are affected by CVE-2026-61667?
This vulnerability affects the following AI/ML architecture patterns: training pipelines, data pipelines, research/grid computing infrastructure, dataset catalog services.
What is the CVSS score for CVE-2026-61667?
CVE-2026-61667 has a CVSS v3.1 base score of 9.9 (CRITICAL). The EPSS exploitation probability is 1.21%.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0010.002DataAML.T0025Exfiltration via Cyber MeansAML.T0050Command and Scripting InterpreterAML.T0055Unsecured CredentialsCompliance Controls Affected
What are the technical details?
Original Advisory
DIRAC is an interware, meaning a software framework for distributed computing. Prior to versions 8.0.79, 9.0.22, and 9.1.10, DataManagementSystem/Service/FileCatalogHandler.py checkDataset forwards an authenticated caller-controlled datasets value to DatasetManager.py __checkDataset, where datasetName is interpolated into an FC_MetaDatasets SQL query without parameterization. The injected query can control the returned MetaQuery value, which is passed to Python eval and permits command execution as the account running the DIRAC services. Successful exploitation can expose dirac.cfg, database passwords, stored proxies, and tokens, fully compromise the DIRAC system, and allow alteration of local log evidence. This issue is fixed in versions 8.0.79, 9.0.22, and 9.1.10.
Exploitation Scenario
An adversary who holds any valid, low-privilege DIRAC account — for example a researcher's credential obtained through phishing, or a compromised worker-node identity in a shared grid environment — calls the FileCatalog checkDataset operation with a crafted dataset name/argument. The unescaped f-string query lets the attacker inject SQL that manipulates the value returned from the database; that manipulated value is passed almost immediately to Python's eval(), executing attacker-supplied code on the FileCatalog server. From there the attacker reads dirac.cfg to obtain database credentials, dumps and exfiltrates all proxies and access tokens DIRAC has stored for its user base, and pivots using those credentials to other services in the grid/data-management deployment — while optionally scrubbing local logs to remove evidence, achieving a stealthy full compromise of the platform that manages the organization's dataset catalog.
Weaknesses (CWE)
CWE-89Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')PrimaryCWE-95Improper Neutralization of Directives in Dynamically Evaluated Code ('Eval Injection')PrimaryCWE-89Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')CWE-89Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')CWE-95Improper Neutralization of Directives in Dynamically Evaluated Code ('Eval Injection')CWE-95Improper Neutralization of Directives in Dynamically Evaluated Code ('Eval Injection')CWE-89 — Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection'): The product constructs all or part of an SQL command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended SQL command when it is sent to a downstream component. Without sufficient removal or quoting of SQL syntax in user-controllable inputs, the generated SQL query can cause those inputs to be interpreted as SQL instead of ordinary user data.
- [Architecture and Design] Use a vetted library or framework that does not allow this weakness to occur or provides constructs that make this weakness easier to avoid [REF-1482]. For example, consider using persistence layers such as Hibernate or Enterprise Java Beans, which can provide significant protection against SQL injection if used properly.
- [Architecture and Design] If available, use structured mechanisms that automatically enforce the separation between data and code. These mechanisms may be able to provide the relevant quoting, encoding, and validation automatically, instead of relying on the developer to provide this capability at every point where output is generated. Process SQL queries using prepared statements, parameterized queries, or stored procedures. These features should accept parameters or variables and support strong typing. Do not dynamically construct and execute query strings within these features using "exec" or similar functionality, since this may re-introduce the possibility of SQL injection. [REF-867]
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:HReferences
- github.com/DIRACGrid/DIRAC/commit/106f6efb40eb7318473fc09fc48083f1f864460ax_refsource_MISC
- github.com/DIRACGrid/DIRAC/commit/55ecbd729242ddbe06251b57895873cc468f5a1ax_refsource_MISC
- github.com/DIRACGrid/DIRAC/commit/5a5def88d65a18c77af9f2900ffb5866d6489d62x_refsource_MISC
- github.com/DIRACGrid/DIRAC/commit/66cfc8bf1dc13a6d38bf0c5654d5b551d76dce9bx_refsource_MISC
- github.com/DIRACGrid/DIRAC/commit/6f6fe65f27b6913916ef77a77a09918b94029c0ax_refsource_MISC
- github.com/DIRACGrid/DIRAC/commit/fabf08a4a403fdd92d3445771528fa54b3ee902fx_refsource_MISC
- github.com/DIRACGrid/DIRAC/releases/tag/v8.0.79x_refsource_MISC
- github.com/DIRACGrid/DIRAC/releases/tag/v9.0.22x_refsource_MISC
- github.com/DIRACGrid/DIRAC/releases/tag/v9.1.10x_refsource_MISC
- github.com/DIRACGrid/DIRAC/security/advisories/GHSA-m4m7-4cw8-62j6
- github.com/advisories/GHSA-m4m7-4cw8-62j6
- pypi.org/project/DIRAC/8.0.79
- pypi.org/project/DIRAC/9.0.22
- pypi.org/project/DIRAC/9.1.10
Timeline
Related Vulnerabilities
CVE-2026-500279.8mcp-memory-service: auth bypass on document API
Same package: datasetsCVE-2026-718519.0crypto-js: weak PRNG enables wallet key recovery
Same package: datasetsCVE-2026-578458.8HF Datasets: pickle deserialization RCE via pandas builder
Same package: datasetsCVE-2026-551787.5GeoLens: IDOR leaks private datasets via AI metadata API
Same package: datasetsCVE-2026-650106.6Datasets: symlink following enables arbitrary file write
Same package: datasets