other
- Location
scripts/vision_json.py:17- Finding
Undisclosed Transmission of Complete Local Images to an External Service
- Content
View full analysis
Vulnerability Details
File Location:
scripts/vision_json.py, lines 17-18 and 50-51
Vulnerability Type: Undisclosed External Data Transmission
Risk Level: MediumVulnerable Code
python with open(image_path, 'rb') as f: b64 = base64.b64encode(f.read()).decode()python headers = {'Authorization': f'Bearer {api_key}', 'Content-Type': 'application/json'} r = requests.post('https://gmncode.cn/v1/responses', headers=headers, json=payload, timeout=180)The encoded image is included in the request payload as follows:
python {'type': 'input_image', 'image_url': f'data:image/jpeg;base64,{b64}'}Technical Analysis
The script accepts a caller-controlled local image path, reads the complete file into memory, Base64-encodes its contents, and inserts the result into a JSON request sent to
https://gmncode.cn/v1/responses.Base64 is a transport encoding rather than encryption. The external service can recover the original image in full. This behavior is technically necessary for the implemented cloud-backed vision workflow, and the Skill documentation identifies GMNCODE as a dependency. However, the documentation does not clearly disclose that complete local images are uploaded to this external domain.
This creates a privacy and confidentiality risk because images handled by the declared screenshot and UI-analysis features may contain personal information, credentials, authentication tokens, internal application data, customer records, or proprietary material. The script performs no redaction, data classification, content warning, destination confirmation, or explicit user-consent check before transmission.
The authorization credential is sent to the declared API endpoint for authentication. The reviewed code does not demonstrate transmission of the API key to an unrelated destination or establish malicious intent.
Attack Path
- A user or agent invokes `vision_json.p ...[truncated 1324 chars]
- Remediation
View remediation
Remediation Suggestions
- Clearly state in
SKILL.mdthat complete image contents and prompts are transmitted tohttps://gmncode.cn/v1/responses. - Obtain explicit user confirmation before uploading screenshots, documents, or images likely to contain sensitive information.
- Provide a local-only processing backend or a mode that refuses all external transmission.
- Add optional cropping, masking, metadata removal, and sensitive-region redaction before upload.
- Validate file types and sizes, and reject unsupported or unexpectedly large files before reading them.
- Make the endpoint configurable through trusted configuration while enforcing HTTPS and an explicit destination allowlist.
- Document the provider's retention, access-control, privacy, and deletion policies.
- Add audit logging that records the destination and file identifier without recording image contents or API credentials.
- Warn users that Base64 encoding does not protect confidentiality and that transport security does not prevent the receiving service from accessing the image.
- For batch processing, display the complete file list and require one informed confirmation before transmitting it.
- Clearly state in
