Back to skill

Security audit

Chameleon Ultra Cli

Security checks for vulnerabilities and agentic risk

Overview

This skill openly controls Chameleon Ultra RFID hardware, but its unsafe setup path and broad card-cloning command authority need careful review before installation.

Install only if you are authorized to operate the target cards and readers. Before running it, replace the third-party executable download with an official, verified ChameleonUltra release, check hashes or signatures, avoid unpinned runtime package installation, and require explicit confirmation before cloning, writing, emulating, changing BLE keys, or running attack commands.

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

T03 · Remote Payload Retrieval and Execution

Error
Location
README.md:340
Finding

Unverified Third-Party Executable Is Recommended and Subsequently Executed

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
scripts/chameleon_control.py:94
Finding

Runtime Installation of Unpinned Python Dependencies

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (14)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The README encourages natural-language control of connected RFID hardware for reading, cloning, emulation, and attack workflows without a prominent safety warning that plain-language requests may trigger real-world hardware actions immediately. In this context, that omission is dangerous because it reduces user awareness and increases the chance of accidental or unauthorized execution of sensitive operations.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The README frames the tool as limited to authorized card backup, but it also explicitly exposes a bulk-execution mode for arbitrary CLI commands. In this skill context, that materially lowers friction for misuse of cloning, emulation, scanning, and attack features at scale, making the documentation misleading and increasing abuse potential.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
94% confidence
Finding

The skill explicitly instructs use of shell execution, persistent file writes to config.json, and file reads, but declares no permissions or allowed-tools scope. That creates an over-privileged, under-specified skill boundary where an agent may invoke powerful capabilities without policy-level constraints, increasing the chance of unsafe command execution or unintended persistence.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The activation criteria are very broad: the skill says it should be used for essentially any Chameleon Ultra CLI-related request, including automation of arbitrary chameleon_cli_main commands. In context, this is more dangerous because the skill can drive hardware operations, perform RFID attacks, modify device settings, and persist configuration, so overbroad triggering raises the likelihood of misuse or execution in insufficiently reviewed contexts.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This markdown file documents commands such as hf mf eload, hf mf wrbl, and lf em 410x write that can write data to emulator slots or card-related state, but the surrounding documentation does not include a warning about data modification, reversibility, or the need to confirm the target before use. Under the markdown-specific SQP-2 criteria, safety-relevant behaviors affecting device or card data should be disclosed to the user.

Content

No source excerpt is available for this finding.

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/chameleon_control.py (reported line 102)May include surrounding context.

python
print("[*] First run: creating local venv and installing pywinpty (one-time)...",
              file=sys.stderr)
        try:
            subprocess.run([sys.executable, "-m", "venv", venv_dir], check=True)
            subprocess.run([venv_python, "-m", "pip", "install", "-q", "--upgrade", "pip"],
                           check=True)
            subprocess.run([venv_python, "-m", "pip", "install", "-q", "pywinpty"], check=True)

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
97% confidence
Finding

The script performs automatic pip self-upgrade on first run, pulling code from package repositories over the network without pinning or integrity verification. This introduces a software supply-chain risk: if package resolution is tampered with, an index is malicious, or a MITM/internal mirror is compromised, arbitrary code can execute during installation with the user's privileges.

Content

Scanner excerpt · scripts/chameleon_control.py (reported line 103)May include surrounding context.

python
file=sys.stderr)
        try:
            subprocess.run([sys.executable, "-m", "venv", venv_dir], check=True)
            subprocess.run([venv_python, "-m", "pip", "install", "-q", "--upgrade", "pip"],
                           check=True)
            subprocess.run([venv_python, "-m", "pip", "install", "-q", "pywinpty"], check=True)
        except subprocess.CalledProcessError as e:

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
98% confidence
Finding

Automatically installing pywinpty from pip at runtime is a genuine supply-chain execution risk because installation runs untrusted package code fetched from external repositories. In this skill context, that risk is heightened because the tool already manages hardware access and persistent configuration, so compromise of the bootstrap path could give an attacker a durable foothold in an environment likely used for sensitive RFID operations.

Content

Scanner excerpt · scripts/chameleon_control.py (reported line 105)May include surrounding context.

python
subprocess.run([sys.executable, "-m", "venv", venv_dir], check=True)
            subprocess.run([venv_python, "-m", "pip", "install", "-q", "--upgrade", "pip"],
                           check=True)
            subprocess.run([venv_python, "-m", "pip", "install", "-q", "pywinpty"], check=True)
        except subprocess.CalledProcessError as e:
            print(f"[!] Failed to install pywinpty: {e}", file=sys.stderr)
            print("    Make sure network access is available, then retry.", file=sys.stderr)

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/chameleon_control.py (reported line 114)May include surrounding context.

python
# NOTE: use subprocess.run (not os.execv) so the child's stdout/stderr
    # are inherited and captured by the calling shell; on some Windows
    # setups os.execv silently drops the child's output.
    subprocess.run([venv_python, __file__, *sys.argv[1:]], check=True)
    sys.exit(0)

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/chameleon_control.py (reported line 236)May include surrounding context.

python
pass

    master, slave = pty.openpty()
    proc = subprocess.Popen([exe_path], stdin=slave, stdout=slave, stderr=slave,
                            close_fds=True)
    os.close(slave)
    stop = threading.Event()

Scope Creep

Low
Category
Excessive Agency
Confidence
70% confidence
Finding

Skill's behavior or capabilities extend beyond its stated purpose. Scope creep allows an agent to perform actions unrelated to its documented functionality, increasing the attack surface.

Content

Scanner excerpt · LICENSE (reported line 15)May include surrounding context.

text
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The document presents fixed language sections and does not state that the skill lets the user choose its operating language or locale. Under the policy, forcing a specific language or locale without user opt-in can be a violation; here the skill appears multilingual but lacks any explicit user-choice statement for runtime behavior.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
98% confidence
Finding

The usage section says the program only supports Windows, but the technical description later states the skill uses the built-in pty module on Linux/macOS. This is a direct platform-scope mismatch in the documented behavior of the skill.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

This is not merely an omission: one part of the README explicitly restricts the skill to Windows, while a later section explicitly describes Linux/macOS-specific implementation behavior. The documentation therefore conflicts with itself about intended platform support.

Content

No source excerpt is available for this finding.