Back to skill

Security audit

NadirClaw

Security checks for vulnerabilities and agentic risk

Overview

This skill is purpose-aligned for an LLM routing proxy, but it automatically installs unpinned external code, changes OpenClaw routing, and starts a detached local service that can handle future prompts.

Review this carefully before installing. Only run it if you trust the nadirclaw package source and are comfortable with OpenClaw routing being changed so prompts may pass through this proxy and onward to selected model providers. Prefer a pinned, reviewed version in a virtual environment, confirm what config files onboarding changes, know how to revert them, and start the service manually instead of using the automatic installer if you want tighter control.

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
scripts/install.sh:6
Finding
Unpinned Third-Party Package Is Installed and Immediately Executed<![CDATA[ ## Vulnerability Details **File Location**: `scripts/install.sh:6-11` **Vulnerability Type**: Unpinned and unverified third-party dependency execution **Risk Level**: Medium ### Vulnerable Code ```bash pip install nadirclaw 2>/dev/null || pip3 install nadirclaw echo "Running OpenClaw onboarding..." nadirclaw openclaw onboard echo "Starting NadirClaw in background..." nohup nadirclaw serve > /tmp/nadirclaw.log 2>&1 & ``` The installation instruction in `SKILL.md:14` likewise uses an unpinned dependency: ```bash pip install nadirclaw ``` ### Technical Analysis The installer retrieves `nadirclaw` without pinning an audited version or verifying package integrity with cryptographic hashes. It then immediately executes package-provided commands. Consequently, the code ultimately executed can change between installations without any corresponding change to this Skill. The implementation of `nadirclaw` is not included in the audited project. Its package installation hooks, onboarding behavior, configuration changes, prompt processing, and network activity therefore cannot be verified from the supplied source. Redirecting the first `pip install` command's standard error to `/dev/null` also obscures diagnostic and security-relevant installation failures. This is a supply-chain trust issue rather than evidence that the current external package is malicious. ### Attack Path 1. An attacker compromises the package publisher account, distribution infrastructure, or a future package release. 2. A user invokes `scripts/install.sh`. 3. `pip` resolves and installs the uncontrolled package version available at that time. 4. The script executes `nadirclaw openclaw onboard`, permitting package code to alter the user's OpenClaw configuration. 5. The script executes `nadirclaw serve` as a detached process. 6. Malicious package logic can operate with the invoking user's privileges and process LLM traffic routed through the service. ### Impact Assessment Successf ...[truncated 638 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin `nadirclaw` to a specifically reviewed version rather than resolving the latest available release. 2. Install from a locked requirements file containing cryptographic hashes, using `pip install --require-hashes`. 3. Verify package provenance and release signatures where supported, and document the trusted package index explicitly. 4. Review the pinned package and its transitive dependencies before distribution. 5. Install into a dedicated virtual environment with the minimum required filesystem and environment access. 6. Do not suppress installation errors; preserve standard error so failures and repository warnings remain visible. 7. Require explicit user confirmation before modifying OpenClaw configuration or starting a detached service. 8. Run the proxy under a restricted account or sandbox and expose only the network interfaces necessary for local use. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (4)

Vague Triggers

Medium
Confidence
93% confidence
Finding
The skill description uses very broad activation language such as reducing LLM spending, optimizing API usage, and model routing across providers. That can cause the skill to trigger in routine conversations where the user did not explicitly ask to install or reconfigure a routing proxy, increasing the chance of unexpected system changes or data-flow changes. In this context, over-broad activation is risky because the skill can lead to package installation, proxy setup, and provider reconfiguration.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The documentation states that `nadirclaw openclaw onboard` writes NadirClaw into OpenClaw configuration and says 'No restart needed', but it does not clearly warn that user configuration files will be modified. Silent or insufficiently disclosed config mutation is dangerous because it can alter provider routing behavior, break existing setups, or redirect future prompts without informed user consent.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The skill instructs users to point OpenAI-compatible tools and Claude Code at a local proxy endpoint, but it does not warn that prompts may then be routed onward to third-party providers such as OpenAI, Anthropic, Google, or others. This is dangerous because sensitive prompts, system instructions, or user data may traverse additional services with different retention, logging, or compliance properties than the user expects.

Session Persistence

Medium
Category
Rogue Agent
Content
nadirclaw openclaw onboard

echo "Starting NadirClaw in background..."
nohup nadirclaw serve > /tmp/nadirclaw.log 2>&1 &
echo "NadirClaw running on http://localhost:8856 (PID: $!)"
echo "Done! Your OpenClaw is now routing through NadirClaw."
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.

Static analysis

No suspicious patterns detected.