Back to skill

Security audit

litehost-connect

Security checks for vulnerabilities and agentic risk

Overview

ClawScan rates this skill suspicious with medium confidence, mainly because it reports workspace deletion beyond the declared scope and a project deletion helper that bypasses its documented confirmation gate.

Consider the undeclared workspace deletion capability and the project deletion confirmation issue before installing. The unpinned installer is also a supply-chain weakness. Skillspector’s analysis is partial: it inspected all listed components, but some local references could not be resolved, so the evidence is incomplete and does not establish that the skill is safe.

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
scripts/litehost.sh
Finding

Project deletion bypasses the documented confirmation gate

Content
View full analysis

Impact

The helper immediately sends an authenticated deletion request. For an existing project owned by the account, the documented endpoint permanently deletes the project and its associated data.

Vulnerability Patterns
  • 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
  • Output HandlingUnvalidated Output Injection, Cross-Context Output, Unbounded Output
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
Findings (26)

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
80% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · README.md (reported line 22)May include surrounding context.

md
link-opens.md         ← GET  /v1/projects/{id}/analytics      (did the client open it?)
  qr-code.md            ← GET  /qr/{id}.png | .svg              (QR to print, no key needed)
  deployment-history.md ← GET  /v1/projects/{id}/status
  delete-project.md     ← DELETE /v1/projects/{id}
  archive-project.md    ← POST /v1/projects/{id}/archive
  unarchive-project.md  ← POST /v1/projects/{id}/unarchive
  domains.md            ← GET  /v1/domains, /v1/domains/{id}, assign/remove

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · README.md (reported line 40)May include surrounding context.

md
`claimUrl` to keep the project from your browser (Google or email sign-in).

