Back to skill

Security audit

Human-Rent

Security checks for vulnerabilities and agentic risk

Overview

This skill mostly matches its stated paid human-dispatch purpose, but it needs Review because its documentation includes unsafe agent-integration code and risky credential-handling guidance.

Install only if you trust ZhenRent and are comfortable giving the skill API credentials that can create paid real-world tasks. Do not use the documented exec() integration pattern; use argument-array process execution or a direct API wrapper. Store credentials in a proper secret manager or a 0600 env file, do not print API secrets, and leave HUMAN_RENT_AUTO_CONFIRM unset unless the account has tight spending limits and runs in a controlled environment.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T09 · Insecure Skill Coding Practices

Error
Location
INSTALLATION.md:371
Finding

Shell Command Injection in the OpenClaw Integration Example

Content
View full analysis
{ exec(cmd, (error, stdout, stderr) => { ``` ### Technical Analysis The documented OpenClaw integration constructs a shell command by directly interpolating `instruction` and `options.location`, then passes the resulting string to `child_process.exec()`. `exec()` invokes the operating-system shell. Double quotes around interpolated values do not provide reliable command injection protection. An attacker can include shell syntax such as an embedded quote, command substitution, redirection, or command separators in either value. The shell will interpret that syntax before executing `human-rent`. This is particularly dangerous in an AI-agent integration because task instructions may originate from untrusted users, external documents, web content, or model-generated text. Following the documented example can therefore turn a normal physical-task request into arbitrary local command execution. ### Attack Path 1. A user or attacker supplies a crafted task instruction or location to an OpenClaw agent. 2. The integration passes the value to `dispatchHuman()` without shell-safe argument handling. 3. The value is inserted directly into the `cmd` shell string. 4. An embedded quote terminates the intended quoted argument. 5. Shell operators introduce an additional command. 6. `exec()` starts a shell and executes both the intended command and the injected command. 7. The injected process inherits the agent's operating-system privileges and environment, potentially including ZhenRent credential ...[truncated 885 chars]
Remediation
View remediation
{ execFile('human-rent', args, { shell: false }, (error, stdout, stderr) => { if (error) { reject(error); return; } const taskIdMatch = stdout.match(/Task ID: (\S+)/); if (taskIdMatch) { resolve(taskIdMatch[1]); } else { reject(new Error('Could not parse task ID')); } }); }); } ``` Additional hardening should include: 1. Explicitly keep `shell: false`. 2. Validate location length and format before invoking the CLI. 3. Apply reasonable maximum lengths to task instructions. 4. Use a direct JavaScript API rather than a subprocess where practical. 5. Avoid attempting to solve command injection through manual quote escaping. 6. Add automated tests containing quotes, semicolons, command substitutions, newlines, and redirection operators. 7. Warn integrators that all user-controlled values must be passed as discrete process arguments. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
INSTALLATION.md:83
Finding

API Secrets Stored and Displayed Using Insecure Documentation Practices

Content
View full analysis
> ~/.bashrc echo 'export ZHENRENT_API_SECRET="zr_secret_your_secret_here"' >> ~/.bashrc source ~/.bashrc # Option 2: Add to shell profile (macOS) echo 'export ZHENRENT_API_KEY="zr_key_your_key_here"' >> ~/.zshrc echo 'export ZHENRENT_API_SECRET="zr_secret_your_secret_here"' >> ~/.zshrc source ~/.zshrc # Option 3: Create .env file (for project-specific use) cat > ~/.human-rent.env <
Remediation
View remediation
~/.human-rent.env <<'EOF' export ZHENRENT_API_KEY="replace-with-api-key" export ZHENRENT_API_SECRET="replace-with-api-secret" EOF chmod 600 ~/.human-rent.env ``` 3. Do not describe `.bashrc` or `.zshrc` as the recommended place for long-lived secrets. 4. Replace commands that print credentials with presence-only checks: ```bash test -n "${ZHENRENT_API_KEY:-}" && echo "ZHENRENT_API_KEY is configured" || echo "ZHENRENT_API_KEY is missing" test -n "${ZHENRENT_API_SECRET:-}" && echo "ZHENRENT_API_SECRET is configured" || echo "ZHENRENT_API_SECRET is missing" ``` 5. Tell users to exclude credential files from source control, backups, support archives, and diagnostic output. 6. Recommend narrowly scoped API keys, spending limits where supported, separate keys per environment, regular rotation, and immediate revocation after suspected exposure. 7. Ensure application errors and debugging modes never log the secret or full authentication headers. ]]>
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
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Rogue AgentSelf-Modification, Session Persistence
Findings (67)

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · CHANGELOG.md (reported line 209)May include surrounding context.

  1. Uninstall old version:

    bash
    clawhub uninstall human-rent
    rm -rf ~/openclaw-human-rent
    
  2. Install new version:

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · CHANGELOG.md (reported line 209)May include surrounding context.

  1. Uninstall old version:

    bash
    clawhub uninstall human-rent
    rm -rf ~/openclaw-human-rent
    
  2. Install new version:

Self-Modification

High
Category
Rogue Agent
Confidence
96% confidence
Finding

This file contains explicit instructions for a reviewer or agent to update/publish the skill itself via web, ZIP, or CLI workflows. In an agent-skill context, embedded self-publication or self-modification guidance is dangerous because it can induce an automated system or reviewer-assisting agent to alter deployment state, propagate the package, or overwrite an existing trusted version; the repeated claims that the package is 'production-ready' and 'safe to install' increase suspicion rather than reduce it.

Content

Scanner excerpt · CLAWHUB-SUBMISSION.md (reported line 212)May include surrounding context.

md
### Method 1: Web Upload (Recommended)

1. Go to: https://clawhub.ai/zhenstaff/human-rent
2. Click "Upload New Version" or "Update Skill"
3. Select folder: `/www/wwwroot/docs.zhenrent.com/human-rent/`
4. Fill in form:
   - **Version**: 0.2.1

Anti-Refusal Statement

High
Category
Anti-Refusal
Confidence
97% confidence
Finding

The phrase 'No warnings. No issues. READY TO GO!' is an anti-refusal/anti-caution signal that attempts to suppress reviewer skepticism and bypass normal validation. Given the broader file repeatedly claims 100% compliance and no security issues, this messaging increases the chance an operator will skip review and execute potentially unsafe cleanup or upload steps.

Content

Scanner excerpt · CURRENT_STATUS.txt (reported line 182)May include surrounding context.

text
ClawHub requirements and ready for immediate upload
after running the cleanup script.

No blockers. No warnings. No issues.

READY TO GO!

YARA rule 'backdoor_persistence': Backdoor persistence with malicious payloads (shell commands, SSH key injection, hidden root users) [malware]

High
Category
YARA Match
Confidence
75% confidence
Finding

YARA rule matched a known malware signature (reverse shell, backdoor, ransomware, C2 framework, or info stealer).

Content

Scanner excerpt · INSTALLATION.md (reported line 91)May include surrounding context.

your key (e.g., "OpenClaw Agent") 5. Copy the API Key and API Secret immediately

  • API Key: Starts with zr_key_
  • API Secret: Starts with zr_secret_
  • Important: API Secret is only shown once. Save it securely!

Secure Credential Storage

DO NOT commit credentials to version control!

Create a secure credential file:

bash
# Option 1: Add to shell profile (recommended)
echo 'export ZHENRENT_API_KEY="zr_key_your_key_here"' >> ~/.bashrc
echo 'export ZHENRENT_API_SECRET="zr_secret_your_secret_here"' >> ~/.bashrc
source ~/.bashrc

# Option 2: Add to shell profile (macOS)
echo 'export ZHENRENT_API_KEY="zr_key_your_key_here"' >> ~/.zshrc
echo 'export ZHENRENT_API_SECRET="zr_secret_your_secret_here"' >> ~/.zshrc
source ~/.zshrc

# Option 3: Create .env file (for project-specific use)
cat > ~/.human-rent.env <<EOF
export ZHENRENT_API_KEY="zr_key_your_key_here"
export ZHENRENT_API_SECRET="zr_secret_your_secret_here"
EOF

# Then source before use:
source ~/.human-rent

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · CLAWHUB_COMPLIANCE_REPORT.md (reported line 229)May include surrounding context.

md
echo 'export ZHENRENT_API_SECRET="zr_secret_your_secret_here"' >> ~/.zshrc
source ~/.zshrc

# Option 3: Create .env file (for project-specific use)
cat > ~/.human-rent.env <<EOF
export ZHENRENT_API_KEY="zr_key_your_key_here"
export ZHENRENT_API_SECRET="zr_secret_your_secret_here"

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · CLAWHUB_COMPLIANCE_REPORT.md (reported line 240)May include surrounding context.

md
echo 'export ZHENRENT_API_SECRET="zr_secret_your_secret_here"' >> ~/.zshrc
source ~/.zshrc

# Option 3: Create .env file (for project-specific use)
cat > ~/.human-rent.env <<EOF
export ZHENRENT_API_KEY="zr_key_your_key_here"
export ZHENRENT_API_SECRET="zr_secret_your_secret_here"

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · INSTALLATION.md (reported line 100)May include surrounding context.

md
echo 'export ZHENRENT_API_SECRET="zr_secret_your_secret_here"' >> ~/.zshrc
source ~/.zshrc

# Option 3: Create .env file (for project-specific use)
cat > ~/.human-rent.env <<EOF
export ZHENRENT_API_KEY="zr_key_your_key_here"
export ZHENRENT_API_SECRET="zr_secret_your_secret_here"

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · INSTALLATION.md (reported line 476)May include surrounding context.

md
echo 'export ZHENRENT_API_SECRET="zr_secret_your_secret_here"' >> ~/.zshrc
source ~/.zshrc

# Option 3: Create .env file (for project-specific use)
cat > ~/.human-rent.env <<EOF
export ZHENRENT_API_KEY="zr_key_your_key_here"
export ZHENRENT_API_SECRET="zr_secret_your_secret_here"

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · RELEASE-NOTES-v0.2.1.md (reported line 283)May include surrounding context.

md
echo 'export ZHENRENT_API_SECRET="zr_secret_your_secret_here"' >> ~/.zshrc
source ~/.zshrc

# Option 3: Create .env file (for project-specific use)
cat > ~/.human-rent.env <<EOF
export ZHENRENT_API_KEY="zr_key_your_key_here"
export ZHENRENT_API_SECRET="zr_secret_your_secret_here"

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · RELEASE-NOTES-v0.2.1.md (reported line 292)May include surrounding context.

md
echo 'export ZHENRENT_API_SECRET="zr_secret_your_secret_here"' >> ~/.zshrc
source ~/.zshrc

# Option 3: Create .env file (for project-specific use)
cat > ~/.human-rent.env <<EOF
export ZHENRENT_API_KEY="zr_key_your_key_here"
export ZHENRENT_API_SECRET="zr_secret_your_secret_here"

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · VERIFICATION_REPORT.md (reported line 173)May include surrounding context.

md
echo 'export ZHENRENT_API_SECRET="zr_secret_your_secret_here"' >> ~/.zshrc
source ~/.zshrc

# Option 3: Create .env file (for project-specific use)
cat > ~/.human-rent.env <<EOF
export ZHENRENT_API_KEY="zr_key_your_key_here"
export ZHENRENT_API_SECRET="zr_secret_your_secret_here"

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · INSTALLATION.md (reported line 429)May include surrounding context.

bash
   # Add to .gitignore
   echo ".human-rent.env" >> .gitignore
   echo "*.env" >> .gitignore
  1. Rotate credentials regularly

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · INSTALLATION.md (reported line 475)May include surrounding context.

md
# export ZHENRENT_API_SECRET="..."

# Remove credential files
rm -f ~/.human-rent.env
rm -f ~/.human-rent-*.env

# Remove audit logs (optional)

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · INSTALLATION.md (reported line 476)May include surrounding context.

md
# Remove credential files
rm -f ~/.human-rent.env
rm -f ~/.human-rent-*.env

# Remove audit logs (optional)
rm -f ~/human-rent-audit.log

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · INSTALLATION.md (reported line 479)May include surrounding context.

rm -f ~/.human-rent-*.env

Remove audit logs (optional)

rm -f ~/human-rent-audit.log

text

## Getting Help

Instruction Override

High
Category
Prompt Injection
Confidence
90% confidence
Finding

This pattern attempts to override system instructions or ignore safety constraints. Without LLM analysis, manual review is recommended.

Content

Scanner excerpt · RELEASE-NOTES-v0.2.1.md (reported line 74)May include surrounding context.

md
- **SSRF Protection**: URL validation prevents internal network access
- **SHA256 Integrity Checks**: File tampering detection on startup
- **Zero External Dependencies**: No npm packages, pure Node.js
- **Fail-Secure Design**: Errors block execution, never bypass security

### User Experience Enhancements

Cloud Metadata Access

High
Category
Server-Side Request Forgery
Confidence
90% confidence
Finding

Code accesses a cloud instance metadata endpoint (e.g. 169.254.169.254). A single request can return temporary IAM credentials, making this a high-value SSRF target for credential theft.

Content

Scanner excerpt · SECURITY-FIXES-v0.2.1.md (reported line 35)May include surrounding context.

bash
export ZHENRENT_API_KEY="test"
export ZHENRENT_API_SECRET="test"
export ZHENRENT_BASE_URL="http://169.254.169.254"  # AWS metadata service
human-rent dispatch "test"
# Could access internal cloud metadata

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · SECURITY-FIXES-v0.2.1.md (reported line 344)May include surrounding context.

Test 3: Missing Checksum File

bash
$ rm bin/checksums.txt
$ human-rent --version

❌ Security Error: Integrity verification failed (checksums.txt missing)

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
85% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · SECURITY-FIXES-v0.2.1.md (reported line 354)May include surrounding context.

Test 4: Missing Critical File

bash
$ rm lib/dispatch.js
$ human-rent --version

❌ Integrity check failed: Missing file lib/dispatch.js

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description presents a service for coordinating human agents to perform physical-world tasks and sensory verification. The supplied code does nothing related to human dispatch, task brokerage, verification of agents, or sensory validation. Instead, it is a packaging utility script for preparing a folder for upload by removing internal documentation files and then deleting itself. This is a materially different primary purpose and includes undeclared capabilities involving local filesystem inspection and file removal.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The code is not a generic Human-as-a-Service dispatcher for OpenClaw itself; it is specifically an authenticated API client for the ZhenRent service. While there is some thematic overlap because it manages tasks and workers, the implemented behavior is materially narrower and different in primary purpose: it handles low-level API authentication and communication with a named third-party platform. It also performs undeclared external network access and uses credentials from environment variables. Therefore, the description does not accurately represent what this code chunk actually does.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The declared description emphasizes dispatching verified human agents to carry out real-world tasks and provide sensory validation. However, this code only supports discovery and inspection of available workers: listing workers, filtering by skills, and fetching worker details by ID via a worker-listing API. It does not create jobs, dispatch agents, assign tasks, manage executions, or collect sensory validation results. The code is related to human workers, but its primary purpose is a worker browsing/search module rather than a dispatch service, so the description materially overstates the implemented behavior.

Content

No source excerpt is available for this finding.

Self-Modification

High
Category
Rogue Agent
Confidence
85% confidence
Finding

Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.

Content

Scanner excerpt · UPLOAD-READY.md (reported line 107)May include surrounding context.

md
- OR: Dashboard → My Skills → human-rent

3. **Upload New Version**:
   - Click "Upload New Version" or "Update Skill" button
   - Select folder: `/www/wwwroot/docs.zhenrent.com/human-rent/`
   - OR: Upload as ZIP (see Option C below)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The manual fallback includes a direct rm -f command that permanently deletes multiple files, including the cleanup script itself, with no safety prompt or validation. This is more dangerous than the scripted path because it encourages copy-paste execution of irreversible deletion commands and increases the chance of accidental data loss, incomplete recovery, or operator error in the package directory.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.