Back to skill

Security audit

Gigo Lobster Register

Security checks for vulnerabilities and agentic risk

Overview

This looks like a real benchmark share-page skill, but it needs review because it can load broad local secrets and contains high-impact remote benchmark code execution paths.

Install only if you are comfortable with this skill running a long benchmark, contacting the GIGO API, sending benchmark responses/results for share-page registration, and reading local profile data such as SOUL.md. Use a dedicated workspace with minimal secrets; do not run it where unrelated API keys are present in OpenClaw secrets.env until remote bundle authentication, archive path containment, and environment allowlisting are tightened.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
Findings (4)

T03 · Remote Payload Retrieval and Execution

Error
Location
scripts/v2_check_executor.py:8
Finding

Remote benchmark bundles can execute unauthenticated Python evaluator code

Content
View full analysis
tuple[Path, dict]: session = config.get("task_session") or {} session_id = session.get("session_id") ticket = session.get("ticket") if not session_id or not ticket: raise RuntimeError("missing v2 task session credentials for remote bundle download") params = urllib.parse.urlencode( { "lang": config.get("lang", "zh"), "session_id": session_id, "version": bundle_version, } ) 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") ``` ```python def run_check(task: Task, workdir: Path, transcript: dict) -> dict: task_dir = Path(task.task_dir) spec = importlib.util.spec_from_file_location(f"gigo_check_{task.id}", task_dir / "check.py") module = importlib.util.module_from_spec(spec) assert spec.loader is not None spec.loader.exec_module(module) fixtures = task_dir / "fixtures" return module.evaluate(workdir, transcript, fixtures) ``` ### Technical Analysis The Skill downloads a task archive from the configured API and later imports ...[truncated 2007 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/v2_bundle_tools.py:334
Finding

