Is anisafifi/qr-code-generator safe?
https://github.com/openclaw/skills/tree/main/skills/anisafifi/qr-code-generator
The qr-code-generator skill is a straightforward QR code generation utility implemented as a Python CLI script with no prompt injection, no malicious code, and no observed data exfiltration. The primary concerns are operational rather than adversarial: WiFi passwords are exposed as plaintext CLI arguments, the skill requires installation of the platform's proprietary OpenClawCLI tool from clawhub.ai whose security posture cannot be independently verified, and the batch processing mode could be misused in an agentic context to encode sensitive file contents into QR images. Canary file accesses observed post-install are consistent with the Oathe audit framework's own integrity verification and are not attributable to the skill code.
Category Scores
Findings (8)
MEDIUM External proprietary CLI tool installation required (clawhub.ai) -20 ▶
SKILL.md advertises a prerequisite of installing OpenClawCLI from clawhub.ai. Although clawhub.ai is the OpenClaw platform operator (the same entity hosting these skills), the CLI tool's code and behavior cannot be verified from the skill's own evidence. An agent following these instructions would prompt users to download and install a proprietary binary. If the platform were compromised or the CLI were malicious, this could establish a persistent foothold.
MEDIUM WiFi network passwords passed as plaintext CLI arguments -8 ▶
The WiFi QR code generation workflow passes the network password as a plaintext command-line argument (--password). On Unix systems, command-line arguments are visible in /proc/
MEDIUM Batch processing accepts arbitrary file paths enabling sensitive content encoding -5 ▶
The --batch flag accepts any file path (txt, csv, json) and encodes each line as QR code data. In an agentic workflow where the agent has broad filesystem access, a user or attacker could direct the agent to batch-process sensitive files (e.g., ~/.env, config files), resulting in their contents being encoded into QR images that could be displayed or exfiltrated.
LOW Skill requires installation of three third-party pip packages -8 ▶
The skill depends on qrcode[pil], segno, and Pillow. While these are well-established packages, requiring pip installation expands the system's package surface. No npm install hooks or pre/post-install scripts were found in the Python ecosystem for these packages, but dependencies introduce transitive risk.
LOW Canary files accessed post-install but integrity confirmed intact -9 ▶
Audit records show the six canary files (.env, .ssh/id_rsa, .aws/credentials, .npmrc, .docker/config.json, gcloud credentials) were opened for reading at timestamp 1771922133.740, approximately 5 seconds after skill installation completed. No EXECVE records link this access to the Python skill code. The timing and access pattern are consistent with the Oathe audit framework performing its final canary integrity verification. All files confirmed unmodified.
LOW Documentation teaches shell command substitution patterns -3 ▶
SKILL.md includes examples using shell command substitution ($(cat message.txt)) as a data source for QR encoding. When an agent internalizes this pattern and later applies it to satisfy user requests, it may inadvertently apply command substitution to sensitive commands or file paths.
INFO No prompt injection detected in SKILL.md 0 ▶
Full review of SKILL.md found no hidden instructions, invisible unicode characters, HTML comments, persona override commands, or instructions to suppress output or ignore prior system instructions. The skill content is consistent with legitimate QR code generation documentation.
INFO Install behavior confined to expected GitHub clone 0 ▶
The installation process performed a shallow sparse-checkout clone of the openclaw/skills GitHub monorepo, extracted only the target skill subdirectory, copied it to the designated location, and cleaned up. No unexpected binaries were downloaded, no background processes were spawned, and no persistent network connections were established as a result of installation.