Back to skill

Security audit

Web3 Daily Mcp

Security checks for vulnerabilities and agentic risk

Overview

This skill does what it says: it runs a Web3 MCP server that sends digest and wallet-analysis requests to a disclosed backend, with supply-chain and privacy cautions users should consider.

Install only if you are comfortable sending wallet addresses you choose to analyze to the J4Y backend. Prefer a pinned package version or local build over the unversioned npx examples, and update dependencies before exposing this MCP server in a less controlled environment.

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

T08 · Insecure Dependencies

Warning
Location
SKILL.md:84
Finding
Unpinned npm Package Execution Through npx## Vulnerability Details **File Location**: `SKILL.md:84-106` **Additional Location**: `README.md:16-56` **Vulnerability Type**: Unpinned third-party package execution **Risk Level**: Medium ### Vulnerable Code ```json { "plugins": { "entries": { "web3-daily-mcp": { "enabled": true, "command": "npx", "args": ["web3-daily-mcp"] } } } } ``` The same unpinned command is also recommended for Claude Desktop, OpenClaw, and Cursor: ```json { "mcpServers": { "web3-daily": { "command": "npx", "args": ["web3-daily-mcp"] } } } ``` ### Technical Analysis The documented configurations invoke `npx web3-daily-mcp` without an exact package version. Depending on the local npm cache and installation state, `npx` can retrieve the package version currently selected by the npm registry. The code executed later may therefore differ from the version audited here. Although the repository contains a lockfile with integrity hashes for its dependencies, that lockfile does not pin the top-level package selected by these external `npx` configurations. A compromised publisher account, malicious future release, or registry-level package compromise could replace the effective MCP executable without requiring any change to this repository. No evidence indicates that the package or its current dependencies are malicious. The risk arises from the unsafe installation and execution pattern. ### Attack Path 1. An attacker compromises the npm publishing account, release pipeline, or package distribution channel for `web3-daily-mcp`. 2. The attacker publishes a malicious version under the same package name. 3. A user installs or starts the MCP server using the documented unversioned `npx web3-daily-mcp` configuration. 4. `npx` resolves and downloads the attacker-controlled release. 5. Node.js executes the malicious package as the user running the MCP host. 6. The payload can access resources available to that user and ...[truncated 639 chars]
Remediation
## Remediation Suggestions 1. Pin the package to a reviewed exact version in every configuration: ```json { "command": "npx", "args": ["--yes", "web3-daily-mcp@1.0.0"] } ``` 2. Avoid version ranges, tags such as `latest`, and unversioned package names in executable MCP configurations. 3. Prefer installing from a trusted lockfile and invoking the locally installed executable rather than downloading code during MCP startup: ```bash npm ci npm run build node dist/index.js ``` 4. Verify npm package provenance, publisher identity, integrity metadata, and release signatures before updating the pinned version. 5. Review dependency and lockfile changes for every release. Use automated dependency scanning and require approval for package updates. 6. Run the MCP server under a dedicated, least-privileged account or sandbox with restricted filesystem, environment-variable, and network access. 7. Update all affected examples in `SKILL.md` and `README.md` so users are not directed toward unpinned execution.
Vulnerability Patterns
  • 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
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (17)

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
89% confidence
Finding
fast-uri 3.1.0 is reported with multiple host-confusion and SSRF-relevant parsing issues. In a networked MCP server that may consume or validate attacker-influenced URLs through framework or schema tooling, incorrect URI canonicalization can lead to policy bypass, SSRF, or host allowlist evasion.

Known Vulnerable Dependency: hono==4.12.9 — 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.9 has many advisories affecting cookies, routing, and request handling. Because MCP servers are network-facing and handle untrusted inputs, framework-level flaws can directly affect authentication, routing correctness, header safety, and boundary enforcement, making this especially relevant.

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
84% confidence
Finding
ip-address 10.1.0 includes an address parsing inconsistency and an XSS issue in HTML-emitting methods. In this dependency path it comes from express-rate-limit, so the parsing flaw is more relevant than the HTML method issue; if IP parsing is security-sensitive, inconsistencies around leading-zero octets can cause policy or logging mistakes.

Lp3

Medium
Category
MCP Least Privilege
Confidence
90% confidence
Finding
The skill defines an MCP server that performs real backend/API requests and processes wallet addresses, but the manifest does not declare any explicit tool scope such as permissions or allowed-tools. That makes the network-capable behavior less transparent to the host and user, increasing the risk of overbroad external communication or unexpected data egress.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The tool documentation states that `language` defaults to `zh` (Chinese). This imposes a specific language choice when the user does not explicitly select one, which is a natural-language locale policy concern because the skill does not present language choice as opt-in by default.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The wallet analysis tools send user-supplied wallet addresses and profiling parameters to a third-party remote API, enabling external collection of wallet-linked behavioral data. While blockchain addresses are public, associating them with an agent user’s request and generating personalized profiling creates a privacy and data-sharing risk, especially because the tool descriptions and code do not provide an explicit warning or consent step before transmission.

