Feishu Voice (ListenHub)

Security checks across static analysis, malware telemetry, and agentic risk

Overview

The Feishu voice-message workflow is mostly purpose-aligned, but one helper script can run unintended local code if given a crafted language argument.

Before installing, fix or avoid the list-speakers.sh language argument issue, verify the ListenHub/Marswave API endpoint, and use least-privilege Feishu credentials. Confirm the recipient and message text before sending, and do not use the skill for sensitive content unless the external service data handling is acceptable.

Static analysis

Static analysis findings are pending for this release.

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.

What this means

If the agent or a user passes an attacker-controlled language value, the helper could run commands with the user's local privileges.

Why it was flagged

The command-line language value is inserted directly into Python source code instead of being passed as data. A crafted value containing a quote and Python statements could execute local code.

Skill content
LANGUAGE="${1:-}" ... echo "$RESP" | python3 -c "... lang_filter='$LANGUAGE' ..."
Recommendation

Validate the language argument against an allowlist such as zh/en, and pass it to Python via sys.argv or an environment variable instead of interpolating it into python -c source.

What this means

A wrong recipient, wrong chat ID, or unintended text could result in a Feishu bot message being sent immediately.

Why it was flagged

The script immediately sends an audio message to the supplied Feishu receive_id after generating and uploading the audio.

Skill content
RESULT=$(curl -sS -X POST "https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=$RECEIVE_ID_TYPE" ... "msg_type":"audio")
Recommendation

Confirm the recipient ID, recipient type, and message text before invoking the send script, and consider adding an explicit confirmation step in agent workflows.

What this means

These credentials can authorize real Feishu message-sending and file-upload actions if exposed or misused.

Why it was flagged

The skill requires a ListenHub API key and Feishu app credentials with permissions to upload files and send bot messages; it also documents reading the Feishu app secret from local OpenClaw config.

Skill content
ListenHub API key ... Feishu app with `im:message:send_as_bot` and `im:file` permissions ... extract from openclaw config ... `$HOME/.openclaw/openclaw.json`
Recommendation

Use a dedicated least-privilege Feishu app, protect the app secret and API key, avoid logging environment variables, and rotate credentials if they are exposed.

What this means

Setup may fail unexpectedly, and users may not get platform-level warnings about the credentials the skill needs.

Why it was flagged

The metadata under-declares dependencies and credentials that SKILL.md and the scripts require, so installation or review tooling may not surface the needed binaries and secrets.

Skill content
Required binaries (all must exist): none ... Required env vars: none ... Primary credential: none
Recommendation

Declare ffmpeg/ffprobe, curl, python3, LISTENHUB_API_KEY, FEISHU_APP_ID, and FEISHU_APP_SECRET in the skill metadata.

What this means

Message content may be processed by external services as part of the TTS and delivery workflow.

Why it was flagged

The message text is placed into a TTS request and sent to the external ListenHub/Marswave API before the generated audio is sent through Feishu.

Skill content
API_BASE="https://api.marswave.ai/openapi/v1" ... 'content': sys.argv[2] ... -d @"$TMPDIR/req.json"
Recommendation

Avoid sending sensitive text unless you trust the provider and have verified that api.marswave.ai is the intended ListenHub API endpoint and acceptable under your data-handling policy.