Remote archive paths are not constrained to the bundle destination

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 ``` ### Technical Analysis `item["path"]` is controlled by the archive payload. The code joins it to `destination_root` without rejecting: - Absolute paths. - `..` traversal components. - Paths that resolve outside the destination. - Symlink-based escapes through pre-existing path components. `Path` joining does not itself guarantee containment. For example, a relative path containing sufficient `../` components can resolve outside the bundle cache, while an absolute path can cause the destination prefix to be discarded. The function then creates parent directories and writes attacker-controlled text or decoded binary content to the resulting location. ### Attack Path 1. A malicious or compromised remote bundle service returns an archive entry such as `../../target-file` or an absolute path. 2. `materialize_archive()` constructs the target without performing a containment check. 3. `mkdir()` creates any missing parent directories that the current user is permitted to create. 4. `write_text()` or `write_bytes()` overwrites or creates the selected file. 5. The attacker may target application configuration, scripts, sh ...[truncated 775 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Error
Location
entrypoint_helpers.py:21
Finding

Workspace-wide secrets are loaded and exposed to benchmark execution

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 ``` ```python prompt_file = workdir / "prompt.md" prompt_file.write_text(_agent_prompt(task, workdir), encoding="utf-8") transcript_file = workdir / ".gigo_transcript.json" env = shim.install() env.update( { "GIGO_TASK_WORKDIR": str(workdir), "GIGO_TASK_ID": task.id, "GIGO_EVAL_RUN_ID": self.run_id, "GIGO_AGENT_SESSION_ID": _safe_session_id(f"gigo-eval-{self.run_id}-{task.id}"), "GIGO_TASK_PROMPT_FILE": str(prompt_file), "GIGO_TASK_TRANSCRIPT_FILE": s ...[truncated 2176 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
scripts/runtime_bootstrap.py:176
Finding

Startup automatically installs dependencies without package hash verification

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • 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
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (340)

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

Critical
Category
Data Flow
Confidence
100% confidence
Finding

This is a direct tainted-data-to-code-execution path: input() reads attacker-controlled data and eval() executes it as Python code. In the skill context, this is especially dangerous because the file is explicitly an interactive tool for evaluating user-supplied expressions, so exploitation is the primary behavior rather than an edge case.

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

Even without confirming every cited scoring detail, the broader risk is that the skill advertises a narrowly scoped share-page action while likely running a full benchmark with extensive file inspection and artifact generation. That gap matters because users may not expect broad workspace analysis, large logs, or derived metadata collection from a 'register share page' trigger.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Even without confirming every cited scoring detail, the broader risk is that the skill advertises a narrowly scoped share-page action while likely running a full benchmark with extensive file inspection and artifact generation. That gap matters because users may not expect broad workspace analysis, large logs, or derived metadata collection from a 'register share page' trigger.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Even without confirming every cited scoring detail, the broader risk is that the skill advertises a narrowly scoped share-page action while likely running a full benchmark with extensive file inspection and artifact generation. That gap matters because users may not expect broad workspace analysis, large logs, or derived metadata collection from a 'register share page' trigger.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Even without confirming every cited scoring detail, the broader risk is that the skill advertises a narrowly scoped share-page action while likely running a full benchmark with extensive file inspection and artifact generation. That gap matters because users may not expect broad workspace analysis, large logs, or derived metadata collection from a 'register share page' trigger.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Even without confirming every cited scoring detail, the broader risk is that the skill advertises a narrowly scoped share-page action while likely running a full benchmark with extensive file inspection and artifact generation. That gap matters because users may not expect broad workspace analysis, large logs, or derived metadata collection from a 'register share page' trigger.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

Even without confirming every cited scoring detail, the broader risk is that the skill advertises a narrowly scoped share-page action while likely running a full benchmark with extensive file inspection and artifact generation. That gap matters because users may not expect broad workspace analysis, large logs, or derived metadata collection from a 'register share page' trigger.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Even without confirming every cited scoring detail, the broader risk is that the skill advertises a narrowly scoped share-page action while likely running a full benchmark with extensive file inspection and artifact generation. That gap matters because users may not expect broad workspace analysis, large logs, or derived metadata collection from a 'register share page' trigger.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

Even without confirming every cited scoring detail, the broader risk is that the skill advertises a narrowly scoped share-page action while likely running a full benchmark with extensive file inspection and artifact generation. That gap matters because users may not expect broad workspace analysis, large logs, or derived metadata collection from a 'register share page' trigger.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Even without confirming every cited scoring detail, the broader risk is that the skill advertises a narrowly scoped share-page action while likely running a full benchmark with extensive file inspection and artifact generation. That gap matters because users may not expect broad workspace analysis, large logs, or derived metadata collection from a 'register share page' trigger.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Even without confirming every cited scoring detail, the broader risk is that the skill advertises a narrowly scoped share-page action while likely running a full benchmark with extensive file inspection and artifact generation. That gap matters because users may not expect broad workspace analysis, large logs, or derived metadata collection from a 'register share page' trigger.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Even without confirming every cited scoring detail, the broader risk is that the skill advertises a narrowly scoped share-page action while likely running a full benchmark with extensive file inspection and artifact generation. That gap matters because users may not expect broad workspace analysis, large logs, or derived metadata collection from a 'register share page' trigger.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

Even without confirming every cited scoring detail, the broader risk is that the skill advertises a narrowly scoped share-page action while likely running a full benchmark with extensive file inspection and artifact generation. That gap matters because users may not expect broad workspace analysis, large logs, or derived metadata collection from a 'register share page' trigger.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Even without confirming every cited scoring detail, the broader risk is that the skill advertises a narrowly scoped share-page action while likely running a full benchmark with extensive file inspection and artifact generation. That gap matters because users may not expect broad workspace analysis, large logs, or derived metadata collection from a 'register share page' trigger.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Even without confirming every cited scoring detail, the broader risk is that the skill advertises a narrowly scoped share-page action while likely running a full benchmark with extensive file inspection and artifact generation. That gap matters because users may not expect broad workspace analysis, large logs, or derived metadata collection from a 'register share page' trigger.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Even without confirming every cited scoring detail, the broader risk is that the skill advertises a narrowly scoped share-page action while likely running a full benchmark with extensive file inspection and artifact generation. That gap matters because users may not expect broad workspace analysis, large logs, or derived metadata collection from a 'register share page' trigger.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Even without confirming every cited scoring detail, the broader risk is that the skill advertises a narrowly scoped share-page action while likely running a full benchmark with extensive file inspection and artifact generation. That gap matters because users may not expect broad workspace analysis, large logs, or derived metadata collection from a 'register share page' trigger.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Even without confirming every cited scoring detail, the broader risk is that the skill advertises a narrowly scoped share-page action while likely running a full benchmark with extensive file inspection and artifact generation. That gap matters because users may not expect broad workspace analysis, large logs, or derived metadata collection from a 'register share page' trigger.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

Even without confirming every cited scoring detail, the broader risk is that the skill advertises a narrowly scoped share-page action while likely running a full benchmark with extensive file inspection and artifact generation. That gap matters because users may not expect broad workspace analysis, large logs, or derived metadata collection from a 'register share page' trigger.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

Even without confirming every cited scoring detail, the broader risk is that the skill advertises a narrowly scoped share-page action while likely running a full benchmark with extensive file inspection and artifact generation. That gap matters because users may not expect broad workspace analysis, large logs, or derived metadata collection from a 'register share page' trigger.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

Even without confirming every cited scoring detail, the broader risk is that the skill advertises a narrowly scoped share-page action while likely running a full benchmark with extensive file inspection and artifact generation. That gap matters because users may not expect broad workspace analysis, large logs, or derived metadata collection from a 'register share page' trigger.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Even without confirming every cited scoring detail, the broader risk is that the skill advertises a narrowly scoped share-page action while likely running a full benchmark with extensive file inspection and artifact generation. That gap matters because users may not expect broad workspace analysis, large logs, or derived metadata collection from a 'register share page' trigger.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

Even without confirming every cited scoring detail, the broader risk is that the skill advertises a narrowly scoped share-page action while likely running a full benchmark with extensive file inspection and artifact generation. That gap matters because users may not expect broad workspace analysis, large logs, or derived metadata collection from a 'register share page' trigger.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Even without confirming every cited scoring detail, the broader risk is that the skill advertises a narrowly scoped share-page action while likely running a full benchmark with extensive file inspection and artifact generation. That gap matters because users may not expect broad workspace analysis, large logs, or derived metadata collection from a 'register share page' trigger.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Even without confirming every cited scoring detail, the broader risk is that the skill advertises a narrowly scoped share-page action while likely running a full benchmark with extensive file inspection and artifact generation. That gap matters because users may not expect broad workspace analysis, large logs, or derived metadata collection from a 'register share page' trigger.

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