Back to skill

Security audit

Shaper

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly does what it says, but it under-explains credential handling and includes an unauthenticated workspace-registration flow that can create a workspace and return new credentials.

Review this skill before installing. Use it only with a Shaper workspace and API key you are comfortable letting an agent use, prefer a revocable/least-privilege token, avoid pasting secrets into chat, and require explicit confirmation before any workspace registration, pitch creation, scope updates, or completion actions.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:16
Finding
Bearer API Key May Be Exposed Through Conversation History and Process Arguments## Vulnerability Details **File Location**: `SKILL.md:16-21` and `SKILL.md:49-53` **Vulnerability Type**: Plaintext sensitive-data exposure **Risk Level**: Medium The affected instructions include: ```bash export SHAPER_API_KEY="shp_..." export SHAPER_WORKSPACE_SLUG="your-slug" ``` ```text Or ask the user to provide it directly. ``` The key is subsequently expanded into a command-line argument: ```bash curl -s -X POST https://useshaper.com/mcp \ -H "Authorization: Bearer $SHAPER_API_KEY" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"get_active_work","arguments":{}},"id":1}' ``` ### Technical Analysis The Skill explicitly permits requesting the Shaper API key directly from the user. If supplied through a conversation, the bearer credential may be retained in chat history, agent traces, tool-call logs, telemetry, or debugging records. Although storing a secret in an environment variable is preferable to hardcoding it, expanding that variable in a `curl -H` command places the resulting authorization header in the process argument vector. Depending on operating-system permissions and the execution environment, command-line arguments may be observable through process-inspection facilities or captured by shell, task-runner, or agent execution logs. Because the credential is a bearer token, possession may be sufficient to authenticate to the Shaper MCP endpoint without an additional proof of identity. ### Attack Path 1. A user follows the Skill instructions and either supplies the API key directly in the conversation or exports it into the agent's execution environment. 2. The agent invokes the documented `curl` command, expanding the key into the authorization-header argument. 3. The plaintext credential is retained in conversation or execution logs, or observed through process inspection by another principal with suitable local access. 4. An a ...[truncated 820 chars]
Remediation
## Remediation Suggestions 1. Remove the instruction permitting the agent to ask users to provide API keys directly in conversation. 2. Require credentials to be provisioned through a protected secret manager, platform credential store, or authenticated MCP server configuration. 3. Ensure secrets are injected only at execution time and are automatically redacted from conversation records, tool-call traces, telemetry, and error output. 4. Avoid placing authorization headers containing expanded secrets directly in process arguments. Prefer a restricted configuration file created with owner-only permissions, an execution API that passes headers outside the command-line argument vector, or another secret-aware transport supported by the runtime. 5. Disable shell tracing while handling credentials and verify that task runners do not log expanded commands. 6. Apply least privilege to workspace API keys, rotate them regularly, and revoke them immediately after suspected disclosure. 7. Add explicit instructions explaining how users can rotate a leaked key and audit workspace activity after an exposure.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (5)

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill explicitly instructs users to export or directly provide a Shaper API key, but it does not include safeguards for secure secret handling, scoping, storage, rotation, or warnings against pasting credentials into untrusted contexts. Because this skill is designed to let an agent act inside a live workspace, mishandling the key could expose project data and enable unauthorized actions such as reading pitch documents or modifying scope state.

External Transmission

Medium
Category
Data Exfiltration
Content
### Orient (use first)
```bash
curl -s -X POST https://useshaper.com/mcp \
  -H "Authorization: Bearer $SHAPER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"get_active_work","arguments":{}},"id":1}'
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Description-Behavior Mismatch

Medium
Confidence
97% confidence
Finding
The documentation says the skill requires a Shaper API key from the user, yet the referenced toolset includes a no-auth flow that can mint a workspace and API key. This mismatch is dangerous because users and higher-level agents may rely on the stated requirement as a safety boundary, while the actual capability bypasses that boundary and can lead to unauthorized account creation and credential handling.

Context-Inappropriate Capability

Medium
Confidence
95% confidence
Finding
The skill is presented as operating within an existing user workspace using a user-provided API key, but the documented `agent_register` endpoint allows unauthenticated creation of a new workspace and issuance of fresh credentials. This expands the skill’s effective authority beyond the stated trust model and enables an agent to provision infrastructure and obtain secrets without explicit user approval.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The registration flow returns sensitive artifacts including an API key and claim URL, but the documentation provides no warning about side effects, credential sensitivity, or the need for user consent before workspace creation. In an agent context, this omission increases the chance of silent account provisioning, accidental secret disclosure in logs, or unsafe downstream use of returned credentials.

Static analysis

No suspicious patterns detected.