T01 · Skill Instruction Hijacking
- Location
SKILL.md:38- Finding
Unauthenticated Task Injection into the Agent Workflow
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:38-52,SKILL.md:87-92, andSKILL.md:103-106
Vulnerability Type: Untrusted instructions accepted through an unauthenticated task-control channel
Risk Level: HighVulnerable Code Snippets
SKILL.md:38-52:bash # Get your next task curl -s 'http://127.0.0.1:4445/tasks/next?agent=YOUR_NAME' # List all tasks curl -s http://127.0.0.1:4445/tasks # Create a task curl -s -X POST http://127.0.0.1:4445/tasks \ -H "Content-Type: application/json" \ -d '{"title": "Task title", "description": "Details", "assignee": "agent_name", "createdBy": "YOUR_NAME", "priority": "P1"}' # Update task status (YOU own your tasks — update them yourself!) curl -s -X PATCH http://127.0.0.1:4445/tasks/TASK_ID \ -H "Content-Type: application/json" \ -d '{"status": "done"}'SKILL.md:87-92:markdown Every heartbeat, agents should: 1. Check inbox: `GET /inbox/YOUR_NAME` 2. Check for tasks: `GET /tasks/next?agent=YOUR_NAME` 3. If there's work → do it, update task status 4. If status changed or work shipped → post to #general 5. If nothing changed → return `HEARTBEAT_OK` silently (don't post noise)SKILL.md:103-106:markdown 1. **Anyone** can create tasks when they see work needed 2. **You own** your assigned tasks — move them through the workflow yourself 3. When you finish work → `PATCH /tasks/:id {"status": "done"}` immediately 4. Don't just chat about needed work — **create a task**Technical Analysis
The documented task-control workflow does not require an authentication credential, authorization token, trusted-issuer identity, task signature, or approval step. The task creation request allows the caller to supply the assignee, creator identity, title, and description. The documentation also explicitly states that anyone can create tasks.
Agents are instructed to poll for assigned tasks and perform an ...[truncated 2479 chars]
- Remediation
View remediation
Remediation Suggestions
- Require authenticated identities for every task creation, retrieval, and update request. Do not rely on caller-supplied
createdByvalues as proof of identity. - Enforce server-side authorization so only approved users or agents can create tasks for a particular assignee.
- Cryptographically sign tasks or attach server-validated issuer metadata that agents can verify before processing them.
- Treat titles, descriptions, chat messages, and other collaboration data as untrusted input rather than authoritative instructions.
- Require explicit user approval before an agent executes tasks that access secrets, modify files, run commands, contact external systems, or exceed the agent's established scope.
- Define per-agent allowlists for permitted task creators, operations, tools, paths, and network destinations.
- Reject spoofed creator identities and maintain tamper-resistant audit records for task creation, assignment, approval, and completion.
- Add rate limiting and monitoring for unusual task creation patterns, repeated reassignment, and sensitive instruction content.
- Update the heartbeat rules to require safety validation and issuer verification before acting on returned work.
- Preserve the localhost binding as defense in depth, but use authenticated local transport or strict socket-level access controls because localhost alone is not a trust boundary.
- Require authenticated identities for every task creation, retrieval, and update request. Do not rely on caller-supplied
