Back to skill

Security audit

Clawdship

Security checks for vulnerabilities and agentic risk

Overview

This skill is a real deployment helper, but it can upload local project files and API credentials to an environment-selected endpoint without enough safeguards.

Install only if you are comfortable with agents publishing selected directories to Clawdship. Before using it, verify the deployment path, remove secrets such as .env files and private keys, avoid untrusted CLAWDSHIP_API values, and require explicit human approval for deletes, redeploys, custom domains, or credit top-ups.

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

Error
Location
deploy.sh:7
Finding

Environment-Controlled Deployment Endpoint Can Expose Source Files and API Credentials

Content
View full analysis
[api-key]}" PATH_TO_FILES="${2:?Usage: ./deploy.sh [api-key]}" API_KEY="${3:-${CLAWDSHIP_API_KEY:-}}" API_BASE="${CLAWDSHIP_API:-https://api.clawdship.dev}" if [ ! -d "$PATH_TO_FILES" ]; then echo "❌ Directory not found: $PATH_TO_FILES" >&2 exit 1 fi # Create tar.gz ARCHIVE=$(mktemp /tmp/clawdship-XXXXXX.tar.gz) trap 'rm -f "$ARCHIVE"' EXIT echo "📦 Packaging $PATH_TO_FILES..." tar czf "$ARCHIVE" -C "$PATH_TO_FILES" . # Build curl command CURL_ARGS=(-s -w "\n%{http_code}" -X POST "${API_BASE}/v1/sites") CURL_ARGS+=(-F "name=${SLUG}" -F "type=static" -F "slug=${SLUG}" -F "archive=@${ARCHIVE}") if [ -n "$API_KEY" ]; then CURL_ARGS+=(-H "Authorization: Bearer $API_KEY") fi ``` ### Technical Analysis The deployment destination is obtained from the inherited `CLAWDSHIP_API` environment variable without validating its URL scheme, hostname, or trust level. The script subsequently sends both the generated project archive and, when available, the bearer API credential to that destination. Shell array usage prevents ordinary shell-command injection through `API_BASE`; however, it does not prevent data exfiltration to an attacker-selected HTTP server. If an attacker can influence the environment in which the script is launched—for example, through a compromised wrapper, CI configuration, shell profile, task runner, or parent process—the attacker can replace the legitimate API origin with an arbitrary endpoint. The script also accepts non-HTTPS destinations. An `http://` endpoint would transmit the uploaded project and authorization header without transport encryption, allowing interception or modification by a networ ...[truncated 1928 chars]
Remediation
View remediation
&2 exit 1 ;; esac ``` 3. **Separate production and development behavior** Require a deliberate command-line flag for custom endpoints rather than silently inheriting them from the environment. Display the destination and request confirmation before uploading files or credentials to a non-production origin. 4. **Never transmit credentials over plaintext HTTP** Reject any URL that does not use HTTPS. URL validation should parse and compare the scheme and hostname rather than relying on loose substring or prefix checks. 5. **Bind credential transmission to the trusted origin** Add the `Authorization` header only after confirming that the final request destination is the approved Clawdship API origin. Review redirect behavior as well, ensuring credentials cannot be forwarded to another host. 6. **Reduce archive exposure** Support an exclusion file or safe defaults for sensitive content such as `.env`, private keys, credential files, `.git`, and local configuration. Clearly warn users that every file beneath the selected directory will be uploaded. 7. **Harden CI and automation environments** Protect deployment environment variables, review inherited variables before execution, restrict who can modify workflow definitions, and prevent untrusted pull requests from changing deployment configuration. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (15)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The skill claims broader functionality than is concretely evidenced, including support for Docker apps, zero-signup account creation, and general web project deployment. This mismatch can mislead agents and users into invoking the skill in contexts it does not safely or reliably handle, which is risky when deployment actions upload archives and may expose code or trigger paid services.

Content

No source excerpt is available for this finding.

Vague Triggers

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The trigger phrases are extremely broad, including generic terms like deploy, host, publish site, and ship it, which can cause the skill to activate in unrelated conversations. Because the skill can package local files and send them to an external service, unintended invocation could lead to accidental code exfiltration, unwanted internet exposure, or surprise billing.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
90% confidence
Finding

The skill advertises shell-based deployment behavior but does not declare any explicit tool scope or allowed-tools restrictions. In an agent environment, this can cause the skill to be invoked with broader shell/network capabilities than users expect, increasing the chance of unintended command execution or data transmission during deployment.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 48)May include surrounding context.

md
## API Reference

**Base URL:** `https://api.clawdship.dev/v1`
**Auth:** `Authorization: Bearer cship_...`

### Deploy Static Site (alternative to script)

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 80)May include surrounding context.

md
## API Reference

**Base URL:** `https://api.clawdship.dev/v1`
**Auth:** `Authorization: Bearer cship_...`

### Deploy Static Site (alternative to script)

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 83)May include surrounding context.

md
## API Reference

**Base URL:** `https://api.clawdship.dev/v1`
**Auth:** `Authorization: Bearer cship_...`

