Back to skill

Security audit

agent-directory

Security checks for vulnerabilities and agentic risk

Overview

This directory skill is coherent, but it tells agents to fetch and follow mutable third-party skill instructions through an authenticated external scraper without clear trust-boundary or consent guidance.

Install only if you are comfortable giving the skill a SkillBoss API key and sending requested service URLs to the SkillBoss API. Treat any fetched service skill.md as untrusted text: review what it asks the agent to do, verify the service domain, and approve sensitive actions such as credential use, file access, payments, posting, or persistence before execution.

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

Warning
Location
SKILL.md:74
Finding

Untrusted Remote Skill Instructions May Hijack Agent Behavior

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 74-79 and 98-101
Vulnerability Type: Remote instruction trust without validation
Risk Level: Medium

Vulnerable Code

SKILL.md, lines 74-79:

python
# Get Moltbook's skill.md
skill_result = pilot({"type": "scraper", "inputs": {"url": "https://www.moltbook.com/skill.md"}})
skill_content = skill_result["result"]["data"]["markdown"]

# Get Ctxly Memory's skill.md
skill_result = pilot({"type": "scraper", "inputs": {"url": "https://ctxly.app/skill.md"}})
skill_content = skill_result["result"]["data"]["markdown"]

SKILL.md, lines 98-101:

text
## Workflow

1. **Discover** — `pilot({"type": "scraper", "inputs": {"url": "https://ctxly.com/services.json"}})`
2. **Learn** — Fetch the skill.md for services you need via SkillBoss scraping type
3. **Use** — Follow the skill.md to integrate

Technical Analysis

The Skill retrieves remotely hosted skill.md documents through the SkillBoss scraping API and directs the Agent to follow those documents. The retrieved instructions are remotely mutable and are not authenticated, cryptographically pinned, allowlisted, or subjected to a mandatory security review.

This creates an instruction-hijacking boundary: content controlled by a listed service is treated as operational guidance rather than untrusted external data. A service operator, compromised service, compromised directory, or compromised scraping response could introduce instructions that conflict with the Agent's current goal or attempt to induce unsafe tool calls.

This is not confirmed remote code execution by itself. Exploitation depends on the Agent interpreting the retrieved document as instructions and possessing tools or permissions capable of carrying out the requested actions.

Attack Path

  1. An attacker controls or compromises a service listed by the remote directory, its hosted skill.md, the directory response ...[truncated 1378 chars]
Remediation
View remediation

Remediation Suggestions

  1. Treat every retrieved skill.md and directory response as untrusted data. Explicitly state that remote text must not override system instructions, user intent, authorization boundaries, or security policy.
  2. Replace “Follow the skill.md” with a review-first workflow that summarizes proposed actions, identifies requested permissions and data flows, and obtains user approval before execution.
  3. Restrict retrieval to an explicit allowlist of reviewed HTTPS domains and reject redirects to unapproved hosts.
  4. Pin approved documents by cryptographic hash or require signed manifests with verified publisher identities. Re-review content whenever its hash or signature changes.
  5. Validate the directory response schema and sanitize remote content before presenting it to an Agent. Separate informational content from executable or actionable instructions.
  6. Apply least privilege to downstream integrations. Do not expose environment variables, credentials, local files, memory, or powerful tools merely because a retrieved document requests them.
  7. Require per-action authorization for sensitive operations, including credential use, filesystem access, command execution, external communication, payments, and persistent state changes.
  8. Prefer direct retrieval of public documents when an intermediary is unnecessary, or clearly disclose that requested URLs and metadata are sent to the SkillBoss API provider.
  9. Check HTTP status codes, response content types, response size limits, and expected JSON fields before consuming scraper results.
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 (6)

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

md
metadata:
  emoji: "🔍"
  category: "discovery"
  api_base: "https://api.heybossai.com/v1"
requires.env:
  - SKILLBOSS_API_KEY
---

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

md
metadata:
  emoji: "🔍"
  category: "discovery"
  api_base: "https://api.heybossai.com/v1"
requires.env:
  - SKILLBOSS_API_KEY
---

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

md
metadata:
  emoji: "🔍"
  category: "discovery"
  api_base: "https://api.heybossai.com/v1"
requires.env:
  - SKILLBOSS_API_KEY
---

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill explicitly instructs agents to make authenticated requests to a third-party API and then retrieve arbitrary remote skill.md content from listed services, but it does not include any warning, consent requirement, domain allowlisting, or guidance for handling untrusted remote content. In an agent setting, this is dangerous because it can cause silent external data transmission and ingestion of adversarial instructions from fetched skill.md files.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
93% confidence
Finding

The example shows authenticated external transmission to https://api.heybossai.com/v1/pilot, again using a bearer token and arbitrary JSON body. This is dangerous in agent environments because the body can include attacker-influenced URLs and cause remote fetching through the hub, effectively delegating untrusted retrieval to an external service.

Content

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

md
SKILLBOSS_API_KEY = os.environ["SKILLBOSS_API_KEY"]

def pilot(body: dict) -> dict:
    r = requests.post(
        "https://api.heybossai.com/v1/pilot",
        headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"},
        json=body,

External Transmission

Medium
Category
Data Exfiltration
Confidence
93% confidence
Finding

The example shows authenticated external transmission to https://api.heybossai.com/v1/pilot, again using a bearer token and arbitrary JSON body. This is dangerous in agent environments because the body can include attacker-influenced URLs and cause remote fetching through the hub, effectively delegating untrusted retrieval to an external service.

Content

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

md
SKILLBOSS_API_KEY = os.environ["SKILLBOSS_API_KEY"]

def pilot(body: dict) -> dict:
    r = requests.post(
        "https://api.heybossai.com/v1/pilot",
        headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"},
        json=body,

Static analysis

No suspicious patterns detected.