Back to skill

Security audit

seo-compliance-checker

Security checks for vulnerabilities and agentic risk

Overview

The skill has a coherent Chinese SEO/compliance purpose, but it needs Review because one helper script can execute injected local code and the API workflow sends user content off-device without clear consent or privacy boundaries.

Install only after the suggestions.sh code-injection bug is fixed. Treat checks as remote API submissions: do not send confidential drafts, client copy, regulated content, or secrets unless you trust the API operator and its data handling. Review or restrict the default API endpoint and token configuration before use.

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
scripts/suggestions.sh:33
Finding

Arbitrary Python Code Execution Through Unsafely Interpolated Keyword

Content
View full analysis
/dev/null || echo "$KEYWORD")" \ --connect-timeout 10 \ ``` ### Technical Analysis The user-controlled `KEYWORD` variable is directly interpolated into Python source code supplied to `python3 -c`: ```python import urllib.parse; print(urllib.parse.quote('$KEYWORD')) ``` Although the shell expansion occurs within a double-quoted shell argument, the expanded keyword becomes part of the Python program itself. An attacker can include a single quote and Python statement delimiters in the keyword to terminate the intended string, close the surrounding function calls, and append arbitrary Python statements. For example, a keyword shaped like the following can escape the intended Python string and invoke an operating-system command: ```text ')); __import__("os").system("id"); # ``` The constructed Python source would be equivalent to: ```python import urllib.parse; print(urllib.parse.quote('')); __import__("os").system("id"); #')) ``` This is valid Python and executes the injected operating-system command before `curl` sends the resulting request. URL encoding therefore does not protect the script because the injection occurs before the keyword is encoded. ### Attack Path 1. An attacker supplies a crafted keyword to `scripts/suggestions.sh`, directly or through an Agent request that causes the script to be invoked. 2. The script assigns the untrusted first argument to `KEYWORD`. 3. Lines 33–35 insert `KEYWORD` directly into the source passed to `python3 -c`. 4. The crafted keyword terminates the intended Python string and appends attacker-controlled Python statements. 5. Python evaluates the injected statements loca ...[truncated 1082 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (11)

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/check.sh (reported line 13)May include surrounding context.

sh
set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
ENV_FILE="$SCRIPT_DIR/../.env"

# Load env
if [[ -f "$ENV_FILE" ]]; then

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/suggestions.sh (reported line 12)May include surrounding context.

sh
set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
ENV_FILE="$SCRIPT_DIR/../.env"

# Load env
if [[ -f "$ENV_FILE" ]]; then

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding

The skill advertises executable shell scripts and outbound network/API access but declares no tool scope or permission boundaries. This creates an over-privileged integration pattern where an agent may invoke shell or transmit user data externally without explicit governance, increasing risk of unintended command execution or data exfiltration.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger list is excessively broad and includes generic phrases such as SEO/compliance checker terms that could cause the skill to activate on unrelated user requests. Over-broad activation raises the chance that unrelated or sensitive content is routed into a skill that performs external API checks and script execution, expanding exposure unnecessarily.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill explicitly instructs use of a real-time external API to scan user-provided content, yet it does not clearly warn that submitted text may leave the local environment. Users may provide drafts, product copy, campaign plans, or other sensitive business content without informed consent, creating a direct privacy and confidentiality risk.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
94% confidence
Finding

The script uses curl to POST content to an external service, which is an actual external data transmission path. In this skill's context, the danger is elevated because users may assume a local compliance checker, yet the tool sends full text and metadata to a third-party endpoint; if that content is confidential, this becomes a meaningful data-exposure risk.

Content

Scanner excerpt · scripts/check.sh (reported line 170)May include surrounding context.

sh
}')

# Call API
RESPONSE=$(curl -s -w "\n%{http_code}" \
  -X POST "${API_BASE}/check" \
  -H "Content-Type: application/json" \
  ${AUTH_HEADER:+-H "Authorization: Bearer $TOKEN"} \

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The script transmits user-supplied text, title, and keywords to a remote API endpoint, but the normal execution path does not clearly warn users that their content is being sent off-host. This creates a privacy and data-handling risk, especially because the tool is marketed for arbitrary content checking and may be used on sensitive drafts, client copy, or regulated business text.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The script transmits user-supplied content to a remote third-party API endpoint but provides no clear runtime notice, consent prompt, or nearby disclosure that the queried keyword leaves the local machine. In a compliance-checking skill, users may paste sensitive draft marketing copy, product terms, or regulated-content phrases, so undisclosed outbound transmission creates a privacy and data-handling risk even if the transport itself is ordinary HTTPS.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
96% confidence
Finding

The instruction "Always write in natural, fluent Chinese — never translated English" forces a language policy for all outputs. This is a natural-language policy constraint that removes user choice and may conflict with broader organizational expectations to respect user language preferences unless explicitly justified or opted into.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The script's descriptive text, help output, and user-facing messages are entirely in Chinese, and the usage examples assume Chinese-language input. Under the stated policy, forcing a specific language without opt-in can be a locale-policy violation unless the constraint is explicitly documented and justified.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The script description, usage comments, and user-facing output are all written in Chinese and oriented to Chinese SEO/compliance behavior, with no indication that users may choose another language. This can violate language/locale policy when a skill implicitly forces one language without opt-in or justification.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.