### Deploy Static Site (alternative to script)

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 89)May include surrounding context.

md
## API Reference

**Base URL:** `https://api.clawdship.dev/v1`
**Auth:** `Authorization: Bearer cship_...`

### Deploy Static Site (alternative to script)

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 92)May include surrounding context.

md
## API Reference

**Base URL:** `https://api.clawdship.dev/v1`
**Auth:** `Authorization: Bearer cship_...`

### Deploy Static Site (alternative to script)

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 103)May include surrounding context.

md
## API Reference

**Base URL:** `https://api.clawdship.dev/v1`
**Auth:** `Authorization: Bearer cship_...`

### Deploy Static Site (alternative to script)

External Transmission

Medium
Category
Data Exfiltration
Confidence
87% confidence
Finding

This example performs an actual POST of a tarball to a third-party API, so it is a real external transmission path. Even if intended for deployment, the action can leak proprietary files or embedded secrets if the packaged directory is broader than expected.

Content

Scanner excerpt · SKILL.md (reported line 55)May include surrounding context.

bash
tar czf /tmp/archive.tar.gz -C ./dist .
curl -s -X POST https://api.clawdship.dev/v1/sites \
  -F "name=my-app" -F "type=static" -F "slug=my-app" \
  -F "archive=@/tmp/archive.tar.gz"

External Transmission

Medium
Category
Data Exfiltration
Confidence
87% confidence
Finding

This example performs an actual POST of a tarball to a third-party API, so it is a real external transmission path. Even if intended for deployment, the action can leak proprietary files or embedded secrets if the packaged directory is broader than expected.

Content

Scanner excerpt · SKILL.md (reported line 55)May include surrounding context.

bash
tar czf /tmp/archive.tar.gz -C ./dist .
curl -s -X POST https://api.clawdship.dev/v1/sites \
  -F "name=my-app" -F "type=static" -F "slug=my-app" \
  -F "archive=@/tmp/archive.tar.gz"

External Transmission

Medium
Category
Data Exfiltration
Confidence
89% confidence
Finding

This Docker deployment flow uploads an entire project archive, potentially including application code, configuration, credentials, and a Dockerfile that may encode sensitive build steps. The impact is higher because full application projects typically contain more sensitive material than a static site bundle, and deployment may also cause remote build execution and public exposure.

Content

Scanner excerpt · SKILL.md (reported line 66)May include surrounding context.

bash
tar czf /tmp/archive.tar.gz -C ./my-project .
curl -s -X POST https://api.clawdship.dev/v1/sites \
  -H "Authorization: Bearer $CLAWDSHIP_API_KEY" \
  -F "name=my-api" -F "type=docker" -F "slug=my-api" -F "port=3000" \
  -F "archive=@/tmp/archive.tar.gz"

External Transmission

Medium
Category
Data Exfiltration
Confidence
81% confidence
Finding

The documented delete operation can irreversibly remove a deployed site through an external API call. In an agent setting, destructive remote operations are security-relevant because broad triggers or ambiguous intent could lead to accidental service disruption or loss of deployed assets.

Content

Scanner excerpt · SKILL.md (reported line 86)May include surrounding context.

md
curl -s -H "Authorization: Bearer $CLAWDSHIP_API_KEY" https://api.clawdship.dev/v1/sites/SITE_ID

# Redeploy
curl -s -X POST -H "Authorization: Bearer $CLAWDSHIP_API_KEY" https://api.clawdship.dev/v1/sites/SITE_ID/redeploy

# Delete
curl -s -X DELETE -H "Authorization: Bearer $CLAWDSHIP_API_KEY" https://api.clawdship.dev/v1/sites/SITE_ID

External Transmission

Medium
Category
Data Exfiltration
Confidence
85% confidence
Finding

Redeploying with a new archive again transmits local files to an external service, carrying the same risk of source and secret exposure as the initial upload. Because redeploys may happen repeatedly and more casually, users may be less vigilant about what is inside the packaged directory.

Content

Scanner excerpt · SKILL.md (reported line 115)May include surrounding context.

bash
tar czf /tmp/archive.tar.gz -C ./dist .
curl -s -X POST "https://api.clawdship.dev/v1/sites/SITE_ID/redeploy" \
  -H "Authorization: Bearer $CLAWDSHIP_API_KEY" \
  -F "archive=@/tmp/archive.tar.gz"

External Transmission

Medium
Category
Data Exfiltration
Confidence
83% confidence
Finding

The credit top-up request initiates a billing-related external action and is security-sensitive because it can lead to financial consequences. In an agent workflow, combining remote payment flows with broad deployment triggers raises the risk of unintended charges or confusing users about when payment is being initiated.

Content

Scanner excerpt · SKILL.md (reported line 127)May include surrounding context.

bash
# Top up credits — returns 402 with x402 payment instructions
curl -X POST -H "Authorization: Bearer $CLAWDSHIP_API_KEY" \
  https://api.clawdship.dev/v1/credits/topup/5

# Amounts: $5, $10, $20, $50
# Requires: x402-compatible SDK + USDC on Base (chain 8453)

Static analysis

No suspicious patterns detected.