Skip to main content
VulnerabilityPublished

CVE-2026-31886: dagu · Path Traversal

Affects daguSource CVE Database V5

0
Compare

Not known to be exploited · CVSS 9.1 Critical : upgrade to 2.2.4 as a priority.

Data as of 29 Oct 2026, 19:04 UTC

CVSS 3.1 base score
9.1Critical
How severe the flaw is on the 0–10 CVSS scale.

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:H

Exploitation evidence

  1. Disclosed: evidence found.

    CVE published 13 Mar 2026

  2. Detectable: no evidence on record.

    No public nuclei template indexed

  3. Weaponized: no evidence on record.

    No public exploit code indexed in Metasploit or Exploit-DB

  4. Exploited in the wild: no evidence on record.

    Not in CISA KEV and no source reports exploitation

  5. Observed by OffSeq 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 29 Oct 2026.

What to do

Upgrade dagu and dagu-org/dagu to 2.2.4.

Affected software

ProductAffectedFixed in
dagu-orgdaguAffected
  • <2.2.4
Fixed in
  • 2.2.4
GitHubdagu-org/dagupkg:github/dagu-org/daguOther threatsAffected
  • <2.2.4
Fixed in
  • 2.2.4

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.

References

Community reviews

Loading reviews…