Back to skill

Security audit

Linguistic Landscape Analyzer

Security checks for vulnerabilities and agentic risk

Overview

This skill is a local text-analysis MCP tool with disclosed CSV reading and report writing, but its dependency and documentation issues should be reviewed before use.

Install only if you are comfortable with a local MCP server that reads CSV files from its data directory and writes Markdown reports into its reports directory. Review or update the dependency lockfile, prefer the official npm registry if appropriate, and treat generated reports as local files that may contain copied note data.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (2)

T09 · Insecure Skill Coding Practices

Warning
Location
src/server.js:39
Finding

Unbounded text processing can exhaust server memory and CPU

Content
View full analysis
w.length > 0); } ``` The corresponding `text` parameters use `z.string()` without a maximum-length constraint. ### Technical Analysis The `analyze_sentiment` and `extract_keywords` MCP tools accept caller-controlled strings without limiting their size. For Chinese input, both tools pass the complete value to `simpleChineseTokenize`. The function creates a cleaned copy of the input, repeatedly allocates two- and three-character substrings, and populates a `words` array during the loop. That array is never returned or otherwise used. The function then creates another array by splitting the complete cleaned string. Consequently, a sufficiently large request can trigger substantial transient and retained allocations, repeated regular-expression operations, and linear iteration. Concurrent oversized calls can amplify the resource consumption. ### Attack Path 1. An attacker or untrusted MCP client obtains permission to call the exposed tools. 2. The attacker invokes `analyze_sentiment` or `extract_keywords` with a very large Chinese-language `text` argument. 3. Zod accepts the argument because the schema imposes no maximum length. 4. `simpleChine ...[truncated 662 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Note
Location
package-lock.json:17
Finding

Locked dependencies are downloaded from a non-default third-party registry mirror

Content
View full analysis
=18.14.1" } } ``` Another representative entry is: ```json "node_modules/@modelcontextprotocol/sdk": { "version": "1.27.1", "resolved": "https://registry.npmmirror.com/@modelcontextprotocol/sdk/-/sdk-1.27.1.tgz", "integrity": "sha512-sr6GbP+4edBwFndLbM60gf07z0FQ79gaExpnsjMGePXqFcSSb7t6iscpjk9DhFhwd+mTEQrzNafGP8/iGGFYaA==" } ``` ### Technical Analysis The lockfile directs npm to obtain package archives from `registry.npmmirror.com` instead of the default npm registry. This introduces an additional service into the dependency trust and availability chain. The SHA-512 integrity values significantly reduce the substitution risk because npm should reject archives that do not match the lockfile. The audit also found no dependency installation lifecycle hooks in the lockfile. Therefore, exploitation requires either a matching lockfile modification, a failure in integrity verification, or another compromise of the installation process. The mirror still creates an avoidable dependency on a separate distribution endpoint and may expose installations to mirror availability, synchronization, or governance risks. ### Attack Path 1. A user follows the installation instructions and runs `npm install` or `npm ci`. 2. npm reads the `resolved` URLs from `package-lock.json`. 3. Dependency archives are requested from the third-party mirror. 4. If the mirror and the trusted lockfile are both compromised, an a ...[truncated 791 chars]
Remediation
View remediation
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • 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
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (23)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The declared description mentions sentiment analysis and keyword extraction for linguistic landscape analysis, which matches two implemented tools. However, the actual code also exposes additional capabilities not represented in the description: listing note data from local CSV files and generating weekly reports, including writing report files to disk. These are material undeclared capabilities because they involve local file access and persistence beyond simple text analysis. Therefore the description does not accurately represent the full behavior of the skill.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: fast-uri==3.1.0 — 7 advisory(ies): CVE-2026-13676 (fast-uri vulnerable to host confusion via failed IDN canonicalization); CVE-2026-18446 (fast-uri vulnerable to host confusion via backslash authority introducer); CVE-2026-75975 (fast-uri vulnerable to server-side request forgery via malformed IPv6 normalizat) +4 more

High
Category
Supply Chain
Confidence
84% confidence
Finding

fast-uri 3.1.0 is associated with multiple URI canonicalization and host-confusion issues, including malformed IPv6 and IDN handling that can lead to SSRF or security-check bypasses. In an MCP or web-connected toolchain, any code that validates, rewrites, or authorizes based on parsed URLs could make incorrect trust decisions if this library is used in reachable paths.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: hono==4.12.8 — 16 advisory(ies): CVE-2026-56762 (Hono missing validation of cookie name on write path in setCookie()); CVE-2026-47676 (Hono: app.mount() strips mount prefix using undecoded path, causing incorrect ro); CVE-2026-47675 (Hono: Cookie helper does not sanitize sameSite and priority, allowing Set-Cookie) +13 more

High
Category
Supply Chain
Confidence
92% confidence
Finding

hono 4.12.8 carries numerous advisories affecting cookie handling, routing, and request processing. Since the MCP SDK depends on Hono for server functionality, these flaws can materially affect exposed endpoints, making the dependency riskier than a dormant package in a purely offline utility.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: ip-address==10.1.0 — 2 advisory(ies): CVE-2026-69192 (ip-address: Address4 decodes leading-zero octets as decimal while resolvers deco); CVE-2026-42338 (ip-address has XSS in Address6 HTML-emitting methods)

High
Category
Supply Chain
Confidence
80% confidence
Finding

ip-address 10.1.0 is reported vulnerable to address parsing inconsistencies and an XSS issue in HTML-emitting methods. The parsing inconsistency can matter in rate limiting, SSRF protection, or IP allow/deny logic used by express-rate-limit or related middleware, though exploitability depends on whether those outputs are trusted for security decisions.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: path-to-regexp==8.3.0 — 2 advisory(ies): CVE-2026-4923 (path-to-regexp vulnerable to Regular Expression Denial of Service via multiple w); CVE-2026-4926 (path-to-regexp vulnerable to Denial of Service via sequential optional groups)

High
Category
Supply Chain
Confidence
88% confidence
Finding

path-to-regexp 8.3.0 is flagged for ReDoS/DoS issues from crafted route patterns or matching behavior. In HTTP-facing frameworks, route matching occurs before application logic, so a malicious request can potentially tie up CPU and degrade availability if vulnerable patterns are present or framework internals expose the issue.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The design explicitly includes a weekly report tool that writes to an output path and also proposes automatic execution via cron, but the markdown does not warn users that files may be created or overwritten without manual review. In an MCP/OpenClaw context, unattended scheduled execution increases the risk of unexpected file writes, data leakage into reports, or clobbering user/workspace files if paths are misconfigured.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The file’s user-facing natural-language descriptions, including the header and tool explanations, are written in Chinese only. This creates a language policy concern because users are not offered a language choice or informed that the skill is Chinese-only.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill exposes capabilities beyond its stated purpose: it not only analyzes sentiment and extracts keywords, but also reads local CSV datasets and writes weekly report files. This scope mismatch can mislead users and hosts about the skill’s data access and side effects, increasing the chance that it is granted trust or installed under false assumptions.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The tool schema and description state that callers can provide startDate, endDate, and outputPath for report generation, implying date-bounded analysis and caller-controlled output location. In implementation, the handler only accepts limit, always reads sample.csv, and always writes to a fixed reports path, so the documented intent contradicts actual behavior.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The weekly report tool writes a Markdown file to disk as a side effect without explicit user-facing warning or confirmation. Silent filesystem writes can violate least surprise, create unwanted artifacts, and become more sensitive in agent environments where users may expect analysis-only behavior from the advertised skill.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This JavaScript file contains natural-language strings entirely in Chinese and sends tool requests with language: "zh", which effectively enforces a specific language context. Under the stated policy, forcing a specific language without user opt-in or documented justification is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The manifest describes the skill as a tool for '小红书情感分析与关键词提取' supporting research, which implies analysis-focused capabilities. This report states that the implemented MCP server also provides list_notes and generate_weekly_report, adding data browsing and filesystem report-output behavior not reflected in the manifest description.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The document states that the skill reads local data from fixed workspace paths and also defines tools that accept user-specified file paths, but it does not warn users that local filesystem contents will be accessed. In a file-capable agent environment, missing disclosure can lead to accidental exposure of sensitive local data or overbroad file access beyond the intended dataset.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

The documentation states that the language parameter defaults to zh for sentiment analysis and keyword extraction. This creates a language preference baked into the skill behavior without explicitly asking the user to choose, which can conflict with language/locale choice policies.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: @hono/node-server==1.19.11 — 2 advisory(ies): CVE-2026-39406 (@hono/node-server: Middleware bypass via repeated slashes in serveStatic); GHSA-frvp-7c67-39w9 (Node.js Adapter for Hono: Path traversal in `serve-static` on Windows via encode)

Low
Category
Supply Chain
Confidence
89% confidence
Finding

The lockfile pins @hono/node-server 1.19.11, and the reported advisories describe concrete path-handling issues in static file serving, including repeated-slash middleware bypass and Windows path traversal in serve-static. Even if this skill is primarily for text analysis, MCP/SDK stacks commonly expose HTTP endpoints, so vulnerable routing/static-serving code in a transitive dependency is a real supply-chain risk if those features are enabled.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: body-parser==2.2.2 — 1 advisory(ies): CVE-2026-12590 (body-parser vulnerable to denial of service when invalid limit value silently di)

Low
Category
Supply Chain
Confidence
76% confidence
Finding

body-parser 2.2.2 is flagged for a denial-of-service condition involving invalid limit handling. Because this dependency sits in the request parsing path of an HTTP stack, malformed requests could potentially consume resources or trigger failures if the affected code path is reachable.

Content

No source excerpt is available for this finding.

Known Vulnerable Dependency: qs==6.15.0 — 3 advisory(ies): CVE-2026-82417 (qs: Denial of Service via Attacker Controlled isBuffer); CVE-2026-8723 (qs has a remotely triggerable DoS: qs.stringify crashes with TypeError on null/u); CVE-2026-82562 (qs array-limit bypass via bracket-key comma parsing)

Low
Category
Supply Chain
Confidence
78% confidence
Finding

qs 6.15.0 has reported denial-of-service and parser-bypass issues. Because query-string parsing is commonly reachable from unauthenticated HTTP requests, malformed inputs may trigger crashes, heavy processing, or validation bypass in code that assumes array limits or stable parser behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
94% confidence
Finding

The description is written entirely in Chinese and presents the tool as a Chinese-language MCP utility, with no indication that other languages are supported or that this locale restriction is optional. Under the stated policy, forcing a specific language without user opt-in can be a natural-language policy violation unless clearly justified as region-specific.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
88% confidence
Finding

Using caret ranges for dependencies allows newer semver-compatible releases to be installed automatically, which can introduce vulnerable or malicious upstream code through the supply chain without changes to this repository. In an MCP tool context, third-party packages may run with the same privileges as the server process, so a compromised dependency could affect host integrity or expose processed data.

Content

Scanner excerpt · package.json (reported line 22)May include surrounding context.

json
"author": "小爪 🦞",
  "license": "MIT",
  "dependencies": {
    "@modelcontextprotocol/sdk": "^1.27.1",
    "keyword-extractor": "^0.0.28",
    "sentiment": "^5.0.2",
    "zod": "^4.3.6"

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
88% confidence
Finding

The keyword-extractor dependency is specified with a caret range, permitting automatic installation of future releases that may contain vulnerabilities or malicious code. Because this package participates directly in text processing for the MCP service, a compromised update could execute in-process and impact confidentiality or service integrity.

Content

Scanner excerpt · package.json (reported line 23)May include surrounding context.

json
"license": "MIT",
  "dependencies": {
    "@modelcontextprotocol/sdk": "^1.27.1",
    "keyword-extractor": "^0.0.28",
    "sentiment": "^5.0.2",
    "zod": "^4.3.6"
  }

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
88% confidence
Finding

The sentiment dependency is unpinned and may resolve to newer releases within the allowed semver range, increasing supply-chain risk. If a bad release is published or an account is compromised, the MCP server could ingest and execute unsafe code during installation or runtime.

Content

Scanner excerpt · package.json (reported line 24)May include surrounding context.

json
"dependencies": {
    "@modelcontextprotocol/sdk": "^1.27.1",
    "keyword-extractor": "^0.0.28",
    "sentiment": "^5.0.2",
    "zod": "^4.3.6"
  }
}

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
88% confidence
Finding

The zod dependency is also specified with a caret range, creating the same class of supply-chain exposure through non-deterministic installs. Although common in development practice, it still weakens build reproducibility and can widen the blast radius of an upstream compromise.

Content

Scanner excerpt · package.json (reported line 25)May include surrounding context.

json
"@modelcontextprotocol/sdk": "^1.27.1",
    "keyword-extractor": "^0.0.28",
    "sentiment": "^5.0.2",
    "zod": "^4.3.6"
  }
}

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
86% confidence
Finding

The report documents generation of a file on disk and reveals an absolute output path, but provides no warning about local writes, retention, or possible exposure of filesystem layout. In an agent skill context, undocumented write side effects can surprise users and make it easier to overwrite files, leak environment details, or store sensitive derived content in unintended locations.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.dangerous_exec

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
src/test/full-test.js:22