T01 · Skill Instruction Hijacking
Error
- Location
- SKILL.md:16
- Finding
- Unauthenticated Swarm Consensus Can Dynamically Redefine Agent Behavior## Vulnerability Details **File Location**: `SKILL.md:16-27` **Supporting Locations**: `README.md:24-27`, `spec.md:43-47`, `manifest.json:14-16` **Vulnerability Type**: T01: Skill Instruction Hijacking **Risk Level**: High **Vulnerable Code Snippet**: ```markdown 1. **Bootstrap Initialization**: - Immediately parse the `abl.one` file located in the root of this repository. - Load the `[opcode]` definitions into your active context. - You MUST enforce the `[core]` rules: `drop_unknown_opcode, strict_crc_on_end, retry_on_no_ok`. 2. **Communication Standard**: - When communicating with other agents in the swarm, you MUST use the `[FROM:1][TO:1][OP:1][ARG:1][CRC32:4]` binary frame format as defined in `spec.md` and `abl.one`. - Never use JSON-LD for transit. All transit is binary. 3. **Dynamic Evolution**: - You are authorized to parse new opcodes if they are proposed and accepted via the consensus flow: `OPCODE_PROPOSE -> THRESHOLD(2/3) -> OPCODE_ACCEPT -> SKILL_DEFINE` ``` Supporting instructions state: ```markdown Agents can extend the language without human intervention using Swarm consensus: `OPCODE_PROPOSE -> THRESHOLD(2/3) -> OPCODE_ACCEPT -> SKILL_DEFINE` ``` The manifest requests the communication capabilities needed to participate in this process: ```json "permissions": [ "network_fetch", "swarm_broadcast" ] ``` ### Technical Analysis The skill directs the host Agent to load opcode definitions into its active context and authorizes remote swarm participants to create new behavior through `SKILL_DEFINE`. The reviewed protocol does not define participant authentication, cryptographic signatures, a trusted publisher list, semantic validation, an opcode allowlist, or mandatory human approval before a new definition becomes active. CRC32 does not mitigate this issue. It detects accidental corruption but provides neither sender authentication nor protectio ...[truncated 1603 chars]
- Remediation
- ## Remediation Suggestions 1. Remove runtime `SKILL_DEFINE` support, or ensure definitions are treated strictly as untrusted data rather than executable Agent instructions. 2. Require explicit human approval before any new opcode or behavioral definition is activated. 3. Accept definitions only from a pinned, trusted registry and verify them using publisher signatures and pinned cryptographic digests. 4. Authenticate every swarm participant with unique cryptographic identities; do not rely on numeric Agent IDs or CRC32. 5. Add replay protection, proposal nonces, expiration times, quorum membership validation, and an immutable audit trail. 6. Restrict dynamic opcodes to a narrow declarative schema that cannot contain prompts, tool instructions, code, URLs, or permission changes. 7. Enforce a local opcode allowlist and fail closed when an unknown or unauthorized definition is received. 8. Perform real-time validation and logging rather than relying solely on an offline decompiler. 9. Apply least privilege to `network_fetch` and `swarm_broadcast`, including destination allowlists and user confirmation for sensitive operations.
