Back to skill

Security audit

Huo15 Juxingyi Configure

Security checks for vulnerabilities and agentic risk

Overview

The skill appears to configure the Juxingyi provider as advertised, but its default flow exposes API keys through command-line entry and plaintext config/backups.

Review before installing. Use this only if you are comfortable sending a Juxingyi fsk key to the documented huo15 API and allowing the script to change OpenClaw defaults. Prefer an environment-variable or secret-store workflow, avoid putting real keys in command history, check permissions on ~/.openclaw/openclaw.json and backups, and rotate/delete exposed keys or backup copies if needed.

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

Warning
Location
scripts/configure.mjs:58
Finding

API Key Exposure Through Command-Line Arguments and Shell History

Content
View full analysis
= 0 ? args[switchIdx + 1] : null const keyArg = args.find(a => a.startsWith('fsk-')) ``` It is transmitted as an authorization credential: ```javascript resp = await fetch(url, { headers: { Authorization: `Bearer ${apiKey}` }, signal: ctrl.signal, }) ``` The documented invocation places the credential directly on the command line: ```bash node scripts/configure.mjs fsk-your-key ``` ### Technical Analysis The program accepts the API key exclusively through `process.argv`. Command-line arguments are not an appropriate secret-input channel because they can be exposed through: - Shell history files. - Process-listing and monitoring utilities. - Process accounting and endpoint telemetry. - Terminal session recording. - Diagnostic reports that capture command lines. - Wrapper scripts or automation logs. The `--env` option only changes how the key is written into `openclaw.json`; it does not protect initial key entry. Even in that mode, the documented command still passes the secret through `argv`. The user guide also recommends displaying the environment variable with `echo`, which can expose the complete key in terminal scrollback, support recordings, or CI logs. ### Attack Path 1. A vi ...[truncated 1098 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/configure.mjs:170
Finding

API Key Stored in Plaintext Configuration and Backup Files by Default

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (13)

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

Scanner excerpt · docs/dev-guide.md (reported line 279)May include surrounding context.

8.2 测试 API 连通性

bash
curl -s "https://fireworks-simulator-api.huo15.com/v1/models" \
  -H "Authorization: Bearer fsk-测试key" | python3 -m json.tool | head -20

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The documentation describes taking a user-provided fsk- key, calling a remote /v1/models endpoint, and writing results into ~/.openclaw/openclaw.json, but it does not present this as an explicit user warning or consent boundary. For a skill that handles credentials and modifies a user config file, missing disclosure can lead users to unknowingly transmit secrets to a third party and alter local state they did not realize would be changed.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The README explicitly instructs users to run a script that automatically writes to ~/.openclaw/openclaw.json and notes that the API key may be stored in plaintext by default. Even though an --env option is mentioned later, the default flow normalizes risky credential handling and config modification without a prominent up-front warning about backup, overwrite scope, and secret exposure to other local users, backups, or logs.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill instructs execution of a Node script that makes outbound network requests to a third-party API, but the manifest declares no explicit tool scope or allowed-tools/permissions. This creates a least-privilege and transparency problem: an agent or reviewer cannot tell from the skill metadata that network access is required, increasing the chance of unintended external data transmission, including API keys or fetched data, during skill execution.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The changelog explicitly states that the skill automatically writes to the user's ~/.openclaw/openclaw.json and creates backups, but this documentation excerpt does not include a clear warning that running the skill modifies local configuration state. In an agent/skill ecosystem, undocumented or under-emphasized config mutation can surprise users, overwrite intended settings, or cause downstream tools to route requests through unintended providers or models.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

Although the document later describes writing to ~/.openclaw/openclaw.json, it does not present an explicit user warning near the start that running the skill will modify local configuration files. For an installation/configuration skill, insufficient notice about file modification can cause users to run it without understanding persistence, overwrite risk, or the need to review backups.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

Although the document later describes writing to ~/.openclaw/openclaw.json, it does not present an explicit user warning near the start that running the skill will modify local configuration files. For an installation/configuration skill, insufficient notice about file modification can cause users to run it without understanding persistence, overwrite risk, or the need to review backups.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The guide instructs users to pass the API key directly on the command line and notes that it may be stored in plaintext in openclaw.json, without a strong up-front warning. This is dangerous because command-line arguments can be exposed via shell history, process listings, logs, or screenshots, and plaintext configuration storage increases the chance of credential theft if the workstation or dotfiles are accessed.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The header comments, usage text, and user-facing descriptions are written entirely in Chinese, which imposes a specific language on users without any opt-in or alternative locale. Under the policy, forcing a language without user choice is a natural-language policy violation unless the constraint is explicitly justified.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

Errors, status messages, help output, and operational prompts shown to the user are consistently Chinese-only. Because the script does not offer locale selection or an English fallback, it enforces a language choice rather than letting users opt in.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
86% confidence
Finding

Natural-language policy violations include forcing a specific language without user opt-in. This README presents all user-facing instructions in Chinese and does not offer an alternative language, opt-in, or justification for a Chinese-only locale.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

标题和全文均以中文面向开发者,且未说明可提供其他语言版本或允许按用户偏好选择语言。根据规则,若技能在自然语言层面强制特定语言而没有用户选择或合理限定,属于语言/locale policy violation。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

标题和整篇用户指南均以中文呈现,未说明这是面向特定中文用户群的限定文档,也未提供其他语言版本或用户选择。根据规则,若技能在未取得用户选择的情况下强制单一语言,属于自然语言层面的政策风险。

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.