T09 · Insecure Skill Coding Practices
- Location
scripts/csv_tool.py:163- Finding
YAML Structure Injection Through Unescaped CSV Content
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This CSV utility appears purpose-aligned, but it can silently overwrite user data and has unsafe handling of untrusted CSV content.
Install only if you are comfortable with a local CSV utility that can write files. Use explicit output paths, avoid running sort without --output on important data, keep backups, and be cautious when viewing or converting CSV files from untrusted sources.
scripts/csv_tool.py:163YAML Structure Injection Through Unescaped CSV Content
scripts/csv_tool.py:52Terminal Control-Sequence Injection Through Untrusted CSV Fields
The manifest description has a broad activation trigger for general CSV, data cleaning, conversion, merge, dedupe, and statistics requests, which can cause the skill to activate in many loosely related file-handling situations. In a skill that can read and write files, overbroad routing increases the chance of unintended invocation and file modification outside the user's specific intent.
The skill advertises mutating operations such as merge, convert, and dedupe that save or alter files, but it does not warn about overwriting existing files or modifying data. This is dangerous because a broadly triggered file-processing skill may destroy or replace user data if output filenames collide or if users do not realize an operation is destructive.
The sort operation writes to args.output or args.file, which means running the command without --output will modify the original file in place. Although the status print occurs after the write, there is no prior warning or confirmation about this destructive behavior.
The manifest description embeds Chinese trigger guidance ('当用户需要处理CSV文件...时触发') alongside English content, which introduces an implicit language-specific behavior without explaining whether the skill is bilingual or locale-scoped. There is no explicit user opt-in or documented justification for the mixed-language activation policy.