Back to skill

Security audit

qdrant-advisor

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent Qdrant help skill, but it delegates runtime guidance to live remote SKILL.md files without strong trust boundaries.

Install only if you are comfortable with the agent fetching current Qdrant guidance from live remote pages during each session. Keep normal system, developer, user, privacy, and tool-use policies above any fetched content, and do not allow fetched pages to trigger unrelated tool calls, local file access, installs, commands, credential use, or off-domain navigation without explicit review.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (1)

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:10
Finding

Mutable Remote Skill Content Can Hijack Agent Instructions

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 10–16, 34–50, and 66–70
Vulnerability Type: Indirect prompt injection through remotely loaded skill instructions
Risk Level: High

Vulnerable Code Snippet

markdown
Do not answer Qdrant questions from memory. Qdrant evolves quickly (new endpoints, metrics, defaults, and deployment patterns land often), and the authoritative, current guidance lives at `skills.qdrant.tech` as a hierarchy of agent skills. Your job is to **load the relevant skill context live, then ground your diagnosis in it** — loading only the branch that matches the problem, never the whole tree.

You are *consuming* these skills as context. You are **not** installing them and nothing needs to be installed.

- **Search**: `https://skills.qdrant.tech/search?query=your+query+here`
- The structure is **hierarchical**: top-level skill `SKILL.md` → sub-skill `SKILL.md` → linked documentation pages. Each level narrows scope. Traverse it depth-first, following only the branch(es) that match the symptom.
markdown
Each `SKILL.md` you load names its sub-skills (and often related skills and docs) as links. The hierarchy is not just two levels — a skill can nest **several layers deep**, and skills also reference each other **laterally**. Follow the links, not a fixed depth.

**Descend (go deeper).** A `SKILL.md` is not necessarily a leaf just because you fetched it. If its sections themselves point to further `SKILL.md` files, keep descending along the branch that matches the symptom — top-level → sub-skill → sub-sub-skill → … — until you reach a level whose guidance is concrete enough to act on (ordered diagnostic steps, exact endpoints/metrics, an explicit "what NOT to do" list). Don't stop early at an intermediate skill that only routes you onward.

**Move laterally (go sideways).** Real problems often span areas. Follow a link to a **sibling or related skill** when:
- the current skill expl
...[truncated 3763 chars]
Remediation
View remediation

Remediation Suggestions

  1. Explicitly classify every fetched page as untrusted reference data. State that remote content cannot override system, developer, user, safety, privacy, or tool-use policies.
  2. Do not load remote SKILL.md text as executable agent instructions. Parse it into a constrained data structure containing only expected fields such as diagnostic steps, metrics, endpoint references, and canonical citations.
  3. Allowlist exact HTTPS origins and approved path prefixes. Reject off-origin links, userinfo URLs, non-HTTPS schemes, IP literals, unexpected ports, and redirects outside the allowlist.
  4. Replace live mutable retrieval with signed, versioned snapshots where feasible. Verify signatures or cryptographic hashes before consuming content.
  5. Apply schema validation, size and traversal-depth limits, request-count limits, and cycle detection to hierarchical retrieval.
  6. Detect and discard directives requesting secrets, unrelated file access, policy changes, arbitrary tool calls, code execution, package installation, or navigation to unapproved destinations.
  7. Require explicit user approval before any sensitive operation suggested by fetched material.
  8. Use a least-privileged retrieval component with no access to local files, credentials, internal networks, or unrelated tools.
  9. Record fetched URLs, redirects, verified content versions, and rejected instructions in an audit log.
  10. Preserve the existing prohibition on installation, but extend it to prohibit executing commands or code obtained from remote content.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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
Findings (8)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 17)May include surrounding context.

md
- The structure is **hierarchical**: top-level skill `SKILL.md` → sub-skill `SKILL.md` → linked documentation pages. Each level narrows scope. Traverse it depth

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 32)May include surrounding context.

md
- The structure is **hierarchical**: top-level skill `SKILL.md` → sub-skill `SKILL.md` → linked documentation pages. Each level narrows scope. Traverse it depth

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 36)May include surrounding context.

md
- The structure is **hierarchical**: top-level skill `SKILL.md` → sub-skill `SKILL.md` → linked documentation pages. Each level narrows scope. Traverse it depth

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 38)May include surrounding context.

md
- The structure is **hierarchical**: top-level skill `SKILL.md` → sub-skill `SKILL.md` → linked documentation pages. Each level narrows scope. Traverse it depth

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 49)May include surrounding context.

md
- The structure is **hierarchical**: top-level skill `SKILL.md` → sub-skill `SKILL.md` → linked documentation pages. Each level narrows scope. Traverse it depth

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 64)May include surrounding context.

md
- The structure is **hierarchical**: top-level skill `SKILL.md` → sub-skill `SKILL.md` → linked documentation pages. Each level narrows scope. Traverse it depth

Behavior Manipulation

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Subtle instructions detected that may alter agent decision-making or introduce hidden biases.

Content

Scanner excerpt · SKILL.md (reported line 3)May include surrounding context.

md
---
name: qdrant-advisor
description: "Diagnose, troubleshoot, and advise on any Qdrant deployment by loading the latest official Qdrant skills live from skills.qdrant.tech. Use this whenever someone raises a Qdrant problem or question — slow or degraded search, high or growing memory / OOM crashes, optimizer stuck or slow, indexing slowness, scaling and sharding decisions (node count, QPS, latency, multitenancy, vertical vs horizontal), poor or irrelevant search results, hybrid search and reranking, embedding-model migration, version upgrades and compatibility, monitoring and observability (Prometheus, Grafana, health checks, /metrics, /telemetry), deployment choices (local, Docker, self-hosted, Qdrant Cloud, embedded), or client-SDK questions (Python, TypeScript, Rust, Go, .NET, Java). Trigger especially when the context is clearly a Qdrant cluster, collection, or vector-search deployment. Always prefer this skill over answering from memory: it pulls current, authoritative guidance and only the relevant context."
---

# Qdrant Troubleshooting & Advisory

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The description says to use this skill whenever someone raises a Qdrant problem or question and to trigger especially when the context is clearly a Qdrant cluster, collection, or vector-search deployment. That scope is very broad and lacks explicit boundaries or negative examples, so ordinary Qdrant discussion could unintentionally activate the skill.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.