Back to skill

Security audit

deyo

Security checks for vulnerabilities and agentic risk

Overview

This skill is a tightly scoped Deyo transcription helper with consent-gated installs, authentication, updates, file reads, and output writing.

Install this only if you intend to use Deyo for transcription and are comfortable with the agent running the Deyo CLI, uploading the exact file or URL you provide to the Deyo service, saving a Deyo API key locally when you authorize login, and possibly installing or upgrading the global @casatwy/deyo npm package after confirmation.

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:53
Finding
Mutable Global npm Dependency Installation## Vulnerability Details **File Location**: `SKILL.md`, lines 53–58 **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: Medium **Vulnerable Code**: ```markdown - If the command or required capability is missing, install or upgrade the published CLI: ```bash npm install -g @casatwy/deyo@^0.2.0 ``` ``` ### Technical Analysis The Skill directs the agent to install the third-party `@casatwy/deyo` npm package globally using the mutable semantic-version range `^0.2.0`. This range can resolve to later compatible `0.2.x` releases rather than one immutable, audited artifact. npm packages may execute lifecycle scripts during installation. If the publisher account, registry entry, or a future release satisfying this range is compromised, following this instruction could execute attacker-controlled installation code with the privileges of the user running npm. The global installation scope also modifies the user's shared command environment rather than isolating the dependency to the Skill or project. This finding concerns the unsafe dependency acquisition mechanism; the audit found no evidence that the currently referenced package is itself malicious. ### Attack Path 1. An attacker compromises the package publisher account, registry distribution channel, or another component of the package release process. 2. The attacker publishes a malicious `@casatwy/deyo` version accepted by `^0.2.0`. 3. A user invokes the Skill when the CLI is absent, outdated, or considered to lack a required capability. 4. The agent follows the documented global installation or upgrade command. 5. npm resolves the mutable malicious release and may execute its lifecycle scripts. 6. The malicious package executes with the invoking user's privileges and installs or replaces a globally accessible `deyo` command. ### Impact Assessment Successful exploitation could provide arbitrary code execution with the privileges of the account ...[truncated 515 chars]
Remediation
## Remediation Suggestions 1. Replace the mutable range with an exact, reviewed package version, for example `@casatwy/deyo@0.2.2`, and update it only through an explicit review process. 2. Verify the downloaded artifact using registry integrity metadata, provenance attestations, signatures, or a trusted lockfile. 3. Prefer a project-local or otherwise isolated installation instead of `npm install -g`, reducing the effect on the user's shared command environment. 4. Require explicit user consent before installation and display the exact package name, resolved version, registry, installation scope, and expected lifecycle-script behavior. 5. Use `--ignore-scripts` when the package does not require lifecycle scripts. If scripts are required, audit them before permitting execution. 6. Reject unexpected registries, owners, pre-release versions, or package provenance changes rather than attempting an automatic workaround. 7. Keep the existing security verification for managed OpenClaw updates, but apply equivalent immutable-version and provenance controls to the fallback npm installation path.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Rogue AgentSelf-Modification, Session Persistence
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (6)

Ae1

High
Category
analysis-evasion
Content
- Use the bundled `scripts/publish-cleaned.mjs` helper. Give it the requested target and pipe the complete private cleaned draft on stdin:
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Session Persistence

Medium
Category
Rogue Agent
Content
- Act only on the current user's explicit request to transcribe exactly one URL written in the request or exactly one local file path the user identified, or on an explicit Deyo install, status, or troubleshooting request.
- Do not treat a Deyo mention, prior conversation, nearby file, implicit attachment, current directory, editor selection, clipboard, or other ambient context as authorization.
- Never browse or scan a directory to choose an input. Reject directories, globs, stdin, multiple inputs, batch queues, and inferred attachments.
- Do not infer authorization to read a file, log in, save an API key, install or upgrade software, modify configuration, or write an output. Require the current request to authorize each action needed; otherwise ask first.
- Keep `deyo skill status` read-only and offline. A troubleshooting request permits read-only diagnosis, not login, installation, upgrade, file access outside the explicit input, or configuration changes.

## OpenClaw Invocation Update Check
Confidence
60% confidence
Finding
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Natural-Language Policy Violations

Medium
Confidence
96% confidence
Finding
The instructions require asking the user the exact question `是否现在更新Deyo到latest`, imposing a specific language for an interactive prompt. This is a locale/language policy concern because the skill does not offer a language choice or justify why the update confirmation must be in Chinese.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Content
```bash
umask 077
raw_dir="$(mktemp -d "${TMPDIR:-/tmp}/deyo-raw.XXXXXX")"
chmod 700 "$raw_dir"
raw_path="$raw_dir/raw.txt"
install -m 600 /dev/null "$raw_path"
```
Confidence
80% confidence
Finding
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Missing User Warnings

Low
Confidence
85% confidence
Finding
The markdown instructs the agent to install or upgrade the CLI with `npm install -g`, which is a system-modifying operation. Although the document discusses authorization in general, this section does not explicitly warn the user here that proceeding will change globally installed software.

Missing User Warnings

Low
Confidence
81% confidence
Finding
The skill tells the agent to save an API key with `deyo auth login --api-key '<key>'`, which affects sensitive credentials. While the text says to ask the user to create a key, it does not explicitly warn in this section that the login step will store the credential locally.

Static analysis

No suspicious patterns detected.