Back to skill

Security audit

Analyst Watchdog

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent local monitoring watchdog, but its implementation lets untrusted localhost API data influence agent-consumed files and can read JSON files outside its intended score directory.

Install only if you control the localhost service on port 8765 and are comfortable with unattended local file writes. Before scheduled use, constrain the output directories, validate API response fields, restrict score keys to safe identifiers, and ensure downstream agents treat generated Markdown as untrusted data.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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
Findings (2)

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
scripts/analyst_agent.py:145
Finding

API-Controlled Path Traversal Allows Unauthorized Local JSON File Reads

Content
View full analysis
Remediation
View remediation
list: if not re.fullmatch(r"[A-Za-z0-9_-]+", key): log("WARNING: Rejected invalid score key") return [] scores_dir = ( WORKSPACE / "projects" / "hybrid-control-plane" / "data" / "scores" ).resolve() score_file = (scores_dir / f"{key}.json").resolve() if score_file.parent != scores_dir: log("WARNING: Rejected score path outside score directory") return [] try: with score_file.open() as f: records = json.load(f) if not isinstance(records, list): return [] return [ round(float(record["score"]), 4) for record in records[-10:] if isinstance(record, dict) and "score" in record ] except (FileNotFoundError, OSError, ValueError, TypeError, json.JSONDecodeError): return [] ``` ]]>

T01 · Skill Instruction Hijacking

Warning
Location
scripts/analyst_agent.py:205
Finding

Untrusted Local API Content Is Injected into Agent and Alert Channels

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (3)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
94% confidence
Finding

The skill advertises operational behavior that includes local file writes and polling a localhost API, but it does not declare an explicit tool/permission scope. That mismatch weakens least-privilege controls and can cause an orchestrator or reviewer to underestimate what the skill is allowed to do, especially for an autonomous scheduled agent.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The description uses broad activation language like 'use when you need an autonomous agent that monitors a system and produces structured analysis,' which can cause the skill to be invoked in situations beyond the author's intended scope. For a skill that runs autonomously and writes alerts/files, overbroad matching increases the chance of unintended execution and unexpected state changes on the host.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The markdown describes autonomous scheduled file writes and alert generation, including an urgent alert file that is sent and deleted, but it does not prominently warn users that the skill will modify local files without ongoing interaction. In an autonomous context, undisclosed persistence and file mutation are risky because they can surprise users, overwrite artifacts, or create covert signaling channels between agents/processes.

Content

No source excerpt is available for this finding.