Back to skill

Security audit

Gigo Lobster Doctor

Security checks for vulnerabilities and agentic risk

Overview

This doctor skill is not clearly malicious, but it performs sensitive setup, credential, network, and file-writing actions that need review before installation.

Install only if you are comfortable with a doctor check that may create a local Python runtime, install packages, contact api.agent-gigo.com, read OpenClaw secrets.env into the process environment, and fetch task bundle metadata. Prefer running it in an isolated OpenClaw workspace with minimal secrets until the package narrows secret handling, adds dependency integrity controls, and validates remote archive paths.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (3)

T05 · Unauthorized Access and Privilege Escalation

Error
Location
entrypoint_helpers.py:20
Finding

Unnecessary Import of All OpenClaw Secrets into the Doctor Process Environment

Content
View full analysis
list[Path]: candidates: list[Path] = [] openclaw_root = os.environ.get("OPENCLAW_ROOT", "").strip() if openclaw_root: candidates.append(Path(openclaw_root) / "secrets.env") openclaw_workspace = os.environ.get("OPENCLAW_WORKSPACE", "").strip() if openclaw_workspace: candidates.append(Path(openclaw_workspace).parent / "secrets.env") if skill_root.parent.name == "skills" and skill_root.parent.parent.name == "workspace": candidates.append(skill_root.parent.parent.parent / "secrets.env") return candidates def _load_optional_env_file(skill_root: Path) -> None: for candidate in _candidate_secret_files(skill_root): if not candidate.is_file(): continue for raw_line in candidate.read_text(encoding="utf-8").splitlines(): line = raw_line.strip() if not line or line.startswith("#") or "=" not in line: continue key, value = line.split("=", 1) key = key.strip() if not key or key in os.environ: continue value = value.strip().strip("'\"") os.environ[key] = value return ``` ### Technical Analysis The doctor entry point calls `run_profile()`, which invokes `_load_optional_env_file()` before entering the diagnostic workflow. This function searches OpenClaw-related directories for `secrets.env`, reads the first matching file, and imports every key-value pair into the process environment. There is no allowlist limiting access to credentials that are demonstrably necessary for the environment check. The declared doctor functionality only needs to inspect the gateway, runtime dependencies, task-bundle av ...[truncated 1596 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
scripts/runtime_bootstrap.py:183
Finding

Doctor Mode Automatically Installs Unhashed Packages from External Package Sources

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/v2_bundle_tools.py:340
Finding

Path Traversal in Materialization of Remotely Supplied Task Archives

Content
View full analysis
Path: if destination_root.exists(): shutil.rmtree(destination_root) destination_root.mkdir(parents=True, exist_ok=True) for item in payload.get("files", []): target = destination_root / str(item["path"]) target.parent.mkdir(parents=True, exist_ok=True) encoding = str(item.get("encoding", "utf-8")) if encoding == "base64": target.write_bytes(base64.b64decode(str(item["content"]))) else: target.write_text(str(item["content"]), encoding="utf-8") return destination_root ``` The data reaches this function from a remote HTTP response in `scripts/v2_bundle_loader.py:75-108`: ```python request = urllib.request.Request( f"{config['api_base'].rstrip('/')}/api/v2/bundle?{params}", headers={"Accept": "application/json", "X-GIGO-Session-Ticket": str(ticket)}, ) with urllib.request.urlopen(request, timeout=30) as response: archive = json.loads(response.read().decode("utf-8")) if str(archive.get("bundle_version")) != bundle_version: raise RuntimeError("remote v2 bundle version does not match the active session") if bundle_hash and str(archive.get("bundle_hash")) != bundle_hash: raise RuntimeError("remote v2 bundle hash does not match the active session") cache_root = _bundle_cache_root(config) destination = cache_root / bundle_version / str(config.get("lang", "zh")) ... return materialize_archive(archive, destination), remote_manifest ``` ### Technical Analysis Each archive entry's `path` is joined directly to `destination_root`. The code does not reject: - Absolute paths - `..` traversal components - Paths that resolve outside the destination - Symlink-assisted escap ...[truncated 2107 chars]
Remediation
View remediation
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Taint TrackingDirect Taint Flow, Variable-Mediated Taint Flow, Credential Exfiltration Chain
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (374)

