T09 · Insecure Skill Coding Practices
- Location
scripts/shopgeni.py:134- Finding
Unrestricted Local File Upload Through the Image Parameter
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This shopping skill has a coherent purpose, but it needs review because it can upload arbitrary local files to configurable network endpoints and creates an undisclosed persistent identifier.
Review before installing. Use it only if you are comfortable sending shopping queries and selected product images to the ShopGeni/BeyondStyle backend, avoid passing private files or sensitive photos as --image, and check that SHOPGENI_API_URL or --api-url has not been changed to an untrusted endpoint.
scripts/shopgeni.py:134Unrestricted Local File Upload Through the Image Parameter
scripts/shopgeni.py:24Sensitive Requests Can Be Redirected to Arbitrary Network Destinations
scripts/shopgeni.py:34Persistent Installation Identifier Is Created and Transmitted Without Disclosure
Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.
---
## Display Guidelines
- **Item recommendations:** Show as a markdown table or bullet list with name, brand, price, and link
- **Price comparison:** Show as a ranked table: `Rank | Store | Price | Link`
The skill advertises executable behavior that likely needs network, filesystem, and environment access, but it declares no explicit tool scope or permissions. This weakens sandboxing and review because consumers cannot tell what capabilities are required, and a runtime may grant broader access than necessary.
The skill supports image-file and image-URL inputs and states that the backend uses images for visual similarity ranking, but it does not clearly warn users that these images or URLs may be transmitted to an external service. This creates a privacy and data-handling risk because users may submit personal photos or sensitive URLs without informed consent.
The skill creates a stable per-installation identifier, stores it on disk, and transmits it as the X-Nst-Sig header on every request. This enables persistent cross-session tracking of the user or installation without any evident consent, notice, rotation, or documented necessity, creating a privacy and correlation risk if the remote service or logs are compromised or misused.
The skill sends user queries and, in image mode, local image contents to a remote third-party API, and it can also append an image URL into the transmitted query. In a shopping assistant this is functionally expected, but without an explicit user-facing warning or data-handling disclosure, sensitive text, embedded metadata, or private product images could be unintentionally exfiltrated off-device.