Vague Triggers

Low
Confidence
89% confidence
Finding
The manifest advertises personalized wallet analysis but does not state when the feature should or should not be invoked, what user consent is required, or whether sensitive wallet analysis is limited to explicitly user-supplied addresses. In an MCP context, this ambiguity can lead an agent to over-collect or over-send wallet identifiers to the backend, creating unnecessary privacy exposure even if the backend itself is legitimate.

Vague Triggers

Low
Confidence
92% confidence
Finding
The wallet-related tool descriptions are broad and do not define boundaries for use, such as whether they require direct user opt-in, what wallet may be analyzed, or whether analysis of third-party addresses is prohibited. For agent-integrated tools, vague descriptions increase the chance of inappropriate invocation and privacy-invasive behavior, especially because wallet analysis can reveal behavioral and financial patterns.

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
93% confidence
Finding
The lockfile pins @hono/node-server 1.19.11, which is flagged for middleware bypass via repeated slashes and Windows path traversal issues in serveStatic. Even though the vulnerable code may only be reachable if this MCP server exposes static files, the dependency is present in the runtime tree and could weaken request-path security if those features are used now or later.

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
80% confidence
Finding
body-parser 2.2.2 is listed with a denial-of-service advisory related to invalid limit handling. In an MCP server that processes untrusted requests, malformed bodies could potentially trigger resource exhaustion or request handling instability if the affected parsing path is exercised.

Known Vulnerable Dependency: esbuild==0.27.4 — 1 advisory(ies): GHSA-g7r4-m6w7-qqqr (esbuild allows arbitrary file read when running the development server on Window)

Low
Category
Supply Chain
Confidence
60% confidence
Finding
Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

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
82% confidence
Finding
qs 6.15.0 is flagged for multiple denial-of-service and parsing edge-case issues. Since qs is used by Express/body-parser to process attacker-controlled query strings or bodies, these flaws can be relevant to availability and input handling in a public-facing server, though the expected impact is typically limited to DoS rather than code execution.

Unpinned Dependencies

Low
Category
Supply Chain
Content
"author": "Alex Wang",
  "license": "MIT",
  "dependencies": {
    "@modelcontextprotocol/sdk": "^1.28.0",
    "zod": "^3.23.0"
  },
  "devDependencies": {
Confidence
93% confidence
Finding
The dependency uses a caret range, which permits automatic installation of newer minor/patch releases rather than an exact reviewed version. In a security-sensitive MCP server that brokers access to backend data for AI agents, this increases supply-chain risk because a compromised or breaking upstream release could be pulled into installs without explicit approval.

Unpinned Dependencies

Low
Category
Supply Chain
Content
"license": "MIT",
  "dependencies": {
    "@modelcontextprotocol/sdk": "^1.28.0",
    "zod": "^3.23.0"
  },
  "devDependencies": {
    "@types/node": "^20.0.0",
Confidence
93% confidence
Finding
The zod dependency is specified with a caret range, allowing non-exact upstream versions to be resolved at install time. While common in JavaScript projects, this still creates a real supply-chain exposure because an unexpected upstream release could alter validation behavior or introduce a malicious package version into the MCP server.

Unpinned Dependencies

Low
Category
Supply Chain
Content
"zod": "^3.23.0"
  },
  "devDependencies": {
    "@types/node": "^20.0.0",
    "tsx": "^4.7.0",
    "typescript": "^5.4.0"
  }
Confidence
84% confidence
Finding
The devDependency is not pinned to an exact version, so development and build environments may resolve newer upstream releases than were originally tested. Although @types/node is not typically shipped at runtime, unpinned build-time dependencies still contribute to supply-chain risk and can cause inconsistent or manipulated builds.

Unpinned Dependencies

Low
Category
Supply Chain
Content
},
  "devDependencies": {
    "@types/node": "^20.0.0",
    "tsx": "^4.7.0",
    "typescript": "^5.4.0"
  }
}
Confidence
89% confidence
Finding
The tsx devDependency is specified with a caret range, permitting automatic resolution of newer versions in developer or CI environments. Because tsx is an executable development tool, a compromised upstream release could affect local execution or build workflows, making this somewhat more sensitive than a purely type-only package.

Unpinned Dependencies

Low
Category
Supply Chain
Content
"devDependencies": {
    "@types/node": "^20.0.0",
    "tsx": "^4.7.0",
    "typescript": "^5.4.0"
  }
}
Confidence
87% confidence
Finding
The typescript compiler version is unpinned, allowing new compiler releases to be pulled automatically in development or CI. This is primarily a build integrity and reproducibility concern, but in a package that compiles code for an MCP server, unexpected compiler changes or a compromised release could impact generated artifacts and trust in the build pipeline.

Static analysis

No suspicious patterns detected.