diff --git a/docs/remediation/TASKS.md b/docs/remediation/TASKS.md index 58e68115..0d6f92a5 100644 --- a/docs/remediation/TASKS.md +++ b/docs/remediation/TASKS.md @@ -93,6 +93,25 @@ and must not be cited as merge evidence. Rely on reviewer clearance + real CI. Three independent live instances in a single session — format gate, agent context reset, queue guard — is the class confirmed, not anecdote. +### D-9 — the comms path shell-interprets message bodies (injection-shaped, found by accident) + +Sending a status message with `agent-send.sh -m "...`backticks`..."` caused bash to **execute** the +backticked text as command substitution. The recipient received a mangled body plus a +`No such file or directory` error; the intended sentence never arrived. The message was reported as +delivered. + +This is the **same class** as the already-noted `pr-create.sh` backtick-quoting bug (M2 scratchpad): +**two tools in the comms path treat a message body as shell input.** A body that can execute on the +sender is a _correctness_ bug before it is ever a security one — and note the failure mode: the +send reported success while silently transmitting something other than what was written. Silent +corruption with a success receipt is precisely the pattern this mission exists to eliminate. + +**Requirement on RM-40 / RM-42 (comms/v1):** the envelope must carry its payload **verbatim**, and +the payload must not be subject to shell interpretation at **any** hop — sender, transport, or +adapter. Round-trip fidelity (send a body containing backticks, `$(…)`, quotes, and newlines; assert +byte-identical receipt) is a required registered test case under RM-02, including a must-fail control +proving the assertion can detect corruption. + ### D-8 — a PRE-REGISTERED acceptance check that was not runnable as written On PR #1025 the author (me) pre-registered AC2 with the fixture snippet `mkdir -p apps/*/venv/lib`.