Back to skill

Security audit

Free Ride

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed OpenClaw/OpenRouter configuration helper, with some operational risks users should opt into knowingly.

Before installing, understand that FreeRide will modify your OpenClaw model configuration and use your OpenRouter API key to fetch and probe models. Only run the background watcher if you want continuous monitoring and automatic config rotation, and consider using pinned installer/dependency versions in security-sensitive environments.

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:47
Finding

Unpinned Executable Dependencies Make Installation Non-Reproducible

Content
View full analysis
=2.31.0", ], ``` `requirements.txt:1`: ```text requests>=2.31.0 ``` ### Technical Analysis The documented installation process invokes `npx clawhub@latest`, which resolves and executes the release currently associated with the mutable `latest` tag. Consequently, the code executed during installation can change after this Skill version has been audited. The Python dependency specification also uses the open-ended constraint `requests>=2.31.0`. It permits any future compatible or incompatible release above the minimum version rather than limiting installation to a reviewed artifact. No lock file, exact version, or package hash is provided. These practices do not prove that the current dependencies are malicious. However, they create a supply-chain trust boundary in which future, unaudited package versions can be selected and executed or imported. Installation is therefore not reproducible from the audited project contents alone. ### Attack Path 1. An attacker compromises an upstream package publisher, registry account, distribution channel, or mutable release tag. 2. The attacker publishes a malicious future release that satisfies `clawhub@latest` or `requests>=2.31.0`. 3. A user follows the Skill's documented install ...[truncated 1330 chars]
Remediation
View remediation
install free-ride ``` 2. Pin Python dependencies to exact reviewed versions in both dependency declarations: ```python install_requires=[ "requests==", ] ``` ```text requests== ``` 3. Generate and publish a lock file containing transitive dependency versions. 4. Use hash verification for Python packages, such as a hash-locked requirements file installed with: ```bash pip install --require-hashes -r requirements.txt ``` 5. Document the expected package registry and index URLs to reduce dependency-confusion and registry-substitution risks. 6. Use automated dependency review to test and approve version updates before changing pins. 7. Where practical, distribute signed or checksummed release artifacts and verify their integrity 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
  • Memory PoisoningPersistent Context Injection, Context Window Stuffing, Memory Manipulation
  • Rogue AgentSelf-Modification, Session Persistence
Findings (20)

Tp4

High
Category
MCP Tool Poisoning
Confidence
92% confidence
Finding

The advertised description frames the skill as a simple model-selection/config updater, but the content also introduces a persistent watcher daemon with continuous probes, state files, logging, and autonomous recovery behavior. This mismatch is dangerous because users or orchestration systems may invoke the skill expecting a one-shot configuration change, while it can establish long-running background activity and ongoing network/file operations.

Content

No source excerpt is available for this finding.

Memory Manipulation

High
Category
Memory Poisoning
Confidence
90% confidence
Finding

Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.

Content

Scanner excerpt · watcher.py (reported line 39)May include surrounding context.

python
def _atomic_write(path: Path, content: str):
    """Write atomically via tmp + rename so a crash mid-write can't corrupt state."""
    path.parent.mkdir(parents=True, exist_ok=True)
    tmp = path.with_suffix(path.suffix + ".tmp")
    tmp.write_text(content)

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 README instructs users to execute npx clawhub@latest install free-ride, which pulls and runs the latest remote package version at install time without pinning to a known-good release. This creates a supply-chain risk: if the upstream package is compromised or a breaking/malicious version is published, 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
92% confidence
Finding

The README tells users to place API keys in environment variables or application config but does not warn about secret-handling risks such as shell history leakage, world-readable config files, accidental check-in, or exposure via process inspection depending on platform/setup. Because these credentials enable use of external AI services, leakage could allow unauthorized API use and account abuse.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The README promotes a long-running watcher that automatically rotates models and rewrites local configuration, including running persistently via nohup, but does not clearly foreground that the tool will continue modifying ~/.openclaw/openclaw.json in the background. Persistent autonomous config mutation can surprise users, interfere with other tooling, and make incident response or rollback harder if behavior becomes unsafe or incorrect.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
65% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

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

md
freeride-watcher

# Background, persistent across logout
nohup freeride-watcher > ~/.openclaw/freeride-watcher.log 2>&1 &

# One-off check (no loop)
freeride-watcher --once

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding

The skill declares access to environment secrets, network, and file writes, but does not define an explicit tool/permission scope to constrain how those capabilities may be used. In practice this increases the blast radius of misuse or prompt-triggered abuse, especially because the skill instructs checking and persisting an API key and modifying OpenClaw configuration.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger phrases are broad enough to match common discussions about AI costs, model switching, or rate limits, which can cause the skill to activate outside its narrow intended use. Because the skill can write config, restart services, and potentially lead to background process setup, accidental activation can result in unintended configuration changes or service disruption.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
90% confidence
Finding

The documented use of nohup to run a persistent background watcher creates session persistence outside the immediate user interaction. Even if intended for reliability, persistence is security-relevant because it enables continued network access, config manipulation, and log/state file creation after the initiating session ends.

Content

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

md
freeride-watcher

# Persistent background
nohup freeride-watcher > ~/.openclaw/freeride-watcher.log 2>&1 &

# One-shot check (no loop)
freeride-watcher --once

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

This code performs persistent file writes to the user's OpenClaw config via save_openclaw_config after modifying model and fallback settings. Although there are status prints, there is no confirmation step before overwriting the existing configuration, which is a safety-relevant change to user system state.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The manifest describes ranking free OpenRouter models, configuring fallbacks, and updating openclaw.json. In addition to that, the code actively sends test prompts to models via /chat/completions and rotates configuration based on probe results, which is a broader operational behavior than simple ranking/configuration management.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding

The install command invokes npx clawhub@latest, which fetches and executes the latest published package at install time rather than a pinned, audited version. This creates a supply-chain risk: if the package is compromised or a malicious update is published, arbitrary code could run during installation with the user's privileges. The skill context increases the danger because the installer also changes directories into the skill workspace and then performs pip install -e ., meaning a compromised bootstrap step could tamper with local files or alter what gets installed next.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

The top-level documentation makes a strong claim about providing 'unlimited free AI access'. The implementation clearly depends on OpenRouter API keys, handles 401/429 failures, and can exhaust all keys or find no working models, so the documentation contradicts the actual behavior and guarantees of the code.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
77% confidence
Finding

The function persists API-derived model metadata to ~/.openclaw/.freeride-cache.json. While cache refresh commands later print cache-related messages, the write path itself has no direct warning or inline comment telling users that data will be stored locally.

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 future release and does not guarantee a reproducible or reviewed install. This weakens supply-chain control and can unintentionally pull in vulnerable or breaking versions, especially in an automation skill that may be installed repeatedly across environments.

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
93% confidence
Finding

Because requests is not pinned, it is impossible to verify from this manifest whether the installed version includes fixes for known advisories. In a skill that manages AI provider configuration and may make network requests to external services, an affected requests version could expose credentials or weaken transport security depending on which release gets installed.

Content

No source excerpt is available for this finding.