T09 · Insecure Skill Coding Practices
- Location
references/cli-reference.md:24- Finding
Shell Command Injection Through Unsafe Double-Quoted User Input
- Content
View full analysis
ticktick task create --title "Buy milk" --project ticktick task create --title "Meeting" --project \ --priority 5 --due-date "2026-08-10T09:00:00-0500" ticktick task create --title "Review" --project --tags work,urgent # taskId is passed twice — positional and --id. Both are required. ticktick task update --id --project --title "Updated" ``` `references/cli-reference.md:61-69`: ```bash ticktick project list ticktick project get ticktick project data # project + open tasks + columns ticktick project create --name "Work" --color "#F18181" --view-mode list --kind TASK ticktick project update --name "New Name" --color "#4AB8A9" ticktick project delete ticktick project group list # folders ticktick project group create --name "Work" ``` `references/cli-reference.md:94-96`: ```bash ticktick habit list ticktick habit get ticktick habit create --name "Drink water" --goal 8 --unit cups \ --repeat "RRULE:FREQ=DAILY;INTERVAL=1" ``` ### Technical Analysis The reference states that user-supplied text must be protected before reaching the shell, but numerous executable examples place text fields in double quotes. POSIX shell double quotes prevent word splitting but do not prevent command substitution through `$(...)` or backticks. If an agent replaces an example title or name with raw user input, a value such as `$(touch /tmp/injected)` is evaluated by the shell before the `ticktick` process starts. The same issue applies to other user-controlled values documented using this pa ...[truncated 1305 chars]- Remediation
View remediation
