T09 · Insecure Skill Coding Practices
- Location
scripts/run.py:66- Finding
Untrusted Web Content Can Cause Excel Formula Injection
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill broadly matches its price-monitoring purpose, but it needs review because it browses configured websites with weak browser isolation and emails Excel reports built from untrusted web data.
Review before installing. Use only trusted product URLs, run it in a restricted container or dedicated account, remove --no-sandbox where possible, restrict outbound network access to approved domains, and harden the Excel export against formula injection before emailing reports.
scripts/run.py:66Untrusted Web Content Can Cause Excel Formula Injection
scripts/run.py:45Unrestricted Browser Navigation with Chromium Sandbox Disabled
The documented purpose understates the skill's effective behavior: it can read secrets, scrape arbitrary URLs, write local data, and send emails, yet these sensitive actions are not reflected in declared permissions or clearly bounded behavior. That mismatch is dangerous because users and enforcement layers may approve the skill for benign reporting while it actually has broader data movement and network capabilities that could be abused for exfiltration or unauthorized automation.
The skill advertises capabilities that require environment access, local file access, and outbound network/email behavior, but it declares no explicit tool scope or permissions. This creates a transparency and authorization gap: an agent or reviewer cannot reliably constrain what the skill may access, increasing the risk of unintended secret use, file access, or network exfiltration.
The user-facing description does not prominently warn that the skill stores scraped/raw data and reports on disk and emails reports to configured recipients. This lack of disclosure is risky because users may provide URLs or request a run without understanding that data will persist locally and be transmitted externally, creating privacy, compliance, and data-handling concerns.
The usage examples are broad and resemble ordinary assistant requests, such as checking prices, sending summaries, or adding URLs, without clear trigger boundaries. In an agent environment, that can cause overbroad invocation and unintended execution of scraping, file writes, or email sending when a user did not explicitly consent to those side effects.
The manifest says the bot monitors prices and emails a daily Excel report, so emailing is in scope. However, directly reading secrets from environment variables introduces credential-access capability that is not described in the manifest and is broader than the core price-monitor/report behavior.
This code accesses sensitive email credentials via environment variables, but there is no accompanying comment, prompt, or user-facing disclosure explaining that the skill will consume stored SMTP secrets. For code files, sensitive credential access should be disclosed unless already clearly documented elsewhere in the skill materials.
The skill emits fixed natural-language email content in English, with no indication that users can choose another language or that English-only output is a documented requirement. The policy requires flagging language constraints when a skill forces a specific language without user opt-in.
No suspicious patterns detected.