T09 · Insecure Skill Coding Practices
- Location
converter.py:911- Finding
Spreadsheet Formula Injection in Generated Excel Workbooks
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill has a coherent bank-statement conversion purpose, but its code has material safety issues when handling sensitive financial spreadsheets.
Review this before installing if you will process statements from untrusted sources or on shared machines. Use a narrow workspace folder, install dependencies in an isolated environment, avoid privileged execution, and treat generated spreadsheets as potentially unsafe until formula sanitization and safer temporary-file handling are added.
converter.py:911Spreadsheet Formula Injection in Generated Excel Workbooks
converter.py:447Predictable Shared Temporary File Enables Symlink and Race Attacks
SKILL.md:47Unpinned Runtime Dependency Installation Creates Supply-Chain Exposure
The skill instructs the agent to read user-supplied folders recursively and generate converted Excel and ZIP outputs, but it does not declare any explicit tool scope or path restrictions. In an agent environment, missing permissions metadata can lead to broader-than-expected file read/write access, increasing the risk of unintended access to sensitive financial files or writing outputs outside approved workspace locations.
The module title and description are written entirely in Chinese and present the skill as Chinese-language only, with no indication that users can choose another language or locale. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation.
The manifest description is written entirely in Chinese and frames invocation/use conditions only in Chinese, with no indication that another language is supported or that the user can opt into the locale. Under the policy, forcing a specific language without user choice is a natural-language policy concern.
The natural-language comments and field labels are entirely Chinese, and the mapping logic is built around Chinese column names only. For a general-purpose skill, this effectively forces a specific language/locale without any visible opt-in or justification in the file.