
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2026-45579 is a critical remote code execution (RCE) vulnerability in the DIRAC (Distributed Infrastructure with Remote Agent Control) framework's RequestManager component, caused by the use of eval() on untrusted user input. Any authenticated user can exploit this flaw to execute arbitrary commands on the DIRAC server as the system user running DIRAC services. Affected versions include DIRAC >= 6 and < 8.0.79, >= 8.1.0a1 and < 9.0.22, and >= 9.1.0 and < 9.1.10 (pip package). The vulnerability was published on July 13, 2026, with patched versions released the same day. It carries a CVSS v3.1 base score of 9.9 (Critical) (GitHub Advisory, DIRAC Advisory).
The root cause is CWE-95 (Improper Neutralization of Directives in Dynamically Evaluated Code — 'Eval Injection'). The vulnerable export_getRequestCountersWeb function in ReqManagerHandler.py (line 270) accepts a groupingAttribute parameter from any authenticated user and passes it directly to the database layer without validation. In RequestDB.py (lines 766–776), if the groupingAttribute is not a recognized value (e.g., "Type" or "Status"), the code prepends Request. to it and passes the resulting string into a Python eval() call within a SQLAlchemy query. An attacker can supply a Python dunder attribute string (e.g., __class__.__init__.__globals__) applicable to the Request object to traverse the object hierarchy back to the os module and invoke arbitrary OS-level functions. Additional uses of eval() in the ReqManager and RequestDB components may present similar attack surfaces (GitHub Advisory, DIRAC Advisory).
Successful exploitation grants any authenticated user full remote code execution on the DIRAC server as the system service account, enabling complete system compromise. An attacker can read the local dirac.cfg configuration file to extract database credentials, export all stored proxies and tokens, and pivot to connected systems or databases. If local logging is in use, the attacker can also delete evidence of the exploit from the RequestManager log, leaving only an exception printout as a potential indicator (GitHub Advisory, DIRAC Advisory).
There is no public proof-of-concept exploit code known at this time, and no evidence of in-the-wild exploitation has been reported. The vulnerability requires only low-privilege authenticated access (no special roles), making it accessible to any registered DIRAC user. The attack complexity is low and no user interaction is required, significantly lowering the barrier to exploitation. No CISA KEV catalog listing or threat actor attribution has been identified (GitHub Advisory).
export_getRequestCountersWeb RPC method exposed by the ReqManager service, accessible to all authenticated users.groupingAttribute payload: Construct a Python dunder-based string that, when prepended with Request., forms a valid attribute traversal expression — for example, __class__.__init__.__globals__['os'].system — to reach the os module from the Request object.export_getRequestCountersWeb with the crafted groupingAttribute value. The server prepends Request. and passes the result to eval() inside a SQLAlchemy query in RequestDB.py.eval() call resolves the dunder chain and invokes the target OS function (e.g., os.system) in the server context, executing arbitrary commands as the DIRAC service user.dirac.cfg for database passwords and service credentials, export stored proxies and tokens, and optionally delete RequestManager log entries to cover tracks (GitHub Advisory, DIRAC Advisory).AttributeError or TypeError from failed eval() attempts, or unexpected SQLAlchemy query errors) associated with unusual groupingAttribute values containing dunder strings (e.g., __class__, __globals__, __init__).export_getRequestCountersWeb with non-standard groupingAttribute parameters that do not match expected values (Type, Status, or known Request attributes).dirac.cfg; new files written to the DIRAC installation directory by the service account.curl, wget, python, or network tools).Upgrade the DIRAC pip package to one of the patched versions: 8.0.79, 9.0.22, or 9.1.10, available on PyPI. As an interim workaround, restrict network access to DIRAC services to trusted and known users only, reducing the pool of potential attackers. Additionally, audit all other uses of eval() in the ReqManager and RequestDB components for similar injection risks. Removing or sandboxing the export_getRequestCountersWeb endpoint until patching is complete should also be considered (GitHub Advisory, DIRAC Advisory).
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."