Back to skill

Security audit

AI SEO Optimizer Pro

Security checks for vulnerabilities and agentic risk

Overview

This SEO skill does not appear to steal data or persist on the system, but it presents mock and random SEO metrics as enterprise real-time analysis.

Review before installing. This package is low on system-level security risk, but do not rely on its SEO rankings, search volumes, competitor metrics, or business reports as real measurements unless the publisher clearly labels mock mode or adds documented live data providers. Treat any URL or keyword analysis as local/demo behavior in this version, and be cautious about the Chinese-only interface if that is not your intended locale.

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 (2)

T09 · Insecure Skill Coding Practices

Warning
Location
src/content-analyzer.js:253
Finding

User-Controlled Regular Expression Enables Denial of Service

Content
View full analysis
seoEngine.optimizeContent(content, keywords), ``` ### Technical Analysis Each caller-supplied keyword is passed directly to the JavaScript `RegExp` constructor without escaping regular-expression metacharacters. The implementation consequently treats keywords as executable regular-expression patterns rather than literal search strings. A malformed keyword such as `[` causes `new RegExp()` to throw a syntax exception. More importantly, an attacker can supply a pattern with catastrophic backtracking characteristics, such as `(a+)+$`, together with long matching content that fails near its end. JavaScript regular-expression evaluation is synchronous and has no built-in execution timeout, so this can monopolize the Node.js event-loop thread. The Skill does not impose effective limits on content length, keyword length, keyword count, or regular-expression complexity. Although the `SEOEngine` constructor contains a `maxKeywords` configuration value, it is not enforced in this path. ### Attack Path 1. An application exposes or internally invokes the exported `optimizeContent(content, keywords)` operation with untrusted input. 2. The attacker supplies a pathological keyword such as `(a+)+$`. 3. The attacker supplies a large content value consisting of many `a` characters followed by a nonmatching character. 4. ` ...[truncated 1060 chars]
Remediation
View remediation
0 ? (occurrences / wordCount) * 100 : 0; } ``` If regular expressions are required, escape all metacharacters first: ```javascript const escapedKeyword = keywordLower.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); const occurrences = (contentLower.match(new RegExp(escapedKeyword, 'g')) || []).length; ``` Additional hardening should include: - Validate that `content` is a string and `keywords` is an array of strings. - Enforce maximum content and keyword lengths. - Enforce the configured maximum keyword count. - Reject empty keywords. - Apply request-level timeouts and rate limits in service integrations. - Run CPU-intensive analysis in isolated workers when processing untrusted input. - Add tests for malformed patterns such as `[`, literal metacharacters, empty content, and pathological inputs such as `(a+)+$`. ]]>

other

Warning
Location
src/rank-tracker.js:199
Finding

Synthetic SEO Metrics Are Presented as Real Analysis

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (17)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The README advertises page analysis, rank tracking, and reporting capabilities that likely require outbound network access and may transmit URLs, site content, keywords, or domain data to external services, but it does not disclose that behavior. This creates a transparency and consent problem: users may provide sensitive business content or internal URLs without understanding that the skill could send that data off-host.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The natural-language instructions, examples, and descriptions are all presented in Chinese, which can amount to forcing a specific language without user opt-in. The file does not state that the skill is China-specific or otherwise justify the language restriction, nor does it offer multilingual use.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
82% confidence
Finding

The manifest’s user-facing description is entirely in Chinese, and the listed features are also presented only in Chinese. For a general SEO skill with no region-specific justification or opt-in language selection, this creates a natural-language locale policy concern because it appears to impose a specific language on users.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The natural-language descriptions and error text in this file are exclusively in Chinese, including the module header and the user-visible error message. This can violate language/locale policy when a skill implicitly forces a specific language without offering the user a choice or documenting a justified locale restriction.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The description is entirely in Chinese, which indicates a language-specific presentation in the skill metadata. For a general-purpose SEO tool, there is no visible opt-in, alternate language option, or justification that the skill is region-specific, so this may violate language/locale policy expectations.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This JavaScript file contains comments, API descriptions, and suggestion text entirely in Chinese, including user-facing output such as titles, descriptions, and actions. The skill does not offer any language selection or document that it is intentionally limited to a Chinese-speaking context, which can violate language/locale policy requirements.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The analyzer accepts arbitrary strings, treats any value starting with 'http' as a URL, and invokes a remote fetch path. In a skill with no documented need for network access, this expands the trust boundary and can enable server-side request behavior, access to internal resources, or unintended outbound requests once the placeholder implementation is replaced with a real fetch.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The file's user-facing natural-language comments, descriptions, and recommendation strings are all in Chinese, which effectively imposes a specific language on downstream users or maintainers. The policy allows fixed locale behavior only when the skill offers opt-in choice or clearly documents a justified regional constraint, neither of which appears here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
82% confidence
Finding

This file is written around a fixed Chinese-language keyword model, including Chinese keyword templates and category terms, with no indication that the skill is region-specific or that users can opt into another language. Under the language/locale policy, forcing a specific language without user choice or justification is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The comment at L197 describes this method as fetching an individual keyword ranking, which implies obtaining actual ranking data. However, the implementation at L201-L210 explicitly uses mocked random values for position, previous position, search volume, difficulty, and SERP features, so the documentation contradicts the real behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

This JavaScript file uses natural-language documentation and recommendation text exclusively in Chinese, indicating a language-specific behavior without any visible user opt-in or locale selection mechanism. Under the stated policy, forcing a specific language without user choice is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

This file’s natural-language interface documentation, including the module description and parameter/return comments, is written exclusively in Chinese. For a general-purpose web search skill, that imposes a language/locale expectation without any opt-in or documented region-specific justification, which matches the language-policy violation criteria.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill documentation is effectively Chinese-only, including feature descriptions, API explanations, and usage guidance. Under the language/locale policy, forcing a single language without user opt-in or documented justification can be a policy violation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

The skill explicitly invites users to submit URLs and requests ranking/SEO analysis, which strongly implies external network access and possible transmission of site, query, or competitor data. Without a disclosure or consent notice, users may unknowingly provide sensitive business information to remote services, creating a privacy and data-handling risk even if no direct code execution is described.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
96% confidence
Finding

The method is documented as '获取内容' and the comment states the real implementation will call web_fetch, which implies live retrieval of remote content. In reality, the function returns a fixed placeholder string and does not fetch anything, contradicting the documented behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

This file contains natural-language content such as module descriptions, report labels, and recommendation text entirely in Chinese. Under the stated policy, forcing a specific language without user opt-in is a locale/language policy violation unless the constraint is explicitly documented and justified, which is not present here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The file's comments and all console output are written in Chinese, which imposes a specific language on users running the tests. There is no indication that this is a region-specific tool or that users can opt into another language, which fits the language/locale policy violation category.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.