Back to skill

Security audit

free

Security checks for vulnerabilities and agentic risk

Overview

FreeRide does what it says, but it can persistently change OpenClaw model routing and includes unpinned, inconsistent install instructions that warrant Review before installation.

Install only if you are comfortable with the skill changing your OpenClaw default model and fallback list. Review the install command, prefer the documented free-ride slug, pin installer and Python dependency versions where possible, back up ~/.openclaw/openclaw.json, and use watcher/daemon mode only after explicitly opting into automatic model rotation.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Warning
Location
skill.json:40
Finding

Mutable Dependencies and Inconsistent Skill Identifier Create Supply-Chain Risk

Content
View full analysis
=2.31.0 ``` `setup.py:10-12`: ```python install_requires=[ "requests>=2.31.0", ], ``` ### Technical Analysis The installation procedure executes the mutable `latest` release of the `clawhub` npm package through `npx`. Because no exact version or package integrity value is specified, the code executed during installation can change after this Skill has been reviewed. The Python dependency declaration also imposes only a minimum version. Any future `requests` release satisfying `>=2.31.0` may consequently be selected during installation. Although `requests` is a legitimate dependency, unconstrained future resolution reduces reproducibility and makes the installed dependency set differ from the set that was audited. There is also an identifier inconsistency: the documented and published Skill slug is `free-ride`, while the installation command in `skill.json` requests `freeride`. Depending on registry behavior, this may cause installation failure or resolution to a different Skill. If an unrelated registry entry can claim or already owns the alternate identifier, users following the metadata-provided command could install unintended content. These conditions constitute a supply-chain weakness rather than evidence that the currently reviewed dependencies are malicious. ### Attack Path 1. A user or automated installer reads and executes the installation command from `skill.jso ...[truncated 1570 chars]
Remediation
View remediation
install free-ride ``` 2. Use the canonical Skill identifier consistently. Change `freeride` in `skill.json` to `free-ride` if that is the registry's canonical slug: ```json "install": "npx clawhub@ install free-ride && cd ~/.openclaw/workspace/skills/free-ride && pip install -e ." ``` 3. Pin Python dependencies to reviewed versions instead of allowing all future releases: ```text requests== ``` 4. Generate and maintain a lockfile or hash-verified requirements file. For example, use `pip-compile --generate-hashes` and install with: ```bash pip install --require-hashes -r requirements.txt ``` 5. Review dependency updates explicitly through a controlled update process, including source, maintainer, changelog, and vulnerability checks. 6. Ensure the installation documentation, `skill.json`, `_meta.json`, repository metadata, and package metadata all use the same canonical name and version. 7. Where supported, verify downloaded Skill artifacts with registry integrity metadata, signatures, or checksums before installation. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Taint TrackingDirect Taint Flow, Variable-Mediated Taint Flow, Credential Exfiltration Chain
Findings (20)

Tainted flow: 'headers' from os.environ.get (line 68, credential/environment) → requests.get (network output)

Critical
Category
Data Flow
Confidence
90% confidence
Finding

Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.

Content

Scanner excerpt · main.py (reported line 74)May include surrounding context.

python
}

    try:
        response = requests.get(OPENROUTER_API_URL, headers=headers, timeout=30)
        response.raise_for_status()
        data = response.json()
        return data.get("data", [])

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 · README.md (reported line 5)May include surrounding context.

md
### Stop paying for AI. Start riding free.

[![ClawHub Downloads](https://api.clawhub-badge.xyz/badge/free-ride/downloads.svg)](https://clawhub.ai/skills/free-ride)
[![ClawHub Current Installs](https://api.clawhub-badge.xyz/badge/free-ride/installs-current.svg)](https://clawhub.ai/skills/free-ride)
[![ClawHub Stars](https://api.clawhub-badge.xyz/badge/free-ride/stars.svg)](https://clawhub.ai/skills/free-ride)
[![ClawHub Version](https://api.clawhub-badge.xyz/badge/free-ride/version.svg)](https://clawhub.ai/skills/free-ride)

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 · README.md (reported line 6)May include surrounding context.

md
### Stop paying for AI. Start riding free.

[![ClawHub Downloads](https://api.clawhub-badge.xyz/badge/free-ride/downloads.svg)](https://clawhub.ai/skills/free-ride)
[![ClawHub Current Installs](https://api.clawhub-badge.xyz/badge/free-ride/installs-current.svg)](https://clawhub.ai/skills/free-ride)
[![ClawHub Stars](https://api.clawhub-badge.xyz/badge/free-ride/stars.svg)](https://clawhub.ai/skills/free-ride)
[![ClawHub Version](https://api.clawhub-badge.xyz/badge/free-ride/version.svg)](https://clawhub.ai/skills/free-ride)

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 · README.md (reported line 7)May include surrounding context.

md
### Stop paying for AI. Start riding free.

[![ClawHub Downloads](https://api.clawhub-badge.xyz/badge/free-ride/downloads.svg)](https://clawhub.ai/skills/free-ride)
[![ClawHub Current Installs](https://api.clawhub-badge.xyz/badge/free-ride/installs-current.svg)](https://clawhub.ai/skills/free-ride)
[![ClawHub Stars](https://api.clawhub-badge.xyz/badge/free-ride/stars.svg)](https://clawhub.ai/skills/free-ride)
[![ClawHub Version](https://api.clawhub-badge.xyz/badge/free-ride/version.svg)](https://clawhub.ai/skills/free-ride)

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 · README.md (reported line 8)May include surrounding context.

md
### Stop paying for AI. Start riding free.

[![ClawHub Downloads](https://api.clawhub-badge.xyz/badge/free-ride/downloads.svg)](https://clawhub.ai/skills/free-ride)
[![ClawHub Current Installs](https://api.clawhub-badge.xyz/badge/free-ride/installs-current.svg)](https://clawhub.ai/skills/free-ride)
[![ClawHub Stars](https://api.clawhub-badge.xyz/badge/free-ride/stars.svg)](https://clawhub.ai/skills/free-ride)
[![ClawHub Version](https://api.clawhub-badge.xyz/badge/free-ride/version.svg)](https://clawhub.ai/skills/free-ride)

Rp1

Medium
Category
MCP Rug Pull
Confidence
91% confidence
Finding

The installation instructions use npx clawhub@latest install free-ride, which pulls and executes the latest package version at install time without pinning a known-good release. This creates a supply-chain risk: if the package or one of its dependencies is compromised, users may execute attacker-controlled code during installation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The README advertises a watcher daemon that continuously monitors for rate limits and automatically rotates models, which modifies operational behavior and likely changes OpenClaw configuration or runtime model selection. While this is presented as a feature, the documentation does not prominently warn users that automated background behavior can alter model routing and persistence, increasing the chance of unexpected changes or misuse in sensitive environments.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding

The skill performs actions that require environment access, file modification, and network-dependent setup, but it declares no explicit tool scope or permissions boundary. That makes its operational power opaque to users and orchestrators, increasing the chance it will be invoked with broader capabilities than intended and making review/enforcement harder.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The description says to use the skill whenever the user mentions free AI, OpenRouter, model switching, rate limits, or reducing costs, which is broad enough to trigger in many loosely related conversations. Overbroad routing can cause the agent to select a config-modifying skill when the user only wanted advice, increasing the risk of unintended state changes.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill instructs the agent to run commands that change ~/.openclaw/openclaw.json and then restart the OpenClaw gateway, but it does not require an explicit warning or confirmation immediately before those system-impacting actions. In context, this is more dangerous because the skill is designed to alter persistent configuration and service behavior, so unintended invocation or user misunderstanding can disrupt existing model routing, sessions, or custom setups.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The implementation never provides or guarantees unlimited access; it fetches model metadata from OpenRouter, picks models, and writes configuration. This overstates the behavior and can mislead users about what the skill actually accomplishes.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill rewrites the user's OpenClaw configuration file automatically, including primary and fallback model settings, without interactive confirmation, backup, or transactional safeguards. In a skill context that may be invoked by an agent from natural-language requests, this can silently alter local AI routing and persist unintended state changes, potentially breaking the user's setup or redirecting future usage.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

This manifest lists generic one-word commands like "list", "switch", "auto", "status", and "refresh" without any namespace, activation constraints, or negative examples. In a manifest file, such broad trigger terms can overlap with common user intent and make it unclear when this skill should activate versus other skills or normal assistant behavior.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
96% confidence
Finding

The install command executes npx clawhub@latest, which fetches and runs the most recent published package rather than a pinned, reviewed version. This creates a supply-chain risk: if the upstream package is compromised or a breaking/malicious release is published, installation of this skill will execute untrusted code on the user's machine.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The manifest's install field runs shell commands that perform package installation (npx ... and pip install -e .) without any inline warning about code execution or dependency trust. In this skill's context, installation pulls and executes remote code and then installs Python packages into the environment, increasing the risk of unexpected code execution, supply-chain compromise, and unsafe modifications to the user's system.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
80% 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 · watcher.py (reported line 98)May include surrounding context.

python
}

    try:
        response = requests.post(
            OPENROUTER_CHAT_URL,
            headers=headers,
            json=payload,

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The watcher automatically rewrites the user's OpenClaw configuration when it detects rate limits or runs initial setup, without an interactive confirmation, dry-run, or explicit opt-in at the point of change. In a skill that manages model selection and runs as a daemon or cron job, this creates a real integrity risk because configuration can change unexpectedly and persistently, potentially altering model behavior, cost, or reliability assumptions.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The manifest describes ranking free OpenRouter models, configuring fallbacks, and updating openclaw.json. While network access and config writes are expected for that purpose, credential discovery from both process environment and config file is an additional capability not explicitly justified by the stated scope, since the skill could have required the key to be provided directly instead of probing multiple sources.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
97% confidence
Finding

The dependency is specified as requests>=2.31.0, which allows any newer release to be installed without reproducibility or review. This creates supply-chain risk because future vulnerable or breaking versions could be pulled in automatically, and it also prevents auditors from knowing exactly which version is deployed.

Content

Scanner excerpt · requirements.txt (reported line 1)May include surrounding context.

text
requests>=2.31.0

Unverifiable Dependency: requests has 16 known advisory(ies) (CVE-2014-1830 (Exposure of Sensitive Information to an Unauthorized Actor in Requests); CVE-2024-47081 (Requests vulnerable to .netrc credentials leak via malicious URLs); CVE-2024-35195 (Requests `Session` object does not verify requests after making first request wi) +13 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
94% confidence
Finding

Because requests is unpinned, the manifest does not prove whether the installed version includes fixes for known advisories affecting some releases of the package. In a skill that interacts with remote APIs like OpenRouter, use of a vulnerable HTTP client could expose credentials, mishandle TLS or redirects, or leak sensitive request data depending on the version resolved at install time.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.