To let the agent manage your projects, it signs you in **once** with an email code and saves the
key to `~/.config/litehost/credentials.json` (permissions 600). The key renews while in use, so you
are not asked for a code again. You can also provide a permanent key from
[litehost.io/dashboard → Integrations](https://litehost.io/dashboard):

Description-Behavior Mismatch

High
Category
MCP Tool Poisoning
Confidence
91% confidence
Finding

The code targets the workspace resource itself. Workspace deletion is a distinct administrative operation not stated in the description; mentioning deletion of hosted content and projects does not explicitly cover deleting their workspace. The request uses the expected service, but its resource scope exceeds the declared capabilities.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

md
required_environment_variables:
  - name: LITEHOST_API_KEY
    prompt: "Your Litehost API key (format: lh_live_...). Optional."
    help: "Optional. Without it the skill publishes with no sign-in, or signs in once and saves the key to ~/.config/litehost/credentials.json. Permanent keys: https://litehost.io/dashboard → Integrations."
    required_for: "Managing existing projects. Not needed to publish (POST /v1/projects/temp)."
---

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

md
`nextStep`. Only `API_KEY_INVALID` / `API_KEY_EXPIRED` (after `forget`) lead to signing in.
- **Never rely on `export LITEHOST_API_KEY=…`.** Each command usually runs in a new shell, so the
  variable is gone on the next call and every request fails with 401. The helper reads the key
  from `~/.config/litehost/credentials.json` on every call.
- **Request a code once per sign-in.** If you request again while a code is open, nothing new is
  sent. A wrong code (`OTP_INVALID`) means the user mistyped: ask them to re-check, never request
  a new one.

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · actions/otp-sign-in.md (reported line 57)May include surrounding context.

scripts/litehost.sh verify you@example.com 482931

text

On success the helper saves the key to `~/.config/litehost/credentials.json` (permissions 600)
and prints it masked:

```json

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · utils/auth.md (reported line 44)May include surrounding context.

bash
curl https://connect.litehost.io/v1/user \
  -H "Authorization: Bearer $(sed -n 's/.*"apiKey"[^"]*"\([^"]*\)".*/\1/p' ~/.config/litehost/credentials.json)"

Key types

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
80% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · actions/delete-project.md (reported line 8)May include surrounding context.

Endpoint

text
DELETE /v1/projects/{projectId}

Parameters

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · actions/otp-sign-in.md (reported line 61)May include surrounding context.

and prints it masked:

json
{"status":"success","email":"you@example.com","apiKey":"lh_live_a1b2…9f0e","savedTo":"/home/you/.config/litehost/credentials.json","expiresAt":"2026-12-27T12:00:00.000Z","note":"Key saved; it renews while in use. Do not sign in again."}

Tell the user: "You're signed in as {email}. I saved the key in {savedTo}, so you won't need a code

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/litehost.sh (reported line 20)May include surrounding context.

sh
#       litehost.sh api POST /v1/projects -F "title=Site" -F "files=@index.html"
#
# Key lookup order: $LITEHOST_API_KEY, then $LITEHOST_CREDENTIALS
# (default ~/.config/litehost/credentials.json).

set -euo pipefail

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · utils/auth.md (reported line 12)May include surrounding context.

md
## Find the key (every session)

1. `LITEHOST_API_KEY` environment variable, if set
2. `~/.config/litehost/credentials.json` (`{"apiKey": "...", "email": "..."}`)

`scripts/litehost.sh` does this lookup on every call. Check the key once per session:

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · actions/otp-sign-in.md (reported line 76)May include surrounding context.

text

Take `data.apiKey` and store it where it survives this session, in this order of preference:
1. `~/.config/litehost/credentials.json` as `{"apiKey":"lh_live_…","email":"…"}` with `chmod 600`
2. The agent's secret store, as `LITEHOST_API_KEY`
3. No storage at all: ask the user to keep the key and paste it next time

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
80% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · actions/workspaces.md (reported line 84)May include surrounding context.

Delete Workspace

text
DELETE /v1/workspaces/{workspaceId}

Projects inside the workspace are NOT deleted. They move to the user's personal scope (workspaceId becomes null).

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/litehost.sh (reported line 25)May include surrounding context.

sh
set -euo pipefail

BASE="${LITEHOST_API_URL:-https://connect.litehost.io}"
CRED="${LITEHOST_CREDENTIALS:-$HOME/.config/litehost/credentials.json}"

json_field() { # json_field NAME < json  (flat string fields only)
  sed -n "s/.*\"$1\"[[:space:]]*:[[:space:]]*\"\([^\"]*\)\".*/\1/p" | head -n 1

MCP server referenced without pinned version: 'npx skills'.

Medium
Category
MCP Rug Pull
Confidence
88% confidence
Finding

The installation command invokes an unpinned npm package through npx, allowing the code executed during installation to change independently of this documentation. A compromised future release could execute with the installing user's privileges; this is a supply-chain weakness rather than evidence of a malicious MCP server.

Content

No source excerpt is available for this finding.

MCP server referenced without pinned version: 'npx skills'.

Medium
Category
MCP Rug Pull
Confidence
88% confidence
Finding

The quick-install command executes the skills npm package without specifying a version. Installation therefore trusts whichever release resolves at execution time, creating a supply-chain execution risk if that release is compromised.

Content

No source excerpt is available for this finding.

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · README.md (reported line 116)May include surrounding context.

Skills

When the user asks to deploy, host, publish, or manage a project on Litehost, read and follow the skill at ~/.claude/skills/litehost-connect/SKILL.md.

text

### Cursor

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · README.md (reported line 138)May include surrounding context.


When the user asks to deploy, host, publish, update, or manage a project on Litehost, read and follow the skill at .cursor/skills/litehost-connect/SKILL.md.

text

### General Agents

Skill declares no tool scope ('permissions' or 'allowed-tools') but code capabilities were detected: network, shell.

Medium
Category
MCP Least Privilege
Confidence
70% confidence
Finding

Without declared permissions the skill's intent is opaque and cannot be validated.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · actions/domains.md (reported line 68)May include surrounding context.

Returns domain info plus all projects currently assigned to it.

bash
curl https://connect.litehost.io/v1/domains/{domainId} \
  -H "Authorization: Bearer $LITEHOST_API_KEY"

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · actions/otp-sign-in.md (reported line 24)May include surrounding context.

Equivalent curl:

bash
curl -X POST https://connect.litehost.io/v1/auth/otp/request \
  -H "Content-Type: application/json" \
  -d '{"email":"you@example.com"}'

The upload workflow lacks a privacy warning before sending user files to a third-party hosting service.

Medium
Category
Output Handling
Confidence
90% confidence
Finding

The workflow sends local files to connect.litehost.io and publishes them at a live URL, but provides no warning about uploading sensitive content or its accessibility through that URL. The opening description explains the upload functionality and expiry, but does not address these privacy implications.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · actions/update-project.md (reported line 45)May include surrounding context.

Example — make project private

bash
curl -X PATCH https://connect.litehost.io/v1/projects/{projectId} \
  -H "Authorization: Bearer $LITEHOST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"access": "private"}'

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · actions/workspaces.md (reported line 53)May include surrounding context.

| name | string | yes | Display name. 1–255 chars. |

bash
curl -X POST https://connect.litehost.io/v1/workspaces \
  -H "Authorization: Bearer $LITEHOST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "My Team"}'

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · actions/workspaces.md (reported line 73)May include surrounding context.

| name | string | yes | New name. 1–255 chars. |

bash
curl -X PATCH https://connect.litehost.io/v1/workspaces/{workspaceId} \
  -H "Authorization: Bearer $LITEHOST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "New Name"}'