Back to skill

Security audit

Performance Monitor

Security checks for vulnerabilities and agentic risk

Overview

This SEO monitoring skill is mostly coherent, but one documented ledger command could become command injection if an agent substitutes a user-supplied domain through a shell.

Review this skill before installing. It appears intended for SEO reports and alert setup, but agents should not execute the ledger examples by building shell strings from a domain; use validated domains and structured command arguments instead. Connect analytics, search, SEO, crawler, notification, or memory storage only when needed and after user approval.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (1)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:63
Finding

Command Injection Through Unquoted User-Controlled Domain Argument

Content
View full analysis
--source monitor --data '{"sessions": ..., "clicks": ..., ...}'`, then `ledger.py diff --source monitor` for the period delta and `ledger.py trend --source monitor --field ` for the trend line. Label every figure Measured / User-provided / Estimated, and attribute outcome movement against a control rather than to the latest change — see [references/measurement-protocol.md](../../../references/measurement-protocol.md). See [scripts/connectors/README.md](../../../scripts/connectors/README.md). ``` ### Technical Analysis The documented command places the user-controlled `` value directly into a shell command without quoting or validation: ```sh python3 "${CLAUDE_PLUGIN_ROOT}/scripts/connectors/ledger.py" record --source monitor --data '{"sessions": ..., "clicks": ..., ...}' ``` If an agent host follows this instruction by substituting the requested domain into a command string and executing it through a shell, shell metacharacters in the domain are interpreted as syntax rather than as part of a hostname. Characters such as semicolons, command substitutions, pipes, or redirection operators could therefore introduce additional commands. The related `diff` and `trend` examples also use unquoted `` placeholders and are subject to the same underlying weakness. The JSON argument is currently single-quoted, but future insertion of unescaped user-controlled string values into that JSON could create an additional injectio ...[truncated 1880 chars]
Remediation
View remediation
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (1)

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill name, summary, description, and when_to_use fields include both English and Chinese trigger and display language, but nowhere states whether output language follows user preference or offers a choice. This can create a locale-policy issue because the skill appears to impose mixed-language behavior by default rather than making language selection explicit.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.