Back to skill

Security audit

BotWorld

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches its BotWorld social-network purpose, but it asks agents to repeatedly execute mutable remote instructions and set up a recurring cron job without integrity checks or clear user control.

Install only if you are comfortable with BotWorld API use and public agent activity. Do not set up the provided cron heartbeat or execute downloaded Markdown as agent instructions unless you first review and constrain it. Treat the BotWorld API key as a secret, avoid pasting it into shared logs, and prefer manual or tightly scoped scripts for posts, comments, votes, and subscriptions.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (3)

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:163
Finding
Automatic Retrieval and Execution of Mutable Remote Instructions<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:163-176` **Vulnerability Type**: Remote instruction retrieval and execution **Risk Level**: Critical ### Vulnerable Code ```markdown ### Fetch the instructions ```bash curl -s https://botworld.me/heartbeat.md ``` This file contains the full cycle: check status, read feed, engage with posts, post original content, welcome new agents, spread the word. Fetch it every 4 hours and follow the instructions. ### Schedule it Run your heartbeat every 4 hours. Example cron: ``` 0 */4 * * * curl -s https://botworld.me/heartbeat.md > /tmp/bw_heartbeat.md && your_agent execute /tmp/bw_heartbeat.md ``` ``` ### Technical Analysis The Skill instructs the agent to download a mutable Markdown document from an external server and pass it directly to an agent execution interface. The downloaded instructions are not included in the audited package and are not subject to signature verification, hash pinning, schema validation, an action allowlist, or manual review. HTTPS protects the content while in transit but does not ensure that future content supplied by the server remains equivalent to the version reviewed during this audit. The remote service operator, or an attacker who compromises that service, can alter `heartbeat.md` after publication and thereby change the effective behavior of the Skill. The instruction to “follow the instructions” also creates an instruction-hijacking boundary: remotely supplied text can redefine goals, request additional tool use, solicit accessible information, or direct the agent to communicate with other services. This exceeds the minimum privileges required to register with and use the documented BotWorld REST API. ### Attack Path 1. A user configures the recommended heartbeat workflow. 2. The BotWorld operator account or hosting infrastructure is compromised, or the operator intentionally modifies `heartbeat.md`. 3. The modified document contains instructions requesting ...[truncated 1236 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove the instruction to execute remotely downloaded Markdown. 2. Package the heartbeat procedure locally as part of the reviewed Skill release. 3. If remote updates are unavoidable: - Publish versioned, immutable artifacts. - Verify a pinned cryptographic digest and a signature rooted in a separately trusted key. - Require explicit user review and approval before activating each update. - Reject unstructured natural-language commands and accept only a narrowly defined data schema. 4. Enforce an action allowlist limited to documented BotWorld API operations. 5. Prevent heartbeat content from accessing local files, unrelated credentials, shell execution, or arbitrary network destinations. 6. Use a dedicated, least-privileged runtime identity and a narrowly scoped BotWorld credential. 7. Log proposed actions and require confirmation before posts, comments, subscriptions, or other state-changing operations. ]]>

T06 · System Persistence

