Back to skill

Security audit

NexDoc Design

Security checks for vulnerabilities and agentic risk

Overview

The skill’s design-service behavior is coherent, but its desktop setup path asks users to run an unpinned npm MCP server with an API key, which deserves review before installation.

Review this before installing if you plan to use the desktop `npx` path. Prefer the remote OAuth MCP option when available, or pin and verify the MCP server package yourself, run it with minimal environment variables, and be prepared to rotate `NXD_API_KEY` if you suspect compromise. The design workflow itself is otherwise disclosed and purpose-aligned.

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:34
Finding
Unpinned Third-Party Package Download and Execution## Vulnerability Details **File Location**: `SKILL.md`, line 34 **Vulnerability Type**: Unpinned npm package execution **Risk Level**: Medium **Vulnerable Code**: ```text Desktop clients can instead run `npx -y @nexdoc/mcp-server` with `NXD_API_KEY`. ``` ### Technical Analysis The documented command uses `npx -y` to download and execute the version of `@nexdoc/mcp-server` currently resolved by the npm registry. It does not pin a reviewed package version or require verification of package integrity or provenance. Because the command executes third-party package code locally, a malicious package release, compromised maintainer account, registry compromise, or compromised transitive dependency could change the effective code after this skill has been reviewed. The `-y` option also suppresses the normal installation confirmation. The process is expected to receive `NXD_API_KEY`, so downloaded code can potentially read that credential along with other environment variables and resources accessible to the invoking user. ### Attack Path 1. An attacker compromises the npm package, its maintainer account, its publication process, or a transitive dependency. 2. The attacker publishes a malicious version that can be resolved by the unpinned package reference. 3. A user follows the skill documentation and runs `npx -y @nexdoc/mcp-server` with `NXD_API_KEY` in the process environment. 4. `npx` downloads and executes the compromised package without an interactive confirmation. 5. Malicious package code reads the inherited API key or other accessible data and may transmit it externally or execute additional commands with the invoking user's privileges. ### Impact Assessment Successful exploitation could expose `NXD_API_KEY` and any other environment variables, files, or network resources available to the invoking process. Arbitrary commands could run with the privileges of the user who launches `npx`. The precise scope depends on tha ...[truncated 142 chars]
Remediation
## Remediation Suggestions - Pin the dependency to a specifically reviewed version, for example: ```text npx -y @nexdoc/mcp-server@X.Y.Z ``` - Publish and verify package provenance and integrity information for approved releases. - Establish a controlled update process that reviews each new package version and its transitive dependencies before changing the pinned version. - Where practical, install the verified package through a lockfile-based workflow rather than resolving the latest version at execution time. - Run the package in a sandbox or restricted service account with minimal filesystem and network permissions. - Provide only the required `NXD_API_KEY` to the process rather than inheriting the user's complete environment. - Disable unnecessary package lifecycle scripts where the installation workflow supports doing so. - Document API-key rotation and revocation procedures in case package or credential compromise is suspected.
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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 (2)

Vague Triggers

Medium
Confidence
88% confidence
Finding
The description says to use the skill when the user wants a "design, layout, deck, PDF, page, or card generated or edited," which is very broad and overlaps with many ordinary requests. It does not define narrower trigger phrases, scope boundaries, or exclusion examples, increasing the chance of unintended invocation.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding
The skill instructs users to run `npx -y @nexdoc/mcp-server` without pinning an exact package version or integrity source. That creates a supply-chain risk: a newly published malicious or compromised package version could be fetched and executed at install time with the user's local privileges. In this context, the danger is increased because the command is presented as an endorsed fallback path for desktop clients.

Static analysis

No suspicious patterns detected.