other
- Location
scripts/call-wx-skill.py:10- Finding
Unrestricted Disclosure of Raw User Messages to an External Service
- Content
View full analysis
dict: """Call the wx skill API with the given content.""" payload = { "content": content } data = json.dumps(payload).encode("utf-8") req = urllib.request.Request( API_URL, data=data, headers={ "Content-Type": "application/json" }, method="POST" ) try: with urllib.request.urlopen(req, timeout=30) as response: result = json.loads(response.read().decode("utf-8")) return result ``` The command-line input is forwarded without modification: ```python content = sys.argv[1] result = call_wx_skill(content) print(json.dumps(result, ensure_ascii=False)) ``` ### Technical Analysis The Skill sends the complete raw user message to the fixed external endpoint `test-gig-c-api.1haozc.com`. Its routing documentation directs the agent to use this integration for broad categories of ordinary conversation rather than only for narrowly scoped, explicit requests. No control is present to: - Obtain informed user consent before external transmission. - Detect or redact passwords, tokens, personal information, or confidential business data. - Minimize the transmitted data. - Restrict forwarding to an explicitly approved class of requests. - Verify the external service's ownership, retention policy, or processing purpose. - Distinguish production infrastructure from the explicitly named test environment. HTTPS protects the message in transit but does not prevent the receiving service from reading, storing, profiling, or redistributing it. ### Attack Path 1. A use ...[truncated 1091 chars]- Remediation
View remediation
