Back to skill

Security audit

AI Search Visibility (GEO)

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed SEO/GEO workflow with one opt-in IndexNow submission script and no evidence of hidden persistence, credential theft, or unrelated behavior.

Install only if you are comfortable with a skill that can guide edits to public SEO files and can optionally run a Node script that submits URLs to IndexNow. Set INDEXNOW_KEY only for the intended run, keep the generated key file out of git, and validate sitemap/CLI URLs against your own domain before using the ping script in automation.

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

Warning
Location
scripts/indexnow-ping.js:137
Finding

Unvalidated URLs Are Submitted Under the Configured IndexNow Host Identity

Content
View full analysis
0 ? cliUrls : urlsFromSitemap(); if (urls.length === 0) { console.log('[indexnow] No URLs to submit. Exiting.'); return; } ``` ### Technical Analysis The script accepts URLs directly from command-line arguments or extracts them from sitemap `` elements. It then places those values into the IndexNow `urlList` without parsing or validating them. No local check ensures that: - Each entry is a syntactically valid URL. - The scheme is restricted to `http:` or `https:`. - The URL hostname matches `INDEXNOW_HOST`. - Embedded URL credentials are prohibited. - Subdomains are accepted only under an explicit policy. - `INDEXNOW_HOST` itself is a valid hostname rather than an unexpected string. The network destination is fixed to `api.indexnow.org`, so this issue does not provide conventional server-side request forgery or arbitrary outbound-network access. However, the missing validation violates the documented trust boundary that the script submits only the operator's own public URLs. The remote IndexNow service may reject unrelated URLs, but remote validation should not replace local input validation. ### Attack Path 1. An attacker gains control over a sitemap consumed through `SITEMAP_PATH`, or over arguments supplied to `scripts/indexnow-ping.js` by build automation. 2. The attacker adds URLs belonging to unrelated domains, malformed URLs, or URLs using unsupported schemes. 3. The script accepts the entries without validation: ```bash node scripts/indexnow-ping.js https://unrelated.example/page ``` 4. The script constructs a ...[truncated 1227 chars]
Remediation
View remediation
Vulnerability Patterns
  • 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
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (1)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
90% confidence
Finding

The skill reads an environment variable (INDEXNOW_KEY) but does not declare an explicit tool or permission scope. Even though the content says the key is env-only and appears intended for legitimate use, undeclared env access weakens least-privilege guarantees and can let a caller run the skill with broader environment exposure than expected.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.