1.7 KiB
1.7 KiB
| id | status | phase | priority | labels | branch | assignee | started | pr | merged | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| DIS-002 | ready | 0 | p0 |
|
phase-0/harden-spawn | null | null | null | null |
DIS-002: shell: false + cross-spawn Windows-Fix im Runner
Ziel
Command-Injection über Discord-User-Input eliminieren. shell: true aus src/agent/runner.ts
entfernen, durch cross-spawn ersetzen. Windows-.cmd-Wrapper wird korrekt aufgelöst,
CVE-2024-27980 umgangen.
Kontext
src/agent/runner.ts nutzt aktuell shell: true → jeder Discord-Input landet in der Shell-Interpretation.
spawn("claude", args, { shell: false }) schlägt auf Windows fehl (nur claude.cmd existiert).
→ docs/development-plan.md §2.2, docs/cli-feature-answers.md Frage 9.
Scope
- In:
cross-spawn+@types/cross-spawnals Dependencies ·src/runtime/resolve-claude.ts:resolveClaude()liestCLAUDE_PATH, fällt aufwhere/whichzurück, cached in-memory ·runner.ts:shell: false,windowsHide: true,stdio: pipe,setEncoding("utf8") - Out:
sanitizedEnv()(DIS-003) ·--bare-Flags (DIS-004)
Definition of Done
- Kein
shell: truemehr im gesamtensrc/-Baum (grep -r "shell: true" src/→ leer) cross-spawninpackage.json#dependenciesresolveClaude()wirft klare Fehlermeldung wennclaudenicht auffindbar- Unit-Test
tests/unit/resolve-claude.test.tsdeckt:.env-Override, PATH-Fallback, Error bei Nichtfund npm run build && npm testgrün
Dateien (erwartet)
package.jsonsrc/runtime/resolve-claude.tssrc/agent/runner.tstests/unit/resolve-claude.test.ts
Abhängigkeiten
Keine. Empfohlener Startpunkt — zuerst lösen.
Spec
→ docs/backlog.md #DIS-002