Back to skill

Security audit

Qmd

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent local Markdown search helper, with a notable but disclosed supply-chain risk in its unpinned Bun install command.

Install only if you are comfortable globally installing qmd from its current GitHub source via Bun. Prefer pinning a reviewed commit or release where possible, and only add Markdown folders you intentionally want indexed and searchable.

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:5
Finding
Unpinned Remote Dependency Installation## Vulnerability Details **File Location**: `SKILL.md`, lines 5 and 31 **Vulnerability Type**: Unpinned installation from a mutable remote Git repository **Risk Level**: Medium ### Vulnerable Code ```yaml metadata: {"clawdbot":{"emoji":"🔍","os":["darwin","linux"],"requires":{"bins":["qmd"]},"install":[{"id":"bun-qmd","kind":"shell","command":"bun install -g https://github.com/tobi/qmd","bins":["qmd"],"label":"Install qmd via Bun"}]}} ``` ```bash bun install -g https://github.com/tobi/qmd ``` ### Technical Analysis The installation command retrieves and globally installs QMD directly from a mutable GitHub repository reference. It does not identify an immutable release, tag, or commit hash and provides no integrity or provenance verification. Consequently, the code executed during installation can change after this skill has been reviewed without requiring any modification to the skill itself. Bun may also process package installation or lifecycle behavior supplied by the remote project. Such behavior executes with the permissions of the user running the installation. This is a supply-chain weakness rather than evidence that the current upstream project is malicious. ### Attack Path 1. An attacker compromises the upstream repository, a maintainer account, or a relevant upstream dependency. 2. The attacker modifies the repository content or package lifecycle behavior reached by the mutable installation reference. 3. A user or agent follows the skill metadata or documented installation command. 4. Bun downloads the changed remote content and performs the global installation. 5. Attacker-controlled code executes with the installing user's privileges. 6. The payload can access resources available to that account, including user-readable files and Markdown collections intended for later indexing. ### Impact Assessment Successful exploitation could provide arbitrary code execution under the installing user's account. The attacker could read or modify user-a ...[truncated 364 chars]
Remediation
## Remediation Suggestions - Replace the mutable repository installation target with a reviewed, immutable release or full commit hash. - Pin all transitive dependencies to reviewed versions through an appropriate lockfile. - Require integrity hashes or cryptographic signature verification where supported. - Verify package provenance and release ownership before installation. - Disable package lifecycle scripts when they are unnecessary and the package manager supports doing so. - Avoid elevated privileges during installation and execution. - Document the exact reviewed QMD version and establish a controlled process for reviewing and approving upgrades.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep

Static analysis

No suspicious patterns detected.