T09 · Insecure Skill Coding Practices
- Location
scripts/expense_ledger.py:27- Finding
Spreadsheet Formula Injection in Generated Expense Ledger
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is mostly coherent and local, but it should be reviewed because its CSV output can carry unsafe spreadsheet formulas from receipt data.
Before installing, review the CSV formula-injection risk: do not open generated ledgers from untrusted receipt or invoice text in spreadsheet software with formula execution enabled unless values are sanitized. Use explicit input and output paths, redact unnecessary personal or financial details, and invoke the skill only when you clearly want receipt or reimbursement materials processed.
scripts/expense_ledger.py:27Spreadsheet Formula Injection in Generated Expense Ledger
This markdown file uses Chinese for all substantive instructions and evaluation content, but does not indicate that the skill is region-specific or provide any opt-in for language/locale. Under the policy, forcing a specific language without user choice is a natural-language policy violation.
The skill declares a local script and generated CSV output, which implies file read/write behavior, but it does not declare any explicit tool scope such as permissions or allowed-tools. That creates an authorization ambiguity where an agent runtime may permit broader filesystem access than users expect, increasing the risk of unintended reading or writing of sensitive financial data.
The skill is designed to process receipts, invoices, and reimbursement materials, which commonly contain sensitive financial and personal information, yet it provides no warning or handling notice. Users may submit confidential data without understanding retention, exposure, or minimization expectations, which raises privacy and compliance risk.
The trigger phrase "expense ledger" is broad enough to match ordinary finance-related requests that may not intend to invoke this skill. Overbroad activation can cause the agent to process sensitive receipts or financial text unexpectedly, increasing the chance of unnecessary data exposure or unintended file generation.
This markdown file is written entirely in Chinese and uses Chinese instructions as the expected operating language, but it does not mention that the skill is locale-specific or provide any user opt-in for language preference. Under the policy, forcing a specific language without opt-in is a natural-language policy violation.
The file presents core instructions, triggers, and warnings in both Chinese and English, but does not state a supported language policy or let the user choose their preferred language. This can create a locale-policy issue if the skill effectively assumes bilingual comprehension without opt-in.
The trigger list mixes Chinese and English phrases, but the skill does not explain whether it is intended for multilingual use or how language selection is handled. This can be a locale-policy concern when a skill implicitly assumes or privileges specific languages without documenting user choice or context.