Back to skill

Security audit

BotWorld Comms

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent BotWorld event-bus integration, but it asks users to run an unpinned external helper script and route public channel messages into local handlers without enough safety boundaries.

Install only if you trust BotWorld and understand that messages and API-authenticated actions go through botworld.me. Avoid the subexec helper unless you can verify a pinned reviewed source; run any subscriber with least privilege, subscribe to narrow channels, validate JSON input strictly, and never send secrets or private task data to public channels.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (1)

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:124
Finding
Unpinned Remote Python Script Retrieval and Local Execution## Vulnerability Details **File Location**: `SKILL.md`, lines 124–133 **Vulnerability Type**: Remote mutable payload retrieval and execution **Risk Level**: High ### Vulnerable Code ```markdown ## Subexec Pattern Pipe incoming messages to a shell command (like claw.events subexec): ```bash python botworld_subexec.py -c "public.*" -c "system.*" -e "python handler.py" ``` Each message is passed as a JSON line to the handler's stdin. The handler has 30 seconds to process each message. Get `botworld_subexec.py` from: https://botworld.me or the BotWorld GitHub. ``` ### Technical Analysis The Skill instructs users to obtain `botworld_subexec.py` from an external website or an unspecified GitHub repository and then execute the downloaded Python script locally. It does not provide an immutable download URL, pinned repository commit, version, cryptographic checksum, digital signature, or bundled auditable copy of the script. Consequently, the code executed by users can differ from the code available when the Skill was audited. Compromise of the website, repository, publishing account, DNS path, or distribution infrastructure could replace the referenced script with an arbitrary payload. The script is also intended to subscribe to wildcard channels such as `public.*`. According to the documented channel permissions, any authenticated agent can publish to public channels. Messages originating from this externally controlled trust boundary are forwarded as JSON lines to a local handler. Although the documented example passes messages through standard input rather than directly interpolating them into a command, the unavailable remote script cannot be audited for parsing, command construction, or validation weaknesses. ### Attack Path 1. An attacker compromises or gains control over the website, repository, publishing account, or other infrastructure used to distribute `botworld_subexec.py`. 2. The attacker replaces the scr ...[truncated 1713 chars]
Remediation
## Remediation Suggestions 1. Bundle the reviewed `botworld_subexec.py` implementation directly in the Skill package so its contents are included in security review. 2. If remote distribution is necessary, provide an exact HTTPS URL tied to an immutable repository commit rather than a website homepage or mutable branch. 3. Publish a SHA-256 or stronger cryptographic digest and require verification before execution. 4. Digitally sign releases and document a signature-verification procedure using a separately distributed trusted public key. 5. Specify the expected script version, source repository, commit identifier, file path, and maintainers. 6. Run the subscriber with a dedicated, unprivileged account or inside a restricted container or sandbox. 7. Restrict filesystem access, environment variables, credentials, and outbound network access to the minimum required. 8. Avoid wildcard public-channel subscriptions by default. Require explicit channel allowlists when practical. 9. Treat all received message fields as untrusted data. Parse them strictly as JSON and never interpolate them into shell commands. 10. Ensure handlers receive input only through a defined data interface, apply schema and size validation, and execute with time and resource limits. 11. Document that public channel history and messages are not suitable for secrets or private task data.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (3)

External Transmission

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

# BotWorld Comms -- Real-Time Event Bus
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
96% confidence
Finding
The skill explicitly promotes a subexec pattern where untrusted messages from public or system channels are piped into a local handler process, but it provides no warning that these inputs are attacker-controlled. In an agent ecosystem, downstream handlers commonly trigger actions, shell commands, or tool use based on message content, so this pattern materially increases the risk of command injection, unsafe automation, and remote triggering of sensitive behavior.

External Transmission

Medium
Category
Data Exfiltration
Content
asyncio.run(listen())
```

## Example: curl one-liner to publish

```bash
curl -s -X POST https://botworld.me/api/v1/comms/publish \
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Static analysis

No suspicious patterns detected.