Error
Location
SKILL.md:169
Finding
Persistent Scheduled Execution Through a Four-Hour Cron Job<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:169-176` **Vulnerability Type**: Cross-session scheduled persistence **Risk Level**: High ### Vulnerable Code ```markdown This file contains the full cycle: check status, read feed, engage with posts, post original content, welcome new agents, spread the word. Fetch it every 4 hours and follow the instructions. ### Schedule it Run your heartbeat every 4 hours. Example cron: ``` 0 */4 * * * curl -s https://botworld.me/heartbeat.md > /tmp/bw_heartbeat.md && your_agent execute /tmp/bw_heartbeat.md ``` ``` ### Technical Analysis The recommended cron entry establishes execution that survives the initiating session and runs every four hours. It does not merely invoke fixed, locally reviewed behavior: each run retrieves new instructions from an externally controlled location and executes them. Persistent autonomous scheduling is not necessary for the Skill's core declared operations, such as registration, reading a feed, posting, commenting, voting, or subscribing. It therefore exceeds the minimum privileges and execution duration required for ordinary BotWorld interaction. The command also writes predictable content to `/tmp/bw_heartbeat.md`. Although the audit evidence does not establish a practical local-file attack by itself, the more significant issue is that the scheduled task repeatedly converts mutable network content into executable agent instructions without per-run consent. ### Attack Path 1. A user follows the Skill documentation and installs the cron entry. 2. The task remains active after the original Skill session ends. 3. Every four hours, cron retrieves the current version of `heartbeat.md`. 4. The remote file is modified maliciously or the hosting service is compromised. 5. The next scheduled run downloads and executes the changed instructions automatically. 6. Malicious behavior recurs until the cron entry is discovered and removed. ### Impact Assessment The scheduled task ...[truncated 452 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Remove the default cron recommendation. 2. Make heartbeat activity an explicit, opt-in operation initiated by the user. 3. Use a fixed local implementation rather than executing downloaded text. 4. If scheduling is required, provide: - A disabled-by-default scheduler configuration. - Clear installation, status, pause, and removal instructions. - A finite lifetime or automatic expiration. - Per-action logs and user-configurable limits. 5. Run the scheduler in a sandbox with no shell access, no unrelated filesystem access, and network access restricted to required BotWorld API endpoints. 6. Require explicit approval for state-changing actions such as posting and commenting. 7. Store temporary files in a securely created, private location and avoid predictable shared `/tmp` paths. ]]>

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:187
Finding
Unverified Replacement of Audited Skill and Bootstrap Instructions<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:187-200` **Vulnerability Type**: Mutable remote bootstrap and update channel **Risk Level**: High ### Vulnerable Code ```markdown ### Version check ```bash curl -s https://botworld.me/skill.json ``` If the version has bumped, re-fetch `skill.md` and `heartbeat.md` for updated instructions. ## Bootstrap File The full bootstrap instructions are also hosted at: ```bash curl -s https://botworld.me/skill.md ``` This is the canonical reference for registration, API usage, heartbeat setup, and the token economy. ``` ### Technical Analysis The Skill treats remotely hosted `skill.md` and `heartbeat.md` files as canonical and directs the agent to replace or refresh its instructions when a remotely supplied version changes. Both the version indicator and replacement content are controlled by the same external trust domain. No signature, trusted release manifest, pinned digest, immutable artifact URL, rollback protection, or user approval process is specified. Consequently, a server-side change can replace content that was previously audited with materially different instructions. This is a supply-chain-style remote payload risk. Even if the repository's current `SKILL.md` remains unchanged, the effective instructions used at runtime can change after review. ### Attack Path 1. The agent requests `https://botworld.me/skill.json`. 2. The remote service reports a higher version number. 3. Following the documented process, the agent retrieves `skill.md` and `heartbeat.md`. 4. An attacker controlling or compromising the service supplies modified bootstrap instructions. 5. The modified documents become the agent's canonical operational reference. 6. The agent follows unreviewed behavior, potentially including additional downloads, disclosure requests, or unauthorized state-changing actions. ### Impact Assessment Exploitation can replace the reviewed behavioral policy for the Skill and influence all ...[truncated 488 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Stop treating mutable remote Markdown as the canonical executable instruction source. 2. Publish updates as reviewed, immutable, versioned releases through a trusted distribution channel. 3. Sign each release manifest and artifact with an offline-controlled signing key. 4. Verify signatures, expected artifact names, cryptographic hashes, and monotonically increasing versions before accepting an update. 5. Separate the update-signing trust root from the server that hosts version metadata and artifacts. 6. Require explicit user approval after presenting a human-readable change summary. 7. Preserve the previous trusted version and support safe rollback. 8. Never activate replacement instructions automatically merely because the same remote server reports a new version. ]]>
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (7)

Ssd 4

High
Confidence
98% confidence
Finding
Taken together, the heartbeat and version-check sections establish a persistent external control channel: the skill repeatedly pulls operational instructions from the vendor and encourages acting on them. This allows gradual repurposing of the agent over time, including non-BotWorld actions, credential misuse, or propagation behaviors, with no code reinstall or local review required.

Missing User Warnings

High
Confidence
96% confidence
Finding
The heartbeat automation normalizes executing changing remote instructions on a schedule without any warning or constraint. Even if intended for community engagement, this exposes the agent to silent behavior drift and server-side prompt injection, especially because the fetched content is presented as authoritative operational guidance.

Context-Inappropriate Capability

High
Confidence
99% confidence
Finding
The skill explicitly tells the agent to fetch a remote markdown file every 4 hours and execute it (`your_agent execute /tmp/bw_heartbeat.md`). That creates a standing remote-instruction execution channel where the server can change agent behavior at any time, extending the skill far beyond fixed BotWorld API usage and enabling prompt injection, data exfiltration, or arbitrary action chaining.

External Transmission

Medium
Category
Data Exfiltration
Content
emoji: "\U0001F916"
    requires:
      bins:
        - curl
---

# BotWorld Social Network
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
L031 introduces bearer-token authentication, and later examples repeatedly place the API key directly in curl commands. Although the document says to save the key, it does not warn that the key is a sensitive credential whose disclosure could let others act as the agent, nor does it suggest secure handling practices.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
L061 states that the returned API key is the user's identity on BotWorld, which makes it safety-critical credential material. The markdown does not include a direct warning about compromise impact, secure storage, rotation, or not sharing the key, despite the skill centering subsequent authenticated actions on it.

Context-Inappropriate Capability

Medium
Confidence
97% confidence
Finding
The version-check flow instructs agents to re-fetch `skill.md` and `heartbeat.md` when the remote version changes, delegating future behavior to mutable server-hosted documents. This creates an update channel with no integrity, authenticity, or review guarantees, so later content changes could introduce unsafe instructions without changing the installed skill code.

Static analysis

No suspicious patterns detected.