Back to skill

Security audit

feishu native speech bubble generation

Security checks for vulnerabilities and agentic risk

Overview

This skill has a coherent Feishu voice-message purpose, but its installer can automatically change the host environment and pull unpinned dependencies.

Review this skill before installing in a shared, production, or privileged environment. Prefer installing dependencies in an isolated virtual environment or container, pinning edge-tts versions, and manually approving any ffmpeg system-package installation. Also consider narrowing triggers to Feishu-specific voice-bubble requests.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T08 · Insecure Dependencies

Warning
Location
setup.sh:11
Finding

Unpinned Third-Party Package Installation

Content
View full analysis

Vulnerability Details

File Location: setup.sh:11-15
Vulnerability Type: Supply-chain risk caused by an unpinned dependency
Risk Level: Medium

Vulnerable Code

bash
if command -v pip3 &>/dev/null; then
    pip3 install --quiet edge-tts
elif command -v pip &>/dev/null; then
    pip install --quiet edge-tts

Technical Analysis

The setup script installs edge-tts without specifying an audited version, verifying package hashes, using a lockfile, or enforcing an isolated Python environment. Consequently, each installation resolves the package and its transitive dependencies according to the mutable state of the configured Python package index.

This creates a supply-chain exposure: a compromised package release, compromised transitive dependency, or unanticipated upstream change could introduce arbitrary installation-time or runtime code. The installation also targets the active Python environment, which may alter shared dependencies and affect applications outside this skill.

The audit did not find evidence that the project intentionally retrieves a known malicious package. Exploitation depends on compromise or unsafe configuration of the package supply chain.

Attack Path

  1. An attacker compromises an upstream edge-tts release, one of its transitive dependencies, or a package index trusted by the host.
  2. A user or agent executes bash setup.sh.
  3. The unversioned pip install edge-tts command resolves the attacker-controlled or compromised release.
  4. Pip downloads and installs the package without integrity verification against project-maintained hashes.
  5. Malicious installation hooks or subsequently imported package code execute with the privileges of the account running the installer.
  6. If installation is performed by a privileged account, the malicious code may modify system-wide Python files or access other resources available to that account.

Impact Assessme

...[truncated 512 chars]

Remediation
View remediation

Remediation Suggestions

  1. Pin edge-tts and every transitive dependency to explicitly reviewed versions in a locked requirements file.
  2. Record cryptographic hashes for all distributions and install with pip install --require-hashes -r requirements.txt.
  3. Install dependencies in a dedicated virtual environment rather than the active or system-wide Python environment.
  4. Configure pip to use an approved package index over TLS and disable unintended fallback indexes.
  5. Run installation as a non-root account with the minimum required filesystem and network privileges.
  6. Add automated dependency vulnerability scanning and a controlled process for reviewing and updating pinned versions.
  7. Consider building and distributing dependencies from an internally verified artifact repository to reduce exposure to mutable upstream releases.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (5)

Vague Triggers

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The trigger word "语音" is extremely broad and likely to match many unrelated user requests about audio, speech, transcription, or general voice features. That can cause unintended activation of this skill's workflow, including dependency execution guidance and use of exec/tts/file-sending actions in contexts the user did not intend.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The trigger phrase "发送语音" is somewhat ambiguous because it can describe many actions outside this skill's narrow purpose, such as sending audio in other apps or generating voice output without Feishu. This increases the risk of accidental invocation, though it is less severe than the single-word trigger because it is still action-oriented.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The script performs package installation with pip and OS package managers automatically and without explicit user confirmation. In environments where setup scripts are auto-executed, this can unexpectedly alter the host, pull unpinned third-party code from external repositories, and increase supply-chain and integrity risk if package sources are compromised or unsuitable for the system.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

Comments and echoed status/error messages are written entirely in Chinese, which imposes a specific language choice on users during setup. The policy allows locale constraints only when documented and justified or when users are offered a language choice, neither of which is present in this file.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

Manifest 描述聚焦于将文本转语音、转 opus,并通过飞书消息工具发送消息;但该安装脚本在缺少 ffmpeg 时会直接调用 apt-get、brew 或 yum 安装系统级软件。这属于修改宿主机环境的能力,而不是该技能业务逻辑本身必需向用户暴露的功能。

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.