CVE-2026-31886: dagu · Path Traversal
Affects daguSource CVE Database V5
Not known to be exploited · CVSS 9.1 Critical : upgrade to 2.2.4 as a priority.
Data as of 30 Oct 2026, 11:52 UTC
Contested
Critical score, yet low EPSS after six months- EPSS
- 0.4% chance of exploitation in 30 days – higher than 37% of CVEsExploit Prediction Scoring System: the likelihood attackers will use this flaw soon.
- Patch
- Available – fixed in 2.2.4
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:HExploitation evidence
Disclosed: evidence found.
CVE published 13 Mar 2026
Detectable: no evidence on record.
No public nuclei template indexed
Weaponized: no evidence on record.
No public exploit code indexed in Metasploit or Exploit-DB
Exploited in the wildExploited: no evidence on record.
Not in CISA KEV and no source reports exploitation
Observed by OffSeq MirageSeen by Mirage: no evidence on record.
No attack traffic recorded by OffSeq Mirage sensors
A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), the Metasploit, Exploit-DB and nuclei-templates index as of 30 Oct 2026.
What to do
Upgrade dagu and dagu-org/dagu to 2.2.4.
Affected software
| Product | Affected | Fixed in |
|---|---|---|
| dagu-orgdagu | Affected
| Fixed in
|
GitHubdagu-org/dagupkg:github/dagu-org/daguOther threats | Affected
| Fixed in
|
Check your own hosts for these packages with threat-finder (opens in a new tab), our free open-source scanner.
AI-suggested
To mitigate CVE-2026-31886, organizations should immediately upgrade dagu to version 2.2.4 or later, where the vulnerability is fixed. If upgrading is not immediately possible, implement strict input validation and sanitization on the dagRunId parameter to prevent path traversal sequences such as '..'. Employ application-layer filtering or web application firewalls (WAFs) to detect and block malicious requests attempting directory traversal. Run dagu with the least privilege possible, avoiding root or overly permissive container configurations to limit the scope of damage if exploited. Regularly monitor logs for unusual deletion activity or errors related to temporary directories. Implement file system protections such as immutable flags or access control lists (ACLs) on critical directories like /tmp to prevent unauthorized deletions. Finally, conduct thorough testing of workflow engine endpoints to ensure no other parameters allow similar traversal or destructive operations.
Description
Dagu is a workflow engine with a built-in Web user interface. Prior to 2.2.4, the dagRunId request field accepted by the inline DAG execution endpoints is passed directly into filepath.Join to construct a temporary directory path without any format validation. Go's filepath.Join resolves .. segments lexically, so a caller can supply a value such as ".." to redirect the computed directory outside the intended /tmp/<name>/<id> path. A deferred cleanup function that calls os.RemoveAll on that directory then runs unconditionally when the HTTP handler returns, deleting whatever directory the traversal resolved to. With dagRunId set to "..", the resolved directory is the system temporary directory (/tmp on Linux). On non-root deployments, os.RemoveAll("/tmp") removes all files in /tmp owned by the dagu process user, disrupting every concurrent dagu run that has live temp files. On root or Docker deployments, the call removes the entire contents of /tmp, causing a system-wide denial of service. This vulnerability is fixed in 2.2.4.