Back to skill

Security audit

AI Agent Onboarding Wizard

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly an onboarding helper, but it can generate executable bulk-install scripts for mutable third-party skills with limited warning and verification.

Install only if you are comfortable with a local environment scan and review generated reports and setup.sh files before running them. Treat the recommended skills as suggestions, not verified-safe dependencies; check each resolved publisher/version and scan or inspect each skill before installation.

Vulnerability Patterns
  • 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
  • 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 (1)

T08 · Insecure Dependencies

Warning
Location
scripts/onboarding_wizard.py:353
Finding

Generated Setup Scripts Install Unpinned Third-Party Skills

Content
View full analysis

Vulnerability Details

File Location: scripts/onboarding_wizard.py:353-370
Vulnerability Type: Unpinned and insufficiently verified third-party dependencies
Risk Level: Medium

python
        all_skills = profile["certainlogic_skills"] + profile.get("community_skills", [])
        for skill_slug in all_skills:
            if skill_slug in CERTAINLOGIC_SKILLS:
                name = CERTAINLOGIC_SKILLS[skill_slug]["name"]
                cmd = f"clawhub install {CERTAINLOGIC_SKILLS[skill_slug]['clawhub_id']}"
            elif skill_slug in COMMUNITY_SKILLS:
                name = COMMUNITY_SKILLS[skill_slug]["name"]
                cmd = f"clawhub install {COMMUNITY_SKILLS[skill_slug]['clawhub_id']}"
            else:
                continue

            if skill_slug in COMMUNITY_SKILLS:
                platforms = COMMUNITY_SKILLS[skill_slug].get("platforms", ["linux", "macos"])
                if os_name not in platforms:
                    lines.append(f"\n# {name} — skipped: not supported on {os_name}")
                    continue

            if skill_slug in installed:
                lines.append(f"\n# {name} — already installed, skipping")
            else:

The generated command is subsequently appended without an exact version or integrity constraint:

python
                lines.append(f"\necho 'Installing {name}...'")
                lines.append(f"{cmd} || echo 'WARNING: {name} install failed (may not exist on ClawHub yet)'")

Technical Analysis

The setup-script generator identifies dependencies exclusively through mutable ClawHub slugs. The resulting commands do not pin an exact package version, validate a cryptographic hash, verify a package signature, or confirm the publisher’s identity.

The project describes community dependencies as “Verified,” but its VerificationEngine only performs structural checks such as the presence and length of `SKIL ...[truncated 1925 chars]

Remediation
View remediation

Remediation Suggestions

  1. Pin every recommended dependency to an exact reviewed version rather than installing by a mutable slug alone.
  2. Record and verify cryptographic hashes or signed package manifests before installation.
  3. Validate the expected publisher identity and reject packages whose ownership or signing identity has changed.
  4. Download dependencies into a quarantine directory and audit their instructions, scripts, lifecycle hooks, and declared permissions before installation.
  5. Require explicit per-package confirmation that displays the resolved version, publisher, permissions, and integrity information.
  6. Fail closed when verification cannot be completed instead of continuing after warnings.
  7. Replace the unsupported “Verified” label with an accurate description of the checks performed, or implement substantive code and instruction security analysis.
  8. Generate non-executable checklists by default. Only create executable setup scripts after a clear warning and explicit opt-in.
  9. Document that structural post-install verification cannot establish package safety or authenticity.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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 (12)

Tp4

High
Category
MCP Tool Poisoning
Confidence
90% confidence
Finding

There is a material mismatch between the declared description and the supplied code chunk. The description promises active onboarding capabilities such as scanning the environment, recommending skills, and producing install commands. The actual code shown is only an init.py with metadata and a docstring indicating a different purpose: generating personalized markdown starter guides. While the chunk is minimal and may not expose full implementation, based on the supplied code alone it does not substantiate the advertised capabilities and suggests a different primary purpose.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The description matches part of the behavior: the code clearly scans the environment, detects goals, recommends skills, and includes install commands. However, the supplied code chunk reveals materially broader functionality than declared. It verifies skill integrity (e.g., SKILL.md, JSON, scripts), generates bash setup scripts, performs weekly change tracking, and exports team onboarding bundles with setup.sh and README.md. These are not just trivial implementation details of recommendation generation; they are separate user-facing capabilities involving filesystem writes and ongoing monitoring/reporting. Therefore the declared description is incomplete and does not accurately represent the full behavior.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
82% confidence
Finding

The README describes environment scanning, installed-skill enumeration, and setup-script generation, but does not prominently warn users that these actions may expose local system metadata or lead to impactful follow-on commands. Even if nothing auto-installs, collecting OS/version/skill data and producing setup scripts can influence user actions and may reveal sensitive environment details in reports or exports.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The README presents a strong safety claim that the wizard only generates install commands under user control, but later advertises setup scripts, verification, weekly checkups, and export capabilities that materially expand its scope. This mismatch can mislead users about what the skill may do, reducing informed consent and increasing the chance they invoke automation with broader system access than expected.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The trigger phrases are broad, generic natural-language commands such as 'Run onboarding wizard' and 'I'm a developer,' which could overlap with ordinary conversation and cause accidental invocation. In an agent ecosystem, ambiguous activation increases the risk of unintended environment scans or recommendation flows starting without deliberate user intent.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
77% confidence
Finding

The skill advertises environment scanning and install guidance but does not declare any explicit tool scope or permissions, despite implying use of env, file, and shell capabilities. That creates ambiguity about what the agent may inspect or execute, which can lead to overbroad access and unsafe automation during onboarding.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The skill explicitly says it scans the user's OS, shell, installed tools, and architecture, but it does not present a clear warning or consent notice about system inspection. Users may not realize that local environment details are being collected or used, which raises privacy and trust concerns even if the scan is limited.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The invocation phrases 'Run the onboarding wizard' and especially 'Set me up' and 'What skills should I install?' are broad enough to match ordinary conversation and may trigger the skill unexpectedly. In a skill that implies system inspection and installation guidance, accidental invocation could cause unintended scanning, recommendations, or command generation without clear user intent.

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/onboarding_wizard.py (reported line 197)May include surrounding context.

python
def detect_openclaw_version() -> str:
        """Try to detect OpenClaw version."""
        try:
            result = subprocess.run(
                ["openclaw", "--version"],
                capture_output=True,
                text=True,

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The team export feature writes an executable setup.sh that performs package installation commands and presents README guidance emphasizing a one-command quick start. In an onboarding context, users are likely to run generated artifacts with little scrutiny, which increases the chance of unintended code execution or trust-based social engineering if recommendations are ever incorrect, tampered with, or expanded later.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest description advertises 'automated onboarding' but does not clearly warn users that the skill performs environment scanning and supports team export, both of which can collect and propagate sensitive system or organizational data. This is dangerous because users may invoke the skill without informed consent, increasing the risk of unintended disclosure of host details, installed tools, configuration data, or exported team metadata.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
80% confidence
Finding

All user-facing instructions, prompts, generated reports, and README content in this file are hardcoded in English, and the skill does not offer users any language or locale selection. Under the stated policy, forcing a specific language without opt-in is a natural-language policy concern.

Content

No source excerpt is available for this finding.