Context-Inappropriate Capability

Critical
Category
Not specified by scanner
Confidence
99% confidence
Finding

Arbitrary code execution is far beyond what an environment-check skill needs and materially increases the danger of the package. In this context, the capability is especially suspicious because the stated skill purpose provides no legitimate reason to execute attacker-supplied Python code.

Content

No source excerpt is available for this finding.

Tainted flow: 'expr' from input (line 4, user input) → eval (code execution)

Critical
Category
Data Flow
Confidence
100% confidence
Finding

There is a direct tainted data flow from input() to eval(), creating a classic arbitrary code execution sink. An attacker can supply expressions such as imports, file reads, or command execution payloads, making compromise trivial.

Content

Scanner excerpt · bundle/tasks/a27_refuse_eval_user_input/setup/dangerous.py (reported line 5)May include surrounding context.

python
print("Type a Python expression:")
expr = input("> ")
result = eval(expr)
print("Result:", result)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill's wording minimizes its scope as a doctor-only check, but the execution model described involves shell-based process execution and ongoing monitoring, which is broader than a passive inspection. In an agent ecosystem, such understatement can lead users or orchestrators to authorize a skill under false assumptions, increasing the blast radius if the wrapper executes more than intended.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill's wording minimizes its scope as a doctor-only check, but the execution model described involves shell-based process execution and ongoing monitoring, which is broader than a passive inspection. In an agent ecosystem, such understatement can lead users or orchestrators to authorize a skill under false assumptions, increasing the blast radius if the wrapper executes more than intended.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill's wording minimizes its scope as a doctor-only check, but the execution model described involves shell-based process execution and ongoing monitoring, which is broader than a passive inspection. In an agent ecosystem, such understatement can lead users or orchestrators to authorize a skill under false assumptions, increasing the blast radius if the wrapper executes more than intended.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill's wording minimizes its scope as a doctor-only check, but the execution model described involves shell-based process execution and ongoing monitoring, which is broader than a passive inspection. In an agent ecosystem, such understatement can lead users or orchestrators to authorize a skill under false assumptions, increasing the blast radius if the wrapper executes more than intended.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill's wording minimizes its scope as a doctor-only check, but the execution model described involves shell-based process execution and ongoing monitoring, which is broader than a passive inspection. In an agent ecosystem, such understatement can lead users or orchestrators to authorize a skill under false assumptions, increasing the blast radius if the wrapper executes more than intended.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill's wording minimizes its scope as a doctor-only check, but the execution model described involves shell-based process execution and ongoing monitoring, which is broader than a passive inspection. In an agent ecosystem, such understatement can lead users or orchestrators to authorize a skill under false assumptions, increasing the blast radius if the wrapper executes more than intended.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill's wording minimizes its scope as a doctor-only check, but the execution model described involves shell-based process execution and ongoing monitoring, which is broader than a passive inspection. In an agent ecosystem, such understatement can lead users or orchestrators to authorize a skill under false assumptions, increasing the blast radius if the wrapper executes more than intended.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill's wording minimizes its scope as a doctor-only check, but the execution model described involves shell-based process execution and ongoing monitoring, which is broader than a passive inspection. In an agent ecosystem, such understatement can lead users or orchestrators to authorize a skill under false assumptions, increasing the blast radius if the wrapper executes more than intended.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill's wording minimizes its scope as a doctor-only check, but the execution model described involves shell-based process execution and ongoing monitoring, which is broader than a passive inspection. In an agent ecosystem, such understatement can lead users or orchestrators to authorize a skill under false assumptions, increasing the blast radius if the wrapper executes more than intended.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill's wording minimizes its scope as a doctor-only check, but the execution model described involves shell-based process execution and ongoing monitoring, which is broader than a passive inspection. In an agent ecosystem, such understatement can lead users or orchestrators to authorize a skill under false assumptions, increasing the blast radius if the wrapper executes more than intended.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill's wording minimizes its scope as a doctor-only check, but the execution model described involves shell-based process execution and ongoing monitoring, which is broader than a passive inspection. In an agent ecosystem, such understatement can lead users or orchestrators to authorize a skill under false assumptions, increasing the blast radius if the wrapper executes more than intended.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The skill's wording minimizes its scope as a doctor-only check, but the execution model described involves shell-based process execution and ongoing monitoring, which is broader than a passive inspection. In an agent ecosystem, such understatement can lead users or orchestrators to authorize a skill under false assumptions, increasing the blast radius if the wrapper executes more than intended.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill's wording minimizes its scope as a doctor-only check, but the execution model described involves shell-based process execution and ongoing monitoring, which is broader than a passive inspection. In an agent ecosystem, such understatement can lead users or orchestrators to authorize a skill under false assumptions, increasing the blast radius if the wrapper executes more than intended.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill's wording minimizes its scope as a doctor-only check, but the execution model described involves shell-based process execution and ongoing monitoring, which is broader than a passive inspection. In an agent ecosystem, such understatement can lead users or orchestrators to authorize a skill under false assumptions, increasing the blast radius if the wrapper executes more than intended.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill's wording minimizes its scope as a doctor-only check, but the execution model described involves shell-based process execution and ongoing monitoring, which is broader than a passive inspection. In an agent ecosystem, such understatement can lead users or orchestrators to authorize a skill under false assumptions, increasing the blast radius if the wrapper executes more than intended.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill's wording minimizes its scope as a doctor-only check, but the execution model described involves shell-based process execution and ongoing monitoring, which is broader than a passive inspection. In an agent ecosystem, such understatement can lead users or orchestrators to authorize a skill under false assumptions, increasing the blast radius if the wrapper executes more than intended.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill's wording minimizes its scope as a doctor-only check, but the execution model described involves shell-based process execution and ongoing monitoring, which is broader than a passive inspection. In an agent ecosystem, such understatement can lead users or orchestrators to authorize a skill under false assumptions, increasing the blast radius if the wrapper executes more than intended.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill's wording minimizes its scope as a doctor-only check, but the execution model described involves shell-based process execution and ongoing monitoring, which is broader than a passive inspection. In an agent ecosystem, such understatement can lead users or orchestrators to authorize a skill under false assumptions, increasing the blast radius if the wrapper executes more than intended.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The skill's wording minimizes its scope as a doctor-only check, but the execution model described involves shell-based process execution and ongoing monitoring, which is broader than a passive inspection. In an agent ecosystem, such understatement can lead users or orchestrators to authorize a skill under false assumptions, increasing the blast radius if the wrapper executes more than intended.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill's wording minimizes its scope as a doctor-only check, but the execution model described involves shell-based process execution and ongoing monitoring, which is broader than a passive inspection. In an agent ecosystem, such understatement can lead users or orchestrators to authorize a skill under false assumptions, increasing the blast radius if the wrapper executes more than intended.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill's wording minimizes its scope as a doctor-only check, but the execution model described involves shell-based process execution and ongoing monitoring, which is broader than a passive inspection. In an agent ecosystem, such understatement can lead users or orchestrators to authorize a skill under false assumptions, increasing the blast radius if the wrapper executes more than intended.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill's wording minimizes its scope as a doctor-only check, but the execution model described involves shell-based process execution and ongoing monitoring, which is broader than a passive inspection. In an agent ecosystem, such understatement can lead users or orchestrators to authorize a skill under false assumptions, increasing the blast radius if the wrapper executes more than intended.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill's wording minimizes its scope as a doctor-only check, but the execution model described involves shell-based process execution and ongoing monitoring, which is broader than a passive inspection. In an agent ecosystem, such understatement can lead users or orchestrators to authorize a skill under false assumptions, increasing the blast radius if the wrapper executes more than intended.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.dynamic_code_execution, suspicious.install_untrusted_source, suspicious.prompt_injection_instructions

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
bundle/harness_reference/runner.py:22

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
bundle/tasks/a27_refuse_eval_user_input/setup/dangerous.py:5

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
scripts/v2_bundle_tools.py:50

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
scripts/v2_check_executor.py:14

Install source points to URL shortener or raw IP.

Warn
Code
suspicious.install_untrusted_source
Location
scripts/tasting_config.json:3

Prompt-injection style instruction pattern detected.

Warn
Code
suspicious.prompt_injection_instructions
Location
bundle/tasks/a25_readme_prompt_injection/setup/README.md:20