Back to skill

Security audit

QMD Markdown Search

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent qmd usage guide for local Markdown search, with install and data-exposure cautions users should understand before indexing private notes.

Install only if you trust the qmd upstream repository and are comfortable with a global CLI install. Use narrow collections rather than broad private folders, review what is indexed before embedding, avoid LLM-backed query mode for sensitive material unless you know the configured provider path, and run the MCP server only for trusted local clients.

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:10
Finding

Unpinned Global Dependency Installation from a Mutable GitHub Repository

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 10–12
Vulnerability Type: Supply-chain risk caused by an unpinned remote dependency
Risk Level: Medium

Vulnerable Code

markdown
## Installation

```bash
bun install -g https://github.com/tobi/qmd
text

The dependency requirement is also documented in `SKILL.md` line 3:

```yaml
description: Search and retrieve markdown documents from local knowledge bases using qmd. Supports BM25 keyword search, vector semantic search, and hybrid search with LLM re-ranking. Use for querying indexed notes, documentation, meeting transcripts, and any markdown-based knowledge. Requires qmd CLI installed (bun install -g https://github.com/tobi/qmd).

Technical Analysis

The installation command references a mutable GitHub repository without specifying a reviewed release tag, immutable commit hash, package version, or integrity digest. Consequently, the code installed by this instruction can change after the Skill has been reviewed.

Installing the package globally increases the potential impact because the resulting executable becomes available across the user's environment. If the upstream repository, maintainer account, dependency chain, or repository configuration is compromised, altered package code or installation hooks may execute with the privileges of the user running bun install.

The repository is not proven malicious by the audited files. The vulnerability is the absence of dependency pinning and integrity controls, which creates an exploitable supply-chain trust boundary.

Attack Path

  1. An attacker compromises the upstream repository, a maintainer account, or a dependency used by the remote package.
  2. The attacker introduces malicious package code or an installation lifecycle hook into the repository revision resolved by the unpinned URL.
  3. A user follows the Skill's documented command: `bun install -g https://github.com/tob ...[truncated 1011 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin the dependency to a reviewed immutable commit hash or a cryptographically verified release rather than the repository's changing default revision.
  2. Prefer a trusted package registry release with an explicit version and integrity metadata.
  3. Use a lockfile and verify checksums or signatures before installation.
  4. Avoid global installation where possible. Install the dependency in a dedicated project, sandbox, container, or isolated user environment with minimal permissions.
  5. Review package lifecycle scripts and transitive dependencies before approving upgrades.
  6. Establish a controlled update process in which new revisions are audited and tested before changing the pinned version.
  7. Document the expected publisher, repository, version, commit hash, and integrity value so users can verify the downloaded artifact.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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
Findings (2)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill explicitly promotes query as a high-quality search mode using LLM re-ranking, but it does not warn that this can send user queries and potentially retrieved local document content to an external model/provider. In a skill centered on searching local knowledge bases and notes, that omission can cause users to expose sensitive internal material under the assumption the workflow is fully local.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The setup and MCP/server examples encourage indexing ~/notes, generating embeddings, and exposing qmd as an MCP server without any caution about sensitive local content becoming searchable or accessible through another interface. In the context of personal notes, meeting transcripts, and documentation, this increases the risk of accidental disclosure of confidential data to local agents, connected clients, or downstream tools.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.