Back to skill

Security audit

design-researh

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent design research helper, but it configures automatic unpinned MCP package execution and default external browsing that users should review before installing.

Install only if you are comfortable with the skill performing external design-site searches from your briefs and with its MCP setup downloading current npm packages at runtime. Prefer pinning MCP package versions, reviewing the MCP servers before use, and using a limited Brave API key.

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
.mcp.json:3
Finding

Unpinned MCP Packages Are Downloaded and Executed Automatically

Content
View full analysis

Vulnerability Details

File Location: .mcp.json, lines 3–12
Vulnerability Type: T08: Insecure Dependencies
Risk Level: Medium

Vulnerable Code

json
"playwright": {
  "command": "npx",
  "args": ["-y", "@playwright/mcp@latest"]
},
"brave-search": {
  "command": "npx",
  "args": ["-y", "@brave/brave-search-mcp-server@latest"],
  "env": {
    "BRAVE_API_KEY": "${BRAVE_API_KEY}"
  }
}

Technical Analysis

The MCP configuration invokes npx with -y and mutable @latest package specifications. As a result, MCP startup may download and execute package versions that were not present during this audit. There is no exact version pin, committed lockfile, or integrity hash in the reviewed project to ensure that the executed artifacts match reviewed releases.

The -y option suppresses installation confirmation, further reducing the opportunity to inspect version changes before execution. This creates a supply-chain exposure: compromise of either package, its maintainer account, or the relevant registry distribution channel could cause attacker-controlled code to execute locally.

The Brave Search MCP process is also explicitly provided BRAVE_API_KEY. Code executing inside that dependency can read the credential from its environment.

Attack Path

  1. An attacker compromises the package maintainer account, package registry entry, or release process for one of the configured MCP packages.
  2. The attacker publishes a malicious version under the package’s latest distribution tag.
  3. The Agent environment starts the configured MCP server.
  4. npx -y retrieves the current latest version without interactive confirmation.
  5. The malicious package executes with the operating-system privileges of the user running the Agent.
  6. In the Brave Search server’s case, the malicious process reads BRAVE_API_KEY from its environment and may transmit it externally.
  7. Subject to the runtime user’s permissions and network controls, the package ...[truncated 663 chars]
Remediation
View remediation

Remediation Suggestions

  1. Replace both @latest specifications with reviewed, exact package versions.
  2. Install dependencies through a committed manifest and lockfile rather than downloading mutable versions at MCP startup.
  3. Enforce package integrity verification and use a trusted registry configuration.
  4. Review dependency updates before changing pinned versions, including package provenance, release history, and transitive dependency changes.
  5. Avoid npx -y for first-time or unreviewed installations. Require an explicit provisioning or approval step where practical.
  6. Run each MCP server in a restricted environment with minimal filesystem permissions and constrained outbound network access.
  7. Use a narrowly scoped, rate-limited, and readily rotatable Brave API key.
  8. Provide credentials only to the specific process that requires them, and rotate the key immediately if dependency compromise is suspected.
  9. Consider prebuilding or vendoring verified MCP artifacts so production startup does not retrieve executable code dynamically.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (15)

Hidden Instructions

High
Category
Prompt Injection
Confidence
60% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/image-search-workflow.md (reported line 1)May include surrounding context.

md
# 质量门槛

这份规则用于评估前期调研结论和灵感图筛选质量。

Hidden Instructions

High
Category
Prompt Injection
Confidence
60% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/quality-gate.md (reported line 1)May include surrounding context.

md
# 质量门槛

这份规则用于评估前期调研结论和灵感图筛选质量。

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill defaults to collecting inspiration from external sites and returning links whenever the environment allows networking, but it does not require explicit user consent or prominently warn that outbound browsing may occur. In practice, that can lead to unexpected network access based on sensitive briefs, leaking project intent, internal terminology, or search patterns to third-party platforms.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill advertises broad trigger phrases such as generic requests to 'help research this requirement' or 'find reference images,' which can cause the skill to activate in contexts the user did not explicitly intend. That increases the chance of unintended execution of its default behaviors, including follow-up questioning and external reference collection, which can surprise users and expand data exposure.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill enables implicit invocation while advertising a broad workflow for vague design briefs, clarification, research, and sourcing inspiration links. This can cause the agent to invoke the skill in situations the user did not clearly request, which may lead to unanticipated browsing, source selection, or disclosure of user context to external content workflows.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The default prompt hard-codes Behance, Zcool, Huaban, and Xiaohongshu as default inspiration sources unless the user opts out. Forcing non-user-selected sources can bias outputs, trigger unnecessary external-source use, and send the workflow toward sites the user may not want for privacy, policy, copyright, or regional-compliance reasons.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The file is entirely written as a Chinese-only instruction set and provides fixed Chinese trigger phrases for activation, with no indication that users may choose another language. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless clearly justified as region-specific.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

Line L03 gives the operational instruction entirely in Chinese and implicitly constrains the skill's behavior to that language. There is no nearby opt-in, fallback, or explanation that this skill is intentionally region-specific, so it appears to force a locale without user choice.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This markdown file's natural-language content appears to assume Chinese as the required interaction language, and there is no indication that users can opt into another language or that the skill is intentionally limited to a Chinese-language context. Under the policy rule, forcing a specific language without user opt-in 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
91% confidence
Finding

The entire skill is written as a Chinese-only routing policy and provides no indication that the agent should preserve or adapt to the user's preferred language. This can create a language/locale policy issue because it implicitly constrains behavior to Chinese without offering user 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
83% confidence
Finding

The document is written as a mandatory Chinese-language workflow and does not provide a language-selection rule or fallback to the user's language. This can misalign outputs with user expectations, reduce transparency, and in multilingual settings cause the agent to ignore explicit language preferences, though the security impact is limited.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The workflow auto-activates image-search behavior for broadly defined 'research + inspiration collection' tasks even when the user did not explicitly ask for images. This can cause scope expansion, unexpected browsing/link collection, and outputs that exceed user intent, which is a real safety and quality issue for agent behavior though not overtly malicious.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The template explicitly prioritizes Chinese output ('返回结果时优先使用下面的结构') without any mechanism to respect the user's requested language. This can override caller expectations, reduce usability for non-Chinese users, and create prompt-steering behavior where the skill imposes its own output constraints rather than following user or system language preferences.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This markdown file presents all guidance in Chinese and does not indicate that the user can choose another language or that the skill is intentionally limited to a Chinese-speaking context. Under the stated policy, forcing a specific language without user opt-in is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

This markdown file uses Chinese throughout its instructional content, with no indication that the skill is region-specific or that users may opt into another language. Under the language/locale policy, forcing a specific language without user choice can be a natural-language policy concern.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.