Back to skill

Security audit

PopUp Referrals

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent read-only PopUp referral viewer, but its README includes risky maintainer commands that run an unpinned CLI and place a real token on the command line.

Installing the skill for read-only referral lookup appears aligned with its stated purpose, but maintainers should not follow the README commands as written. Use a pinned or locally vetted ClawHub CLI version, avoid putting real tokens directly in command-line arguments, and rotate any token previously used that way.

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

T08 · Insecure Dependencies

Warning
Location
README.md:12
Finding
Execution of an Unpinned Mutable npm Package## Vulnerability Details **File Location**: `README.md`, lines 12-37 **Vulnerability Type**: Supply-chain risk caused by unpinned package execution **Risk Level**: Medium ### Vulnerable Code ```bash npx clawhub@latest auth login --token "clh_..." --no-browser --registry "https://www.clawhub.ai/" ``` ```bash npx clawhub@latest publish ./clawhub-skill \ --slug popup-referrals \ --name "PopUp Referrals" \ --version 1.1.0 \ --changelog "v1.1.0: Improved skill description and metadata" \ --tags "referrals,earnings,vendors,popup" ``` ```bash npx clawhub@latest publish ./clawhub-skill \ --slug popup-referrals \ --name "PopUp Referrals" \ --version 1.2.0 \ --changelog "Description of changes" \ --tags "referrals,earnings,vendors,popup" ``` ### Technical Analysis The publishing instructions use `npx` with the mutable `latest` package tag. If the requested package version is not already available locally, `npx` may download and immediately execute package code from the configured npm registry. The `latest` tag can be changed after this project has been reviewed, so the effective code executed by these commands is neither version-pinned nor integrity-verified. This creates a supply-chain trust boundary outside the audited project. A compromised maintainer account, malicious package release, registry compromise, or compromised transitive dependency could cause arbitrary JavaScript to execute when a maintainer follows the documented workflow. ### Attack Path 1. An attacker compromises the `clawhub` npm package, its publishing account, its distribution channel, or a dependency used during CLI startup. 2. The attacker publishes a malicious release and assigns it to the `latest` tag. 3. A project maintainer follows `README.md` and runs one of the documented `npx clawhub@latest` commands. 4. `npx` retrieves and executes the attacker-controlled package in the maintainer's local environment. ...[truncated 665 chars]
Remediation
## Remediation Suggestions - Replace `clawhub@latest` with a reviewed, exact package version, such as `clawhub@1.2.3`. - Commit and enforce an appropriate lockfile where the publishing tool is managed as a project dependency. - Use deterministic installation commands that enforce lockfile integrity. - Verify package provenance, registry origin, checksums, and signatures before execution. - Review dependency updates before changing the pinned version. - Run publishing tooling in an isolated, minimally privileged environment with only the credentials required for publication. - Avoid exposing unrelated environment variables, SSH agents, or filesystem mounts to the publishing process.

T09 · Insecure Skill Coding Practices

Warning
Location
README.md:12
Finding
Authentication Token Passed Through a Command-Line Argument## Vulnerability Details **File Location**: `README.md`, line 12 **Vulnerability Type**: Credential exposure through process arguments and shell history **Risk Level**: Medium ### Vulnerable Code ```bash npx clawhub@latest auth login --token "clh_..." --no-browser --registry "https://www.clawhub.ai/" ``` The accompanying instruction tells users to replace `clh_...` with their actual CLI token. ### Technical Analysis Passing a secret through the `--token` command-line option can expose it outside the intended authentication process. Depending on the operating system, shell, terminal tooling, and logging configuration, the complete command may be retained in shell history, terminal transcripts, command auditing records, diagnostic output, or automation logs. Process arguments may also be observable by other local processes or users while the command is running. Although the repository contains only a placeholder and does not hardcode a real token, the documented workflow directs users to place a real credential in an exposure-prone channel. ### Attack Path 1. A user replaces the placeholder with a valid ClawHub CLI token and runs the documented command. 2. The shell records the command in its history, or the command is captured by process monitoring, CI logs, terminal recording, or audit tooling. 3. Another local user, malicious process, log reader, or party with access to synchronized shell history retrieves the token. 4. The attacker submits the stolen token to the ClawHub service. 5. The attacker performs operations permitted by the token, potentially including accessing account resources or publishing modified skill versions. ### Impact Assessment Exploitation grants the attacker the service privileges assigned to the exposed ClawHub token. Depending on token scope, this may permit account impersonation, unauthorized publication or modification of packages, access to private registry information, or other authent ...[truncated 221 chars]
Remediation
## Remediation Suggestions - Do not instruct users to place authentication tokens directly in command-line arguments. - Prefer an interactive hidden prompt or standard input that does not echo or persist the token. - If supported by the CLI, read the credential from a protected environment variable or operating-system credential store without reproducing it in command output. - Ensure CI systems inject the token through a secret manager and mask it in all logs. - Use short-lived, narrowly scoped tokens with only the permissions required for publication. - Document immediate token revocation and rotation procedures for suspected exposure. - Advise users who previously followed the command with a real token to remove relevant shell-history entries and rotate the credential.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (4)

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The README instructs users to run `npx clawhub@latest`, which fetches and executes the latest package version at runtime rather than a reviewed, immutable release. If the package is compromised, typosquatted, or a malicious update is published, users following the documentation could execute attacker-controlled code during authentication or publishing.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
This publish command again relies on `npx clawhub@latest`, causing remote code to be resolved and executed dynamically at the time the user runs it. Because publishing workflows often involve credentials and package metadata, a compromised upstream release could steal tokens or alter what gets published.

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding
The verification step still uses `npx clawhub@latest`, so even a seemingly harmless info command may execute newly downloaded code from the package registry. In this skill context, the README is operational guidance for users, so unsafe install-and-run instructions directly increase supply-chain risk for anyone managing the skill.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The update instructions repeat the same unpinned `@latest` pattern, exposing maintainers to arbitrary code execution from future package releases during a sensitive publishing action. Since this is repeated across the documentation, it reflects a systemic supply-chain hygiene issue rather than an isolated typo.

Static analysis

No suspicious patterns detected.