T09 · Insecure Skill Coding Practices
- Location
scripts/csv_tools.py:37- Finding
Unrestricted Output Paths Permit Silent File Overwrite
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a coherent local CSV tool, but its file-writing behavior is broader and less controlled than its own safety documentation claims.
Review this before installing if you work in directories with important files. Use explicit output paths in a scratch directory, avoid running it on untrusted CSVs that will later be opened in spreadsheet software, and expect that existing files can be overwritten despite the documentation saying confirmation is required.
scripts/csv_tools.py:37Unrestricted Output Paths Permit Silent File Overwrite
scripts/csv_tools.py:37Untrusted CSV Values Can Trigger Spreadsheet Formula Injection
The README’s user-facing instructions and safety information are presented entirely in Chinese, which effectively forces a specific language for users. The policy allows language constraints only when users are given a choice or when the locale limitation is clearly documented and justified, neither of which appears here.
The skill advertises file-writing behavior in its documented capabilities, but it does not declare an explicit tool/permission scope such as permissions or allowed-tools. That creates a policy gap: an agent may invoke the skill without a machine-readable restriction on write access, increasing the chance of unintended file creation or overwrite if the runtime grants broader filesystem privileges than the human-readable text implies.
This Python skill’s top-level docstring, CLI help text, and many user-facing messages are written in Chinese, which effectively imposes a specific language on users. The file does not provide any documented language/locale selection, opt-in, or justification for being region-specific.
The heading uses only Chinese for the changelog label ("更新日志"), which indicates a fixed language presentation without offering an alternative or documenting a locale-specific scope. Under the policy rule, forced language/locale choices in natural-language content can be a violation when no opt-in or justification is provided.
The natural-language comment is written only in Chinese ('纯Python标准库,无外部依赖'), which imposes a specific language context without offering any user choice or alternate locale. This can conflict with language/locale policy expectations when skills should not force a language absent explicit opt-in or justification.
No suspicious patterns detected.