other
- Location
SKILL.md:88- Finding
External Disclosure of Sensitive Receipt Data Without Privacy Safeguards
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 3 and 88–97; downstream Gemini processing is disclosed at lines 250–252
Vulnerability Type: Sensitive Data Exposure
Risk Level: MediumVulnerable Code Snippet
markdown Base URL: `https://mercaapi.sgn.space/api`markdown ### POST /api/ticket/ Upload a Mercadona receipt (image or PDF) and get AI-extracted product matches with nutritional stats. Form data (multipart): - `file` (file, optional) - image or PDF file - `url` (str, optional) - URL to fetch the receipt from One of `file` or `url` is required.markdown 5. The `/api/ticket/` endpoint uses AI (Gemini) to extract items from receipts and match them to products. It returns per-item nutritional stats including `cost_per_100g_protein` and `kcal_per_euro` for value analysis.Technical Analysis
The Skill instructs an agent to send an entire receipt image or PDF to the unofficial external service
mercaapi.sgn.space. It also states that Gemini processes the receipt. Receipts may contain purchase history, timestamps, store locations, transaction identifiers, loyalty information, and partial payment information.External processing is relevant to the declared receipt-analysis feature and is not hidden exfiltration. However, the instructions provide no requirement for informed confirmation immediately before upload, local redaction, data minimization, retention disclosure, deletion controls, or explanation of the parties receiving the document. Uploading the complete document exceeds minimum necessary data exposure when product names, quantities, and prices are the fields required for matching and nutritional analysis.
The alternative
urlparameter additionally causes the service to retrieve a caller-supplied URL. The server implementation was not included in the audited project, so its SSRF defenses cannot be verified. This is an unverified server-sid ...[truncated 1309 chars]- Remediation
View remediation
Remediation Suggestions
- Require explicit, informed user confirmation immediately before each upload.
- Clearly identify
mercaapi.sgn.spaceand Gemini as external processors and explain what data each receives. - Warn users that receipts may contain transaction, loyalty, payment, location, and purchasing-profile information.
- Perform local OCR and redact payment details, loyalty identifiers, transaction numbers, addresses, store locations, barcodes, and other unnecessary metadata before transmission.
- Transmit only the minimum fields required for product matching, such as product description, quantity, and price, rather than the complete receipt.
- Document retention duration, deletion procedures, access controls, secondary-use restrictions, and downstream processor policies.
- Prefer local extraction or a trusted first-party service where feasible.
- If URL ingestion remains supported, validate the server implementation for SSRF protections, including an HTTP/HTTPS-only scheme allowlist, DNS and redirect revalidation, private/link-local/loopback address blocking, response-size limits, timeouts, and content-type validation.
- Add a clear opt-out path that allows users to enter receipt items manually without sending the document externally.
