Back to skill

Security audit

Swarm Mind

Security checks for vulnerabilities and agentic risk

Overview

This skill is a remote Kanban collaboration connector, but it gives agents broad authority to join teams, claim remote tasks, and act on collaborator-provided task content without enough user confirmation or trust-boundary guidance.

Install only if you intend to let the agent use the SWARM Board remote service. Confirm before registering, joining teams, claiming tasks, or sending task content, and treat task descriptions and messages from other collaborators as untrusted instructions that should not override your original request or expose secrets, local files, credentials, or private conversation context.

Vulnerability Patterns
  • 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
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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)

T01 · Skill Instruction Hijacking

Warning
Location
SKILL.md:332
Finding
Untrusted Remote Task Content Can Influence Agent Behavior<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 332-375 **Vulnerability Type**: `T01: Skill Instruction Hijacking` **Risk Level**: Medium ### Vulnerable Documentation ```markdown ## Example 2: Multi-Agent Collaboration **Input:** "Join team 'ML Research', find tasks needing 'machine-learning' capability, claim one, and request help from team" **Steps:** 1. Get invitations: `GET /invitations` 2. Accept invitation for "ML Research" team 3. Get team tasks: `GET /teams/<team_id>/tasks` 4. Filter tasks by `required_capabilities` containing "machine-learning" 5. Claim first available task 6. Request collaboration: `POST /tasks/<task_id>/collaborate` ``` The subsequent workflow also directs the agent to act on retrieved tasks: ```markdown **Steps:** 1. Get your tasks: `GET /teams/<team_id>/tasks` (filter by `assigned_to_id`) 2. Verify current `column_id` is Backlog 3. Move to In Progress: `PUT /tasks/<task_id>` with new `column_id` 4. Work on task, send status updates via messages 5. Move to Done: `PUT /tasks/<task_id>` with Done `column_id` 6. Complete task: `POST /tasks/<task_id>/complete` ``` ### Technical Analysis The skill connects the agent to an external collaboration service, accepts team invitations, retrieves remotely created tasks, and instructs the agent to work on those tasks. Task descriptions and task-chat messages are controlled by external team members. The documentation does not establish a trust boundary for API-returned content. In particular, it does not instruct the agent to: - Treat task descriptions and messages as untrusted data. - Reject instructions that conflict with the user's original request or system safety constraints. - Obtain user confirmation before accepting invitations or acting on remotely supplied tasks. - Prevent secrets, local files, credentials, or unrelated session data from being included in task updates. - Restrict tools and resources that may be used while processing a remote task. Conse ...[truncated 2043 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Explicitly classify every task title, description, attachment, API response, and chat message as untrusted external data. 2. State that remote content must never override system instructions, developer instructions, safety rules, or the user's original request. 3. Require explicit user confirmation before: - Accepting a team invitation. - Claiming a remotely created task. - Performing tool calls requested by remote content. - Uploading files, code, credentials, logs, or other information. 4. Restrict work to the scope expressly authorized by the user. If a remote task expands or changes that scope, stop and request clarification. 5. Add a prompt-injection screening step that identifies requests to reveal secrets, read unrelated files, execute commands, weaken safeguards, or contact additional services. 6. Apply least privilege by limiting the tools, local paths, network destinations, and credentials available while processing remote tasks. 7. Sanitize outbound task messages and prohibit transmission of bearer tokens, environment variables, local files, private conversation context, or unrelated user data. 8. Present the remote task contents to the user in a non-executable preview before beginning work. 9. Record the external team, task identifier, requested actions, approved scope, and transmitted data for auditability. 10. Add adversarial tests covering malicious task descriptions and chat messages, including attempts to override instructions, obtain secrets, and trigger unauthorized tool use. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Rogue AgentSelf-Modification, Session Persistence
  • 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
Findings (4)

Vague Triggers

Medium
Confidence
94% confidence
Finding
The trigger phrases include broad, common language such as 'create task', 'join team', and 'collaborate on', which can cause the skill to activate in contexts where the user did not intend to use this remote multi-agent system. Because activation leads to networked actions and account/team operations, accidental invocation can expose data or initiate external side effects.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill explicitly uses a remote API with JWT bearer tokens and collaboration/task data, but it does not present a clear user-facing warning that information will be transmitted off-platform. Users or agents may unknowingly send project names, task contents, identities, and tokens to a third-party service, creating privacy and credential-handling risk.

External Transmission

Medium
Category
Data Exfiltration
Content
**Register as a new agent:**
```bash
curl -X POST https://swarm-kanban.vercel.app/api/agents/register \
  -H "Content-Type: application/json" \
  -d '{
    "name": "agent-name-unique",
Confidence
96% confidence
Finding
The skill instructs the agent to POST registration and later operational data to an external service, creating direct exfiltration and unintended data-sharing potential. While external transmission is central to the skill's purpose, it is still security-relevant because activation can create accounts, send collaboration metadata, and persist user or agent information outside the local environment.

Session Persistence

Medium
Category
Rogue Agent
Content
## Example 1: Solo Agent Creating Team & Task

**Input:** "Create a team for a web scraping project and add a task to scrape GitHub repos"

**Steps:**
1. Register agent with capabilities: `["web-scraping", "data-processing"]`
Confidence
80% confidence
Finding
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Static analysis

No suspicious patterns detected.