Back to skill

Security audit

gemdesign-skill

Security checks for vulnerabilities and agentic risk

Overview

The skill appears purpose-built for GemDesign prototyping, but it asks the agent to install and update a global CLI, handle an authentication token, start local services, open browsers, and sync content remotely with limited consent boundaries.

Install only if you are comfortable letting the agent modify your local Node/npm environment, run GemDesign CLI commands, start a local preview server, open a browser, and create or update content in your GemDesign account. Prefer installing a pinned CLI version yourself, authenticate outside the chat when possible, use a narrowly scoped revocable token, and avoid entering sensitive data into generated prototype pages that load third-party CDN scripts.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
Findings (3)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:29
Finding

Automatic Installation and Update of an Unpinned Global CLI Package

Content
View full analysis
``` ### Technical Analysis The Skill instructs the Agent to install `@gemdesign-ai/cli` globally when it is absent and to update it automatically whenever a newer version exists. It does not pin an exact reviewed version, verify a package integrity digest, use a lockfile, or require review of a new release before execution. The effective executable implementation is therefore not contained in the audited project and can change after this audit. Installing globally also expands the package's reach beyond an isolated project environment. npm package installation may execute lifecycle scripts, while subsequent `gemdesign` commands execute the downloaded package with the invoking user's permissions. The CLI is a legitimate dependency required by the declared functionality, but automatic installation of the latest global version exceeds the minimum safe privilege and dependency-isolation model necessary to provide that functionality. ### Attack Path 1. An attacker compromises the npm publisher account, package repository, release pipeline, or a future package version. 2. The attacker publishes a malicious release of `@gemdesign-ai/cli`. 3. The Skill runs `npm outdated -g @gemdesign-ai/cli` and then automatically executes `npm update -g @gemdesign-ai/cli`, or installs the compromised release on a new system. 4. Malicious lifecycle code or CLI code executes with the permissions of the Agent process. 5. The malicious p ...[truncated 897 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:62
Finding

Authentication Token Exposed Through Command-Line Arguments

Content
View full analysis
``` ```text 4. Re-verify with `gemdesign auth whoami` to confirm login succeeded. 5. If login still fails, repeat from step 2 (ask the user to provide their GemDesign token again). ``` The same command pattern appears in `SKILL.md:201-204` and `README.md:18-22`: ```bash gemdesign auth login --token ``` ### Technical Analysis The Skill asks the user to provide a sensitive authentication token and interpolates it directly into a command-line argument. Command-line secrets may be exposed through: - Operating-system process inspection - Shell history - Terminal capture and command auditing - Agent tool-call transcripts - Debug logs, telemetry, or error reports - Session recording systems The token's use for authentication with GemDesign is necessary for the declared remote synchronization functionality. The vulnerability is not that the token is sent to the intended authentication service, but that it is represented in plaintext in an observable command and may be retained by the Agent platform. Repeatedly requesting and executing the token after authentication failures can create additional copies in conversation and execution records. ### Attack Path 1. The Skill prompts the user to enter a valid GemDesign token. 2. The Agent constructs `gemdesign auth login --token ` with the plaintext token. 3. The command or tool invocation is recorded in process metadata, shell history, an Agent transcript, or monitoring logs. 4. A local user, compromised proce ...[truncated 894 chars]
Remediation
View remediation

T03 · Remote Payload Retrieval and Execution

Warning
Location
SKILL.md:724
Finding

Generated Pages Execute Mutable JavaScript from External CDNs

Content
View full analysis
``` The mandatory page template repeats this behavior at `SKILL.md:882-889`: ```html ``` ### Technical Analysis Generated prototypes load executable JavaScript from multiple external CDN domains. `cdn.tailwindcss.com` does not identify an exact version, and the jsDelivr mirror URL for the ECharts China map does not pin a package version. Although other URLs include version numbers, none of the resources use Subresource Integrity hashes. Each generated page therefore retrieves code whose content is outside the audited project. If an external origin, DNS path, CDN account, upstream package, or mutable resource is compromised, the response can change after Skill review and execute automatically when the prototype is opened. Remote dependencies are useful for convenient rendering but are not strictly necessary: reviewed assets can be bundled locally. The current design gives several third-party origins code-execution capability in the prototype's browser context. ### Attack Path 1. An attacker compromises a referenced CDN, upstream package, publication account, DNS route, or mu ...[truncated 1426 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (12)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill instructs the agent to solicit a GemDesign token and automatically use it for authentication without warning about credential-handling risks. This is dangerous because users may disclose secrets in plain chat, after which the agent embeds them into a command, increasing exposure through logs, process listings, transcripts, or downstream tools.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The README states that the skill will automatically check for and install an external CLI on first use, but it does not clearly warn that running the skill may trigger package installation and code execution on the local machine. In an agent-skill context, implicit installation is riskier because users may assume the skill is documentation-only while the agent performs privileged environment changes without explicit consent.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill description is broad enough to overlap with ordinary design-related requests, increasing the chance of accidental invocation. In context, accidental invocation is meaningful because this skill performs host modifications, token handling, local server control, and browser launching, so unintended activation can trigger risky side effects.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The 'When to Invoke' section uses ambiguous triggers like wanting to create a UI prototype or design a page, without clear exclusions. Because the skill then enforces installation, authentication, file writes, server startup, and browser opening, ambiguous scope materially increases the risk of overreach and unintended execution.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill instructs the agent to install and update a global npm package on the host (npm install -g / npm update -g) before doing any work. Allowing a skill to modify the host environment increases supply-chain and system-integrity risk because it executes network-fetched code with persistent global effects outside the task workspace.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill tells the agent to ask the user for a GemDesign token and then run a login command with it. This is dangerous because it normalizes collection and handling of secret material inside the conversational/tooling flow, where tokens may be logged, echoed, stored in history, or exposed to other tools.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
99% confidence
Finding

The skill explicitly instructs the agent to collect a user secret and embed it directly into a CLI command for authentication. This is dangerous because secrets passed via command arguments can leak through shell history, process inspection, agent logs, transcripts, or debugging output, making credential compromise more likely.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The instructions require Chinese terms and navigation labels such as '个人中心' and 'GemDesign令牌' in user guidance, implying a fixed locale experience. The file does not state that the skill is China-region-only or offer users a language choice, which conflicts with the language/locale policy criteria.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill mandates opening a locally running service and explicitly falls back to OS shell commands such as start, open, or xdg-open. This is risky because it causes side effects on the user host and can launch applications or URLs without clear consent boundaries, especially if the URL or port handling is ever influenced by untrusted state.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The prescribed fallback text tells the user in Chinese to open the preview URL, but the skill does not provide an option to communicate in the user's preferred language. Without a documented regional constraint, this is a natural-language locale policy issue.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The skill specifies exact Chinese output formats for app information and similar user-visible summaries. Because these are prescriptive user-facing responses and no language choice or regional justification is provided, the file effectively forces a specific locale.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
86% confidence
Finding

The README instructs users to authenticate using a raw token but provides no warning that the token is sensitive or guidance to avoid exposing it in shell history, logs, screenshots, or prompts. In agent-assisted environments, credentials can be copied, echoed, or persisted by tooling, increasing the chance of accidental disclosure.

Content

No source excerpt is available for this finding.