T09 · Insecure Skill Coding Practices
Warning
- Location
- SKILL.md:104
- Finding
- Incomplete Disclosure of Third-Party Network Access<![CDATA[ ## Vulnerability Details **File Locations**: - `SKILL.md:99` - `SKILL.md:104-110` - `SKILL.md:114-116` - `SKILL.md:129` - `category-playbook.md:7` - `category-playbook.md:23` - `merchant-checks.md:57` **Vulnerability Type**: Inaccurate external-endpoint and data-disclosure configuration **Risk Level**: Medium ### Vulnerable Code Snippets `SKILL.md:104-110` declares that only Groupon endpoints receive data: ```markdown ## External Endpoints | Endpoint | Data Sent | Purpose | |----------|-----------|---------| | `https://www.groupon.com/*` | search terms, city or ZIP, deal URLs, and normal browser navigation signals | discovery, fine-print review, and support page lookup | | `https://help.groupon.com/*` | issue categories, deal type references, and support navigation | refund, booking, and policy verification | No other data is sent externally. ``` However, other instructions require or encourage access to unspecified merchant, review, booking, property, and marketplace services: `SKILL.md:99`: ```markdown | Recommending merchants with stale or weak signals | Closed, overloaded, or badly rated merchants create support pain | Use recent reviews and direct booking clues, not score alone | ``` `category-playbook.md:7`: ```markdown - Compare against the merchant's current menu or recent public pricing if available. ``` `category-playbook.md:23`: ```markdown - Validate the same property, dates, and fees outside Groupon before trusting the claimed savings. ``` `merchant-checks.md:57`: ```markdown - Validate the same property or package outside Groupon to test the claimed savings. ``` The trust statement also acknowledges merchant disclosure that is absent from the endpoint table. `SKILL.md:129` states: ```markdown By using this skill, deal-search context may be sent to Groupon and, when the user chooses to proceed, to the merchant tied to a specific offer. ``` ### Technical Analysis The skill presents an explicit external-endpoint allowlist ...[truncated 2411 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Replace the absolute statement `No other data is sent externally` with a precise disclosure covering conditional third-party browsing. 2. Document all relevant endpoint classes, including: - Merchant websites - Review platforms - Direct-booking services - Hotel and property websites - Retail and marketplace comparison services 3. Describe the data potentially sent to each class, such as search terms, location, dates, deal identifiers, and normal browser metadata. 4. Require explicit user confirmation before opening a previously undisclosed third-party domain or transmitting detailed personal context. 5. Minimize transmitted data: - Use merchant names without user-identifying details. - Avoid including exact addresses unless required. - Separate pricing searches from personal scheduling information. - Remove voucher identifiers and support evidence from general web searches. 6. Maintain a strict allowlist for automatic navigation. Treat all other domains as confirmation-gated. 7. Align the `External Endpoints`, `Security and Privacy`, and `Trust` sections so they describe the same network behavior. 8. Add a rule prohibiting transmission of login secrets, full voucher codes, payment information, screenshots, or support evidence to third parties unless the user explicitly approves the specific destination and submission. ]]>
