Back to skill

Security audit

Clawstatus Dashboard

Security checks for vulnerabilities and agentic risk

Overview

This skill is coherent for installing and running a dashboard, but it asks users to install mutable remote Python code and expose the service broadly without enough safety controls.

Review this before installing. Use a trusted, pinned ClawStatus revision if possible, prefer a virtual environment over --break-system-packages, avoid REPO_URL overrides unless you trust the source, and bind to 127.0.0.1 unless you intentionally want LAN access with firewall or authentication controls.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (1)

T03 · Remote Payload Retrieval and Execution

Error
Location
scripts/install_or_update.sh:5
Finding

Unpinned Remote Repository Is Retrieved and Installed as Executable Python Code

Content
View full analysis

Vulnerability Details

File Location: scripts/install_or_update.sh, lines 5–15
Vulnerability Type: Unverified remote payload retrieval and installation
Risk Level: High

Vulnerable Code

bash
REPO_URL="${REPO_URL:-https://github.com/NeverChenX/ClawStatus.git}"

if [[ -d "$TARGET_DIR/.git" ]]; then
  echo "[clawstatus] updating existing checkout: $TARGET_DIR"
  git -C "$TARGET_DIR" pull --ff-only
else
  echo "[clawstatus] cloning repo to: $TARGET_DIR"
  git clone "$REPO_URL" "$TARGET_DIR"
fi

echo "[clawstatus] installing editable package"
python3 -m pip install --user --break-system-packages -e "$TARGET_DIR"

Technical Analysis

The installation script clones or updates a mutable remote Git repository and immediately passes the resulting checkout to pip. It does not pin an audited commit hash, verify a cryptographic checksum, validate a signed commit or tag, or confirm that an existing checkout still uses the intended remote repository.

Python package installation can execute project-controlled build backend logic or setup code. Consequently, the effective code executed or installed by this Skill can change after the Skill itself has been reviewed. The risk applies both to new installations and updates:

  • New installations retrieve the current state of the remote repository rather than an immutable revision.
  • Existing installations trust the checkout's currently configured Git remote.
  • The REPO_URL environment variable allows the source repository to be replaced by the caller's environment.
  • --break-system-packages bypasses the distribution-managed Python environment safeguard and increases the chance of altering or conflicting with user-visible system Python packages.
  • Editable installation causes subsequent execution to continue using code from the mutable checkout.

No evidence establishes that the referenced upstream repository is currently malicious. The vulnerabil ...[truncated 1853 chars]

Remediation
View remediation

Remediation Suggestions

  1. Pin the installation to a specific, reviewed full commit hash rather than the repository's moving default branch.
  2. Verify the checked-out commit against the expected hash before invoking Python or pip.
  3. Where available, require and verify a signed commit or signed release tag against an explicitly trusted maintainer key.
  4. Do not allow unrestricted REPO_URL overrides. If configurability is required, validate the URL against an explicit allowlist and require a corresponding trusted revision.
  5. For an existing checkout, verify that remote.origin.url matches the expected canonical repository before pulling.
  6. Avoid automatically updating and installing in one operation. Retrieve the update, verify it, and only then perform installation as a separate step.
  7. Install into a dedicated virtual environment instead of using --user --break-system-packages.
  8. Lock and verify build and runtime dependencies, including build-system requirements declared by the downloaded project.
  9. Prefer an immutable, reproducibly built release artifact with a published checksum over an editable installation from a mutable checkout.
  10. If editable mode is necessary for development, clearly restrict it to trusted development environments and revalidate the checkout before every execution.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (3)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill explicitly instructs operators to start the dashboard with --host 0.0.0.0 and to verify LAN reachability, which exposes the service on all network interfaces by default. In a deployment skill, this is dangerous because it normalizes remote access without any warning about authentication, firewall restrictions, or whether the dashboard is intended to be safely internet- or LAN-accessible.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The documented run command binds the dashboard to 0.0.0.0, exposing it on all network interfaces, and the file also encourages LAN access verification. Without any warning about authentication, firewall restrictions, or trusted-network assumptions, this can unintentionally publish an internal dashboard to other hosts on the network.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
85% confidence
Finding

The phrase 切换模型 appears in the documentation, introducing a specific language in user-facing text without any opt-in or explanation of locale expectations. This can violate language/locale policy when a skill implicitly forces or assumes a language choice.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.