wanjie-openclaw-video

Security checks across malware telemetry and agentic risk

Overview

This video-generation skill mostly matches its stated purpose, but it uses an undeclared local OpenClaw API key, starts background work, and claims scheduled monitoring without clear user controls.

Review this skill carefully before installing. Only use it if you are comfortable with it reading your OpenClaw API-key config, sending prompts and a bearer token to the Wanjie API, opening returned URLs automatically, and potentially running background monitoring. Prefer a version that explicitly asks for a Wanjie-specific key, validates result links, and provides clear controls to stop or remove any background task.

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Risk analysis

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

#
ASI03: Identity and Privilege Abuse
High
What this means

The skill may use or disclose a provider API key the user did not intend to give to this video service, potentially causing account exposure or unexpected API charges.

Why it was flagged

The worker reads a local OpenClaw config file, selects the first provider API key rather than an explicitly scoped Wanjie key, and sends it as a bearer token to the Wanjie endpoint. This credential use is not declared in the registry metadata.

Skill content
config_path = os.path.join(os.path.expanduser("~"), ".openclaw", "openclaw.json") ... key = list(cfg['models']['providers'].values())[0]['apiKey'] ... headers={"Authorization": f"Bearer {key}"
Recommendation

Require and declare a specific Wanjie credential, select it by provider name, avoid using arbitrary first-provider keys, and document exactly what account access is needed.

#
ASI10: Rogue Agents
Medium
What this means

A background monitor could continue running after the chat interaction, consume resources or API quota, and be hard for a user to discover or remove.

Why it was flagged

The skill claims it starts recurring background monitoring and a Windows scheduled task, but the artifacts do not show clear user opt-in, stopping conditions, disable instructions, or uninstall cleanup for that background behavior.

Skill content
后台会启动定时监控(每5分钟一次)... 本插件部署了 Windows 任务计划程序 `OpenClaw_Veo_Monitor` 进行自动化监控。
Recommendation

Make scheduled monitoring explicitly opt-in, document exactly what is installed, provide a clear disable/uninstall command, and avoid persistent background tasks unless necessary.

#
ASI02: Tool Misuse and Exploitation
Medium
What this means

If the response contains an unexpected or malicious URL, the skill could automatically open it in the user's browser.

Why it was flagged

The worker extracts the first URL from the external API/model response and opens it in the user's browser without confirmation or an allowlist of expected result domains.

Skill content
match = re.search(r'(https?://\S+)', full) ... url = match.group(1) ... open_url(url)
Recommendation

Show the link to the user first, validate the domain against expected video-result hosts, and ask for confirmation before opening external URLs.

#
ASI05: Unexpected Code Execution
Low
What this means

Video generation runs outside the main chat process, which can make failures, resource use, or cancellation less visible.

Why it was flagged

The skill runs a local Python process from the message hook. This is purpose-aligned for the included worker, but it is detached background execution.

Skill content
const child = spawn('python', [scriptPath, '--prompt', prompt, '--model', 'veo3.1', '--seconds', '8'], { detached: true, stdio: 'ignore' }); child.unref();
Recommendation

Keep the worker path fixed, show task status clearly, and provide a user-visible way to cancel or inspect background jobs.

#
ASI04: Agentic Supply Chain Vulnerabilities
Low
What this means

The installed package version may vary over time and depends on the user's Python package index configuration.

Why it was flagged

The interface can install the requests package at runtime if missing. Dependency self-repair is disclosed and purpose-aligned, but the runtime install is not pinned to an exact reviewed version.

Skill content
subprocess.check_call([sys.executable, "-m", "pip", "install", "requests"])
Recommendation

Pin dependency versions, prefer install-time dependency resolution, and document the package source.