disclaw/tasks/DIS-005.md

1.4 KiB

id status phase priority labels branch assignee started pr merged
DIS-005 ready 0 p0
phase:0
type:fix
priority:p0
security
phase-0/path-traversal-check null null null null

DIS-005: Path-Traversal-Check in /new-agent

Ziel

/new-agent name:<x> akzeptiert keinen Namen, der aus dem Workspace-Root ausbricht. Defense in depth: Regex-Validierung + expliziter path.resolve-Containment-Check.

Kontext

Aktuell gibt es Regex-Validierung in src/commands/new-agent.ts, aber keinen path.resolve-Containment-Check. Edge-Cases: .., Unicode-Homoglyphen, ., leere Strings, Windows-reserved Names. → docs/development-plan.md Phase 0 Task 4.

Scope

  • In: Nach Regex in new-agent.ts:
    const root = path.resolve(config.workspaces_root);
    const wsPath = path.resolve(root, name);
    if (!wsPath.startsWith(root + path.sep)) throw new Error("Path traversal");
    
    Saubere User-Fehlermeldung im Discord-Channel.
  • Out: Unicode-Normalisierung über Regex hinaus

Definition of Done

  • Containment-Check ist aktiv in src/commands/new-agent.ts
  • Unit-Test tests/unit/path-traversal.test.ts deckt: ../etc, .., ./foo, a/../b, leerer String, CON (Windows-reserved), Unicode-Homoglyphen
  • npm run build && npm test grün

Dateien (erwartet)

  • src/commands/new-agent.ts
  • tests/unit/path-traversal.test.ts

Abhängigkeiten

Keine. Kann parallel laufen.

Spec

docs/backlog.md #DIS-005