Back to skill

Security audit

Luckee Skill

Security checks for vulnerabilities and agentic risk

Overview

The skill’s Luckee integration is coherent, but it needs review because it installs mutable third-party code and persists authentication tokens.

Before installing, review and pin the GitHub plugin version and luckee-cli version, or disable automatic CLI installation and install reviewed packages manually. Prefer browser OAuth over sending live tokens in chat or command lines, use a restricted OpenClaw service account, and rotate any token that may have appeared in logs, chat history, or shell history.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:40
Finding

Mutable and Unpinned Third-Party Code Installation

Content
View full analysis
**Note:** `openclaw plugins install` does **not** accept GitHub URLs directly — only npm specs, local directories, or archives are supported. You must clone the repo first, then install from the local path. ### 1. Clone or update the plugin repository If the plugin has not been cloned yet: git clone https://github.com/motse-ai/luckee-openclaw-plugin.git /tmp/luckee-openclaw-plugin If the plugin directory already exists, pull the latest changes: cd /tmp/luckee-openclaw-plugin && git checkout main && git pull --ff-only origin main && cd - ### 2. Install the plugin from the local directory openclaw plugins install /tmp/luckee-openclaw-plugin ``` `SKILL.md:169-176`: ```bash **Step 2 — If not installed, install it:** python -m pip install --upgrade 'luckee-cli>=0.1.0' ``` `reference.md:103-106`: ```bash If all candidates fail and `autoInstallCli` is true (default), the plugin attempts: -m pip install --upgrade 'luckee-cli>=0.1.0' ``` ### Technical Analysis The installation procedure retrieves executable plugin code from the mutable `main` branch and installs it without pinning a reviewed commit, checking a cryptographic digest, or verifying a release signature. The `git pull` operation can therefore retrieve code that differs from the version originally reviewed. The Luckee CLI dependency is also specified only with a lower version bound, `luckee-cli>=0.1.0`. This permits pip to install any later matching version. According to `reference.md:17`, automatic CLI installation is enabled by default, allowing this dependency installation to occur when binary resolution fails. These behaviors create two related supply-chain risks: 1. The effective p ...[truncated 1945 chars]
Remediation
View remediation
=0.1.0` with an exact reviewed version such as `luckee-cli==X.Y.Z`. 5. Use pip hash verification, preferably through a locked requirements file with `--require-hashes`. 6. Set `autoInstallCli` to `false` by default. Require explicit user approval before installing or upgrading executable dependencies. 7. Separate installation from routine query execution so a missing binary cannot silently trigger a package upgrade. 8. Perform dependency updates through a controlled review process that includes source review, malware scanning, provenance validation, and regression testing. 9. Run the plugin under a restricted service account or sandbox with only the filesystem and network access required for its documented functionality. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:120
Finding

Authentication Tokens Exposed Through Chat and Command-Line Arguments

Content
View full analysis
Set a token and run a query in one go: /luckee token sk_xxx 查一下 asin B0DPJMTH4N 的信息 ### AI tool invocation Call the `luckee_query` tool with: { "query": "查一下 asin B0DPJMTH4N 的信息 用skills", "token": "sk_optional_override", "language": "CN", "timeout": 90 } Only `query` is required. For `/luckee token ...`, first call `luckee_set_token`, then call `luckee_query` if a query was included. ## Token Management - Tokens are managed securely by OpenClaw and persisted across gateway restarts. - Set a per-user token via `/luckee token ` (overrides the default for that sender). - Set a default token via config: `openclaw config set plugins.entries.luckee-tool.config.defaultToken ""`. ``` `SKILL.md:198-207`: ```bash **Option 2 — Set token via chat (when OAuth can't work, e.g. running inside gateway):** /luckee token **Option 3 — Set token via config:** openclaw config set plugins.entries.luckee-tool.config.defaultToken "" ``` ### Technical Analysis The documented fallback mechanisms instruct users to submit reusable authentication tokens through chat messages, tool arguments, or command-line arguments. A token sent through chat may be retained in channel history, gateway logs, message archives, moderation systems, backups, notifications, or third-party channel infrastructure. A token supplied as a command-line argument can remain in shell history and may be observable through process inspection while the command is running. The Safety Rules at `SKILL.md:229` prohibit logging or displaying full tokens, but that instruction does not itself prevent token-bearing input messages, shell history, infrastructure logs, or process arguments from recording the ...[truncated 1821 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (7)

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
80% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

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

openclaw health

text

Confirm the plugin shows as loaded and the gateway is healthy. Do not ask the user for API URL or User ID details.

## Usage

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The usage examples and JSON invocation specify Chinese queries and set "language": "CN", which indicates a default language/locale choice rather than offering the user a choice. This can violate language/locale policy because the skill appears to steer interactions into a specific language without documented opt-in or a justified region-specific constraint.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The configuration schema sets defaultLanguage to CN, which implies a language/locale default is being imposed. The file does not explain user choice, opt-in, or a region-specific justification for forcing this locale behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The sample plugin entry repeats defaultLanguage: "CN", which further normalizes a specific language setting in natural-language guidance. There is no accompanying statement that users may choose another language or that the locale is limited to a region-specific context.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The reference documents persistent storage of API tokens on disk, including a default token and sender-specific tokens, but does not prominently warn users that credentials will be retained across restarts. Even with 0600 permissions, persisted secrets increase exposure to local compromise, backups, misconfiguration, or accidental disclosure.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The documentation describes automatic installation of luckee-cli via pip when the binary is missing, which modifies the local environment and pulls executable code from an external package source. In an agent/plugin context, this expands the trust boundary and can lead to unreviewed code execution or supply-chain exposure, especially if users are not clearly warned or asked to opt in.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
80% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · reference.md (reported line 117)May include surrounding context.

md
- `luckee login` starts browser-based authorization explicitly.
- Running normal `luckee` commands also checks session status and prompts browser authorization automatically when not logged in.
- During support flows, do not ask users for API URL or User ID.

## Feishu Progress Delivery

Static analysis

No suspicious patterns detected.