Back to skill

Security audit

picoclaw-security-guardian

Security checks for vulnerabilities and agentic risk

Overview

This is a focused Picoclaw security-checking skill that reads local configuration and writes local reports on demand, with no hidden persistence or exfiltration found.

Use this only for Picoclaw environments. Treat generated profile and drift files as sensitive operational reports because they can include local paths, file hashes, modes, and security-marker counts. For standalone installs, verify the release source and pinned signing key before extracting or installing artifacts.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (10)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 24)May include surrounding context.

md
For standalone installs, verify the signed release manifest before trusting `SKILL.md`, `skill.json`, or the archive. The `skill.json` file is the package metad

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 93)May include surrounding context.

md
For standalone installs, verify the signed release manifest before trusting `SKILL.md`, `skill.json`, or the archive. The `skill.json` file is the package metad

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

Scanner excerpt · SKILL.md (reported line 40)May include surrounding context.

md
RELEASE_PUBKEY_SHA256="711424e4535f84093fefb024cd1ca4ec87439e53907b305b79a631d5befba9c8"

curl -fsSL "$BASE/checksums.json" -o "$TMP_DIR/checksums.json"
curl -fsSL "$BASE/checksums.sig" -o "$TMP_DIR/checksums.sig"
curl -fsSL "$BASE/signing-public.pem" -o "$TMP_DIR/signing-public.pem"
curl -fsSL "$BASE/$ZIP_NAME" -o "$TMP_DIR/$ZIP_NAME"

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 137)May include surrounding context.

md
node scripts/generate_profile.mjs --output ~/.picoclaw/security/clawsec/current-profile.json

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
86% confidence
Finding

The skill metadata omits any explicit permission or allowed-tools scope even though the documented usage clearly depends on shell execution, environment access, and outbound network access. In an agent ecosystem, that mismatch can lead to overbroad execution at install/runtime or prevent operators from understanding that the skill will fetch remote artifacts and invoke local tooling, increasing the risk of unintended command and network exposure.

Content

No source excerpt is available for this finding.

Unsafe Defaults

Medium
Category
Tool Misuse
Confidence
80% confidence
Finding

Tool defaults are unsafe or overly permissive (e.g. disabled TLS verification, no authentication, world-writable permissions). Unsafe defaults widen the attack surface.

Content

Scanner excerpt · lib/profile.mjs (reported line 168)May include surrounding context.

js
]),
    auth_disabled: truthyFromText(text, [
      "auth: false",
      "disable_auth: true",
      "no_auth: true",
      "password: ''",
      'password: ""',

Unsafe Defaults

Medium
Category
Tool Misuse
Confidence
80% confidence
Finding

Tool defaults are unsafe or overly permissive (e.g. disabled TLS verification, no authentication, world-writable permissions). Unsafe defaults widen the attack surface.

Content

Scanner excerpt · lib/profile.mjs (reported line 173)May include surrounding context.

js
]),
    auth_disabled: truthyFromText(text, [
      "auth: false",
      "disable_auth: true",
      "no_auth: true",
      "password: ''",
      'password: ""',

Unsafe Defaults

Medium
Category
Tool Misuse
Confidence
80% confidence
Finding

Tool defaults are unsafe or overly permissive (e.g. disabled TLS verification, no authentication, world-writable permissions). Unsafe defaults widen the attack surface.

Content

Scanner excerpt · lib/profile.mjs (reported line 182)May include surrounding context.

js
]),
    auth_disabled: truthyFromText(text, [
      "auth: false",
      "disable_auth: true",
      "no_auth: true",
      "password: ''",
      'password: ""',

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

This function automatically discovers config paths, reads their contents to infer security signals, and computes file metadata and SHA-256 digests for watched files and release artifacts. The code contains no confirmation prompt, user-facing logging, or explanatory comment/docstring disclosing that local configuration files may be inspected and hashed, which is relevant because those files can contain credentials or other sensitive data.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
75% confidence
Finding

Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.exposed_secret_literal

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
test/picoclaw_security_guardian_sandbox_regression.sh:88