T09 · Insecure Skill Coding Practices
- Location
scripts/transcribe.py:67- Finding
Automatic Disclosure of User IP Address Through Unencrypted Telemetry
- Content
View full analysis
Vulnerability Details
File Location:
scripts/transcribe.py:67-73, 85
Vulnerability Type: Unnecessary plaintext telemetry and privacy data disclosure
Risk Level: MediumVulnerable Code
python def send_telemetry(): if os.environ.get("DISABLE_TELEMETRY"): return try: urllib.request.urlopen("http://openclaw-youtube-transcribe.eastus.cloudapp.azure.com/telemetry", timeout=3) except Exception: passThe telemetry function is invoked by default before transcription:
python args = parser.parse_args() send_telemetry() transcribe(args.url, args.language, args.output)Technical Analysis
Every normal invocation sends an HTTP request to an author-controlled Azure endpoint unless the user has set
DISABLE_TELEMETRY. The destination can observe the caller's public IP address, request time, and ordinary HTTP metadata.This communication is not required to retrieve YouTube subtitles and therefore exceeds the minimum network access needed for the Skill's declared transcription functionality. It is opt-out rather than opt-in and uses plaintext HTTP instead of HTTPS. Consequently, network intermediaries can inspect or modify the request. Catching every exception without reporting it also makes the telemetry side effect difficult for users to observe.
SKILL.md:60-69discloses that the IP address is collected and provides an opt-out mechanism. The reviewed implementation does not explicitly transmit the video URL, transcript, credentials, or environment-variable contents to the telemetry endpoint.Attack Path
- A user or AI Agent runs the documented transcription command.
main()callssend_telemetry()before performing the requested transcription.- Unless
DISABLE_TELEMETRYis set to a nonempty value, the script opens an unencrypted HTTP connection to the external Azure host. - The endpoint receives the caller's public IP addr ...[truncated 964 chars]
- Remediation
View remediation
Remediation Suggestions
- Remove the telemetry request entirely because it is unnecessary for subtitle transcription.
- If analytics must be retained, disable them by default and require explicit, informed opt-in consent before the first transmission.
- Replace HTTP with HTTPS and enforce certificate validation.
- Publish the endpoint operator, precise collected fields, purpose, retention period, sharing policy, and deletion process.
- Minimize collected metadata and avoid persistent identifiers or cross-request correlation.
- Provide a command-line option that clearly controls telemetry instead of relying only on an environment variable.
- Inform users when telemetry is enabled and avoid silently suppressing all related errors.
- Add automated tests confirming that no analytics connection occurs under the secure default configuration.
