T09 · Insecure Skill Coding Practices
- Location
SKILL.md:27- Finding
Plaintext Image Transmission with Proxy Bypass to a Hardcoded Internal Service
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 27–33 and 67–79
Vulnerability Type: Insecure transport and security-control bypass
Risk Level: MediumVulnerable Code
python os.environ['NO_PROXY'] = '172.20.112.202' os.environ['no_proxy'] = '172.20.112.202' url = 'http://172.20.112.202:5002/v1/chat/completions' img = '/path/to/image.jpg'The subsequent API request supplies the local image to that endpoint:
python response = HttpInterface( url, images=[img], no_think=True, )Technical Analysis
The Skill directs the Agent to upload user-supplied images to a hardcoded private-network service using plaintext HTTP. Because HTTP does not provide transport encryption or server authentication, a party capable of observing or controlling the network path could inspect or modify image uploads and model responses.
The Skill also sets both
NO_PROXYandno_proxyfor the destination. This forces the request to bypass configured proxies that may otherwise provide TLS termination, traffic inspection, access control, audit logging, or data-loss-prevention enforcement. The endpoint is not made configurable or validated against an approved allowlist, and the instructions do not require explicit user approval before image contents are transmitted.The reviewed project contains only
SKILL.md; the referencedHttpInterfaceimplementation is not included. Therefore, additional authentication, validation, logging, and transport behavior inside that dependency could not be verified.Attack Path
- A user invokes the grounding Skill with an image containing sensitive information, such as a screenshot, document, personal data, or internal interface.
- The Agent follows the Skill instructions and sets
NO_PROXYandno_proxyfor172.20.112.202. - The Agent submits the image to
http://172.20.112.202:5002/v1/chat/completions. - A compromised destination ...[truncated 1041 chars]
- Remediation
View remediation
Remediation Suggestions
- Replace the plaintext endpoint with an authenticated HTTPS endpoint and require certificate verification. Do not permit silent fallback to HTTP.
- Remove the hardcoded IP address. Load the endpoint from a trusted configuration source and validate it against an explicit allowlist of approved hosts and schemes.
- Avoid globally modifying
NO_PROXYorno_proxy. If direct connectivity is operationally required, scope proxy behavior to the individual request and document why bypassing organizational controls is necessary. - Require explicit user approval before transmitting an image to a remote or internal model service, especially when the image may contain sensitive data.
- Clearly document the service owner, authentication requirements, data retention policy, logging behavior, and permitted data classifications.
- Add destination authentication, request authorization, timeouts, response-size limits, and robust error handling to the HTTP client.
- Validate returned coordinates before visualization, including numeric type checks, coordinate ordering, range enforcement, and limits on the number of returned boxes.
- Include the implementations of
HttpInterfaceand the referenced box-processing utilities in the auditable package, or pin them to reviewed and integrity-verified dependencies.
