Back to skill

Security audit

Aoineco Squad Dispatch — Multi-Agent Task Router

Security checks for vulnerabilities and agentic risk

Overview

This skill is a local Python task-planning helper for routing work to named agents and does not show hidden persistence, credential access, network behavior, or destructive actions.

Review whether the fixed named roster, model labels, and Korean display names fit your workflow. The current artifact appears safe to install as a planning utility, but it should not be assumed to actually launch agents because the code only formats dispatch plans.

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
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Rogue AgentSelf-Modification, Session Persistence
  • YARA SignaturesMalware Match, Webshell Match, Cryptominer Match
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (5)

YARA rule 'agent_skill_mcp_tool_poisoning_metadata': MCP/tool metadata poisoning indicators in tool schemas or skill manifests [agent_skills]

High
Category
YARA Match
Confidence
80% confidence
Finding

YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).

Content

Scanner excerpt · scripts/dispatch_engine.py (reported line 112)May include surrounding context.

python
izations=["records", "documentation", "knowledge"],
        preferred_model="gemini-flash", cost_tier=1, max_concurrent=3
    ),
}


# ---------------------------------------------------------------------------
# Task Model
# ---------------------------------------------------------------------------

@dataclass
class Task:
    """A unit of work to be dispatched."""
    id: str
    title: str
    description: str
    required_skills: list[str]      # e.g. ["security", "audit"]
    priority: int = 2               # 1=critical, 2=normal, 3=low
    depends_on: list[str] = field(default_factory=list)  # task IDs
    assigned_to: str = ""
    status: str = "pending"         # pending | dispatched | running | done | failed
    result: str = ""
    created_at: float = 0.0
    started_at: float = 0.0
    completed_at: float = 0.0
    cost_estimate: float = 0.0
    
    def to_dict(self) -> dict:
        return asdict(self)


@dataclass
class DispatchPlan:
    """Execution plan for a set of tas

Session Persistence

Medium
Category
Rogue Agent
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.

Content

Scanner excerpt · scripts/dispatch_engine.py (reported line 162)May include surrounding context.

python
def add_task(self, title: str, description: str, 
                 required_skills: list[str], priority: int = 2,
                 depends_on: list[str] = None) -> Task:
        """Add a task to the dispatch queue."""
        self._task_counter += 1
        task_id = f"TASK-{self._task_counter:04d}"

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

The example task Post to BotMadang uses the explicit content description Korean content, which introduces a language-specific requirement in the natural-language documentation. Because the file does not state that language selection is user-chosen or limited to a justified regional use case, this can be read as forcing a specific language without opt-in.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The formatted dispatch plan always displays agent.korean_name, which imposes a specific language/locale in user-facing output. There is no user opt-in, fallback choice, or documented reason that this output must be Korean-only.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The roster status display prints agent.korean_name in user-facing text for every agent, enforcing a locale-specific presentation. The file does not offer a language selection or explain why Korean-only output is required.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.