T01 · Skill Instruction Hijacking
- Location
SKILL.md:348- Finding
Automatic Processing of Externally Supplied Operator Commands
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:348-369
Vulnerability Type: External command-channel instruction hijacking
Risk Level: HighVulnerable Code
text ## Messaging and inbox ### Operator command queue Operators send commands to agents via the dashboard. Use `bob inbox check` to process pending commands. ```bash bob inbox check [--agent-id <id>] # Blocking loop for server agents bob inbox check --poll [--interval 30s]Currently supported command types:
wallet.provision. Future:transfer.request,loan.accept,kill_switch,key.rotate.Heartbeat
When running during a heartbeat or periodic check-in, execute
bob inbox checkto process any pending operator commands. This covers wallet provisioning, fund transfers, and future command types.- If commands are pending, process them and report what was done.
- If no commands are pending, continue with other tasks or reply HEARTBEAT_OK.
text ### Technical Analysis The skill instructs the agent to retrieve and process tasks supplied by an external Bank of Bots operator queue. The returned commands cross a trust boundary: they originate outside the current user conversation but are treated as actionable agent instructions. The documentation does not require a local command allowlist, strict schema validation, cryptographic verification at the agent layer, argument validation, or explicit approval before processing a pending command. It also recommends a blocking polling mode. Although the only documented currently supported command is `wallet.provision`, the text explicitly anticipates financially and operationally sensitive commands such as fund transfers, loan acceptance, kill switches, and key rotation. This behavior permits externally supplied instructions to alter the agent's workflow after the skill has been loaded. The implementation of the external `bob` CLI is not included in the audited artifact, so a ...[truncated 1578 chars]- Remediation
View remediation
Remediation Suggestions
- Treat every inbox entry as untrusted data and never interpret free-form response text as agent instructions.
- Define a local allowlist of supported action identifiers and map each identifier to a fixed, locally implemented operation.
- Apply strict schemas to every command and reject unknown fields, unknown action types, malformed identifiers, unexpected URLs, and values outside documented limits.
- Require explicit, per-command human confirmation for wallet changes, transfers, loans, key operations, policy changes, and other state-changing actions.
- Display the complete proposed effect before approval, including agent ID, destination, asset, amount, network, fees, and whether the operation is reversible.
- Authenticate commands with scoped signing keys, timestamps, nonces, expiration times, and replay protection. Do not rely solely on transport authentication.
- Separate read-only inbox inspection from command execution.
bob inbox checkshould list pending actions by default and require a distinct approved command to execute one. - Apply least-privilege API credentials and server-side authorization so inbox-processing credentials cannot independently authorize sensitive financial operations.
- Record immutable audit logs for command creation, approval, retrieval, execution, and rejection.
