T09 · Insecure Skill Coding Practices
- Location
notify.py:22- Finding
Unrestricted Push-Service Destination Can Disclose API Credentials and Notification Data
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill appears to send WeCom notifications as advertised, but it needs review because it can send the API key and message contents to any configured server and prints full notification payloads to logs.
Install only if you control and trust the configured Push Server URL, use HTTPS, and treat the API key as capable of sending messages. Avoid sending secrets or regulated data through this skill unless logging is fixed, because the script prints full notification payloads to stdout.
notify.py:22Unrestricted Push-Service Destination Can Disclose API Credentials and Notification Data
notify.py:53Complete Notification Payload Is Written to Standard Output
The skill requires environment variables and performs outbound network communication, but it does not declare an explicit tool scope such as permissions or allowed-tools. This weakens security boundaries and informed review, because an agent or user may not clearly see that the skill can access secrets and exfiltrate data to an external service.
The skill documentation explains that it sends notifications through an external Push Server, but it does not clearly warn users that message bodies, recipient identifiers, and potentially embedded URLs/articles are transmitted to a third-party service. This creates a data-handling and privacy risk because users may supply sensitive operational or personal information without realizing it leaves the local agent environment.
This code performs an HTTP POST to an external push service using user-provided message content and recipient data. Although the module docstring says it sends notifications via an OpenAPI push service, the execution path itself does not provide a clear runtime disclosure or confirmation before transmitting the payload.
The script prints the full parsed request body after JSON parsing, which can expose recipient identifiers and message contents to stdout, logs, or calling systems. In an agent/skill context, stdout is often captured centrally, so this creates unintended data disclosure beyond the stated purpose of sending the notification.