Back to skill

Security audit

Smart Web Search

Security checks for vulnerabilities and agentic risk

Overview

This search skill does what it says, but it also makes automatic external probes and unrestricted page fetches that can expose private network information if used carelessly.

Install only if you are comfortable with this skill sending queries, IP-region probes, and fetched result pages to external sites. Avoid using it on hosts with access to sensitive internal services unless URL fetching is sandboxed or restricted, and prefer disabling auto-fetch with --fetch=0 for sensitive searches.

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

Error
Location
scripts/fetch.js:354
Finding

Arbitrary URL Fetching Enables Server-Side Request Forgery

Content
View full analysis
a.startsWith('http')); if (!urls.length) { console.log(JSON.stringify({ error: '未传入有效 URL' })); process.exit(1); } ``` The fetched content is returned to the caller: ```js const settled = await Promise.allSettled(tasks); const results = settled.map(r => r.status === 'fulfilled' ? r.value : { url: '?', status: 0, content: '', error: String(r.reason) } ); console.log(JSON.stringify(results, null, 2)); ``` ### Technical Analysis The fetch functionality accepts caller-controlled URLs and passes them to both the Node.js `fetch` API and Playwright without destination validation. Checking only whether a string begins with `http` does not establish that it is a valid public HTTP or HTTPS destination. The implementation does not: - Restrict the parsed protocol to exactly `http:` or `https:`. - Reject loopback addresses such as `127.0.0.1` or `::1`. - Reject RFC 1918 private network addresses. - Reject link-local, multicast, reserved, or IPv4-mapped IPv6 addresses. - Block local hostnames such as `localhost`. - Resolve hostnames and validate all resulting IP addresses. - Protect against DNS rebinding. - Validate each destination in a red ...[truncated 1956 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/playwright-support.js:12
Finding

Chromium Sandbox Is Unconditionally Disabled for Untrusted Web Content

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (36)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description promises a web-search capability with auto region detection and dual-tier content fetching across China and international networks. The supplied code does not implement search, region detection, network selection, or content retrieval logic. Instead, it is infrastructure code for locating a Chromium executable, checking daemon status via a local endpoint file and PID, and launching Playwright browser processes. While browser-launch support could be a supporting detail for a search skill, this chunk by itself materially differs from the declared primary purpose and includes local process-management capabilities not reflected in the description.

Content

No source excerpt is available for this finding.

Vague Triggers

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

Very broad trigger keywords like search, find, and look up are likely to activate during ordinary conversation, causing this skill to run in contexts where the user did not intend web access. Because the skill performs network operations and fetches remote content automatically, accidental invocation can leak user queries externally and expand the attack surface through unsolicited browsing.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 15)May include surrounding context.

md
script: scripts/search.js

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 101)May include surrounding context.

md
script: scripts/search.js

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 102)May include surrounding context.

md
script: scripts/search.js

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 105)May include surrounding context.

md
script: scripts/search.js

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 108)May include surrounding context.

md
script: scripts/search.js

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 130)May include surrounding context.

md
script: scripts/search.js

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 111)May include surrounding context.

md
node scripts/fetch.js "https://example.com/page1" "https://example.com/page2"

Known Vulnerable Dependency: undici==7.27.2 — 12 advisory(ies): CVE-2026-6733 (undici vulnerable to HTTP response queue poisoning via keep-alive socket reuse); CVE-2026-13697 (undici vulnerable to cross-user information disclosure and parse-time crash via ); CVE-2026-16728 (undici vulnerable to downstream response desynchronization via retry interceptor) +9 more

High
Category
Supply Chain
Confidence
91% confidence
Finding

The lockfile pins transitive dependency undici to version 7.27.2, and the supplied advisory set indicates multiple known HIGH-severity issues affecting that release. Because this skill performs web search and content fetching, an HTTP client flaw in undici is directly relevant: crafted or malicious upstream responses could potentially trigger response desynchronization, queue poisoning, crashes, or cross-request data disclosure when connections are reused.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding

npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
94% confidence
Finding

The skill exposes capabilities consistent with environment access, networking, and shell execution, but the manifest does not declare any tool scope or permissions boundary. This makes the skill harder to audit and can lead to overbroad execution in hosts that infer or grant capabilities implicitly, increasing the chance of unintended command or network use.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

Automatic region detection based on IP geolocation and connectivity probes occurs by default without explicit user consent. This can expose user network metadata, produce privacy surprises, and route traffic differently than the user expects, especially in sensitive environments where regional routing or censorship characteristics matter.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
88% confidence
Finding

Using npx playwright without pinning an exact version allows resolution of whatever package version is current in the environment or registry at execution time. This creates a supply-chain risk where unexpected upstream changes or a compromised dependency could alter behavior or introduce malicious code.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
83% confidence
Finding

The description is written only in Chinese ("智能联网搜索,国内外自动切换,双层内容抓取"), which can impose a specific language on users without offering any language or locale choice. Under the policy, locale or language constraints should be optional or clearly justified.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
87% confidence
Finding

The script recommends running npx playwright install chromium without pinning a specific Playwright version. npx may resolve and execute a package version based on the current project state or, in some environments, fetch from the registry, which reduces reproducibility and can expose users to unexpected or malicious package versions if dependency resolution is compromised. In this context, the command is only printed as guidance, not automatically executed, which lowers but does not eliminate the risk.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

This file explicitly forces a Chinese-preferred locale in HTTP headers (Accept-Language: zh-CN,zh;q=0.9,en-US,en;q=0.8) rather than letting the user choose or documenting a justified region-specific constraint. The surrounding comments, help text, and error messages are also Chinese-only, reinforcing a fixed locale behavior with no opt-in path.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The Playwright path sets extra HTTP headers to prefer zh-CN, which can affect returned content language and behavior even when the user did not request that locale. This is a natural-language/locale policy issue because the skill imposes a specific language preference globally rather than offering choice or documenting a justified limitation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The script contacts multiple third-party IP geolocation services to infer whether the user is in China, disclosing the user's IP address and related network metadata to outside providers without explicit warning. In this skill's context, that is more dangerous because the geolocation probe happens automatically before search, so metadata is leaked even if the user only intended a local search operation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The code forces the Bing browser context to use locale 'zh-CN' and Accept-Language 'zh-CN,zh;q=0.9'. Under the policy, locale constraints are findings when they are imposed without user opt-in or a clearly justified region-specific requirement.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The skill transmits user-supplied search terms to third-party search engines and then may automatically fetch result pages, which can expose sensitive queries and browsing intent to external services without explicit consent. In this skill context, the risk is heightened because autoFetch expands disclosure from the search engine to multiple third-party sites, potentially including internal or sensitive research topics entered by the user.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.