Medium, CVSS 6.5GoAmendedPublished
Dagu MCP DAG specification read bypasses path containment and workspace isolation
CVE-2026-102943 · GHSA-5m6c-38r8-5w76
- Affected
- Go github.com/dagu-org/dagu/v2 < 2.11.0
- Fixed in
- 2.11.0· Vendor fix available
- Issue
- The traversal fix for CVE-2026-33344 was implemented as HTTP middleware installed only in the chi handler chain, but the MCP service calls the same API method in process, so arbitrary YAML file read is reachable again through the MCP tool surface with a viewer-role key. Read-only, limited to .yaml/.yml targets. Confirmed at HEAD f6c039f (post v2.10.7). The defect The fix for CVE-2026-33344 is a reflection-based HTTP middleware (internal/frontend/.../api.go, roughly lines 553-597) that inspects a request field named FileName and rejects anything that is not a plain name. It is installed in exactly one place: the chi strict-handler chain (api.go around line 419). The MCP service does not go through that chain. internal/service/mcp/server.go calls the API method directly as an in-process Go call: ```go func (svc *Service) getDAGSpec(ctx context.Context, name string) (map[string]any, error) { // line 307 resp, err := svc.api.GetDAGSpec(ctx, daguapi.GetDAGSpecRequestObject{…
Recommended action: Upgrade to 2.11.0 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.