Dangerous exec
- Finding
- Shell command execution detected (child_process).
- Content
log(`[dispatcher] exec (dynamic): ${dynamicScript.slice(0, 120)}`);
Security checks across static analysis, malware telemetry, and agentic risk
This VK plugin is mostly aligned with channel integration, but it contains undisclosed dynamic shell execution plus extra credential and provider data flows that warrant careful review before installation.
Install only after reviewing or disabling the dynamic command-execution path. If you proceed, use least-privilege VK tokens, keep DM policy on pairing or allowlist, explicitly configure any Groq/ElevenLabs/Mistral features you want, and avoid giving this plugin access to production community management until its command and provider-data boundaries are clear.
log(`[dispatcher] exec (dynamic): ${dynamicScript.slice(0, 120)}`);log(`[dispatcher] exec (dynamic): ${dynamicScript.slice(0, 120)}`);const APP_DIR = process.env.APP_DIR || "/opt/myapp";
const apiKey = process.env.ELEVENLABS_API_KEY;
const APP_DIR = process.env.APP_DIR || "/opt/myapp";
const apiKey = process.env.ELEVENLABS_API_KEY;
VirusTotal engine telemetry is currently stale for this artifact.
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.
If reachable from VK messages or button/LLM actions, remote chat input could cause commands to run on the OpenClaw host.
The static scan identifies child_process shell execution around a variable dynamicScript. Arbitrary/dynamic shell execution is not disclosed by the VK channel integration purpose.
log(`[dispatcher] exec (dynamic): ${dynamicScript.slice(0, 120)}`);Do not install until this path is audited or removed. If command execution is required, restrict it to fixed allowlisted commands with explicit owner approval, sandboxing, and logging.
A crafted VK message or LLM misclassification could select a script action and misuse local tools.
The public types show LLM-classified message text can produce actions carrying scripts, but the artifacts do not show a scoped command allowlist or approval boundary.
interface ButtonAction { script?: string; scriptFn?: (text: string, peerId: number) => string | null; ... } export declare function classifyIntentWithLLM(text: string, groqKeys: string[], log: (msg: string) => void): Promise<ButtonAction | null>;Require explicit per-command configuration, disable LLM-generated scripts, and keep VK direct-message policy on pairing/allowlist rather than open access.
The plugin can message users, upload media, post to the wall, and manage aspects of the VK community if given the requested token.
The setup requests broad VK community-token permissions. This is coherent with the advertised full VK management feature set, but it is high-impact account authority.
Grant: messages, photos, docs, wall, stories, manage.
Use a dedicated VK community token with the least privileges you actually need, and avoid enabling broad community management unless required.
The plugin may use an external provider account or API quota that the user did not explicitly configure for this VK channel.
The runtime reads an ElevenLabs credential even though the provided setup fields focus on VK and optional Groq transcription, and the registry metadata declares no environment variables.
const apiKey = process.env.ELEVENLABS_API_KEY;
Declare all provider credentials in metadata/setup and make non-VK provider features opt-in with clear descriptions.
A Groq key configured elsewhere in OpenClaw could be used by this plugin without the user selecting it for VK transcription or intent handling.
The runtime searches broader OpenClaw config provider credentials instead of using only the explicitly configured VK account groqApiKey.
Collect all Groq API keys from OpenClaw config providers. Auto-discovers keys named "groq*" or pointing to api.groq.com.
Limit credential lookup to the account's configured key or require an explicit provider selection and consent.
Images received through VK could be processed by an external vision provider without users understanding that data path.
The artifacts indicate image OCR may fall back to a Mistral/Pixtral provider, but the setup only clearly discloses VK and optional Groq voice transcription.
OCR an image URL. 1. Download image to /tmp 2. Run tesseract ... 3. If result is empty/too short → try Pixtral (Mistral vision API)
Disclose all external media-processing providers, make them opt-in, and document what content is sent, retained, and logged.