Back to skill

Security audit

ListenHub Asr

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent local audio transcription skill, with disclosed setup and output behavior, but users should be aware it depends on an external CLI and first-run model downloads.

Install this only if you trust the `@marswave/coli` CLI and are comfortable with its first-run model download. For sensitive audio or locked-down environments, preinstall and verify the CLI and models yourself, avoid running install commands with unnecessary privileges, and check the transcript filename before saving Markdown output.

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
SKILL.md:62
Finding
Unpinned Global Dependency and Unverified Automatic Model Downloads## Vulnerability Details **File Location**: `SKILL.md`, lines 62–64 and 129–133 **Vulnerability Type**: Supply-chain exposure through an unpinned global npm package and automatically downloaded model artifacts **Risk Level**: Medium ### Vulnerable Code ```markdown | `coli` not found | Block. Tell user to run `npm install -g @marswave/coli` first | | `ffmpeg` not found | Warn (WAV files still work). Suggest `brew install ffmpeg` / `sudo apt install ffmpeg` | | Models not downloaded | Inform user: first transcription will auto-download models (~60MB) to `~/.coli/models/` | ``` ```markdown Run `coli asr` with JSON output (to get metadata): ```bash coli asr -j --model {model} "{file}" ``` ``` ### Technical Analysis The skill instructs the user to install `@marswave/coli` globally without specifying an exact reviewed version, lockfile, package-integrity value, or trusted registry. It subsequently directs the agent to execute that globally installed program on a user-selected local audio file. The CLI is also permitted to download speech-recognition models automatically. The skill does not identify the download endpoints, require cryptographic signature or checksum verification, or request explicit approval immediately before network retrieval. Neither the CLI implementation nor the downloaded artifacts are included in the audited project, so their behavior and integrity cannot be established from this package. This creates a supply-chain trust boundary: the effective executable can change after the skill has been reviewed whenever the npm package resolves to a newer release. Installation scripts and transitive dependencies may also execute during npm installation. Automatic model retrieval adds a second external artifact channel; tampered model data could compromise transcription integrity or potentially exercise vulnerabilities in the model parser or runtime. ### Attack Path 1. An attacker compromises the npm pack ...[truncated 2079 chars]
Remediation
## Remediation Suggestions 1. Pin `@marswave/coli` to an exact, reviewed version rather than installing the latest available release. 2. Prefer a project-local dependency managed by a committed lockfile instead of a global installation. 3. Use npm integrity metadata and a trusted, explicitly configured registry. Document the expected package name, version, publisher, and integrity hash. 4. Disable or carefully review npm lifecycle scripts where feasible during installation. 5. Document all model download URLs, versions, expected sizes, and cryptographic SHA-256 or stronger hashes. 6. Verify every downloaded model before loading it. Reject missing, mismatched, or unsigned artifacts. 7. Require explicit user confirmation before the first network download and clearly identify the source, destination, and expected artifact size. 8. Provide an offline installation workflow using preverified model files. 9. Run the transcription CLI with least privilege and, where practical, inside a sandbox that restricts filesystem and network access. 10. Add dependency and artifact update procedures requiring security review before changing pinned versions or hashes.
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (7)

Vague Triggers

Medium
Confidence
93% confidence
Finding
The manifest description says the skill triggers on phrases including "transcribe" and several short Chinese phrases, but it does not narrow the context or provide exclusion conditions. These terms are broad enough to appear in ordinary conversation, increasing the risk of unintended invocation.

Vague Triggers

Medium
Confidence
89% confidence
Finding
The "When to Use" section says the skill should activate when the user says short phrases like "识别" or "transcribe", but it does not clearly distinguish these from general conversational use. The lack of explicit trigger boundaries or negative examples makes invocation conditions ambiguous.

Description-Behavior Mismatch

Medium
Confidence
91% confidence
Finding
The skill claims transcription runs fully offline, but elsewhere states models may be auto-downloaded on first use. That creates a mismatch between the privacy/trust expectations set by the manifest and the actual network behavior, which can mislead users in sensitive environments.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
| Issue | Action |
|-------|--------|
| `coli` not found | Block. Tell user to run `npm install -g @marswave/coli` first |
| `ffmpeg` not found | Warn (WAV files still work). Suggest `brew install ffmpeg` / `sudo apt install ffmpeg` |
| Models not downloaded | Inform user: first transcription will auto-download models (~60MB) to `~/.coli/models/` |

If `coli` is missing, stop here and do not proceed.
Confidence
70% confidence
Finding
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Context-Inappropriate Capability

Medium
Confidence
85% confidence
Finding
Automatic model download introduces unannounced network activity and supply-chain exposure into a skill presented as local transcription. Even if legitimate, downloading executable/model artifacts at runtime can violate user expectations and restricted-environment policies.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
Several user-facing prompts and displays are specified only in Chinese, such as the config summary and setup questions, with no indication that the user may choose their preferred language. This imposes a locale/language policy choice without opt-in, even though the skill description and examples include English usage.

Missing User Warnings

Low
Confidence
83% confidence
Finding
The skill writes a Markdown file to the current working directory, which is a filesystem modification. Although it asks the user whether to save, it does not clearly warn about the exact path or possible overwrite behavior, which can lead to unintended file creation in sensitive directories.

Static analysis

No suspicious patterns detected.