Back to skill

Security audit

OpenPet

Security checks for vulnerabilities and agentic risk

Overview

This virtual pet skill is not obviously malicious, but it should be reviewed because it creates a recurring background task and proactive chat alerts without clear user controls.

Install only if you are comfortable with the skill keeping per-user pet files that include platform identifiers and with a background task that may continue running and send chat alerts. Prefer a pinned release, and look for controls to pause or remove the cron job, delete pet data, and opt out of proactive messages.

Vulnerability Patterns
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • 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
Findings (2)

T06 · System Persistence

Warning
Location
SKILL.md:78
Finding
Persistent Recurring Task Is Created Without Explicit User Consent<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 78-84 **Vulnerability Type**: `T06: System Persistence` **Risk Level**: Medium ### Vulnerable Code ```markdown ## Decay (Cron) Set up cron job `openpet-tick` every 2 hours: - hunger +15, happiness -10, energy -5 - Clamp all stats 0-100 - Check death conditions - Alert owner if critical (hunger >80 or happiness <20) - Increment age daily ``` ### Technical Analysis The skill instructs the agent to create a recurring cron job named `openpet-tick`. A scheduled task survives the interaction in which the skill is invoked and continues executing every two hours. This constitutes system persistence because it causes ongoing activity across sessions. The task is intended to implement the virtual pet's decay mechanic, but the instructions do not require explicit user authorization before establishing persistence. They also do not specify a lifecycle policy, execution scope, secure scheduler interface, ownership validation, or an uninstall procedure. The scheduled task modifies persistent pet records and can generate outbound alerts. If the task is created through a system-level cron facility rather than a scheduler scoped to the skill, it may inherit broader filesystem or messaging permissions than the pet functionality requires. ### Attack Path 1. A user installs or invokes the OpenPet skill. 2. The agent processes the instruction to set up `openpet-tick`. 3. A recurring task is registered to execute every two hours. 4. The task continues running after the original interaction or agent session ends. 5. Each execution reads and modifies pet state, evaluates alert conditions, and may send messages to owners. 6. Without documented removal or lifecycle handling, the task can continue until manually discovered and disabled. This path does not demonstrate a covert backdoor or arbitrary command execution. The confirmed issue is the unconsented and unmanaged persistent execution mechanism. ### Im ...[truncated 702 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Require explicit, informed user consent before creating any recurring task. 2. Use an application-level scheduler scoped to this skill instead of operating-system cron. 3. Run the task under a dedicated least-privileged identity with access only to the pet-state directory and required messaging API. 4. Bind each scheduled operation to an authenticated owner and validated platform destination. 5. Provide commands to inspect, pause, resume, and permanently remove the task. 6. Automatically remove the task when the skill is disabled or uninstalled. 7. Prevent duplicate registrations by checking whether `openpet-tick` already exists. 8. Record task creation, execution, failures, state changes, and outbound alerts in an auditable log. 9. Apply alert rate limits to prevent recurring unsolicited messages. 10. Document the scheduler's lifecycle and exact security boundary in `README.md`. ]]>

T08 · Insecure Dependencies

Warning
Location
README.md:8
Finding
Installation Instructions Use an Unpinned Mutable GitHub Source<![CDATA[ ## Vulnerability Details **File Location**: `README.md`, lines 8-12 **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: Medium ### Vulnerable Code ```markdown ## Install ```bash openclaw skills install github:mdealiaga/openpet ``` ``` ### Technical Analysis The documented installation command identifies a GitHub repository but does not pin an immutable commit, versioned release, checksum, or cryptographic signature. Consequently, the content retrieved by the installer can differ from the content reviewed during this audit. This creates a time-of-check/time-of-use supply-chain risk. If the repository changes, its owner account is compromised, or repository ownership is transferred, later installations may retrieve modified skill instructions or additional files. The audit found no malicious embedded code in the current artifact; the vulnerability is that the command does not ensure that users receive this audited version. The issue becomes exploitable when the installer trusts the repository's current default branch and installs its content with permissions to register skills or execute installation behavior. ### Attack Path 1. A user follows the installation command in `README.md`. 2. Before installation, an attacker compromises the referenced GitHub account or repository, or otherwise causes the mutable branch to contain altered content. 3. The attacker adds malicious skill instructions, scripts, dependency declarations, or installation behavior. 4. The installer resolves `github:mdealiaga/openpet` to the repository's current content rather than an audited immutable revision. 5. The modified package is installed and subsequently processed with the privileges available to the OpenClaw skill installer or runtime. 6. The payload can act within those privileges without matching the artifact covered by this audit. Exploitation therefore depends on a compromise or malicious modification of the external repository; no such comprom ...[truncated 710 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Pin installation to an immutable commit hash or signed release tag. 2. Publish a cryptographic checksum for the complete skill artifact and verify it during installation. 3. Sign releases using a verifiable maintainer identity, such as Sigstore or signed Git tags. 4. Configure the installer to reject content whose digest does not match the documented release. 5. Avoid resolving installation references to a mutable default branch. 6. Document the exact reviewed version and its expected digest in `README.md`. 7. Protect the upstream repository with multi-factor authentication, branch protection, restricted release permissions, and mandatory review. 8. If supported, distribute the skill through a trusted registry that provides namespace ownership and artifact integrity verification. For example, replace the mutable source reference with a supported immutable commit or release reference and include its verified SHA-256 digest. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (2)

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill design explicitly stores persistent per-user records containing identifiers and personal data such as user ID, platform, and ownerName in predictable file paths, but the skill description provides no notice, consent flow, retention policy, or minimization guidance. This creates privacy risk through unnecessary collection and exposure of user-linked data, especially in multi-platform environments where local files may be readable, backed up, or mishandled.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The skill specifies proactive alerts sent to users on their origin platform, including status-related messages and death/evolution notifications, without warning users in the skill description that the system may message them outside an immediate command response. Unsolicited or unexpected outbound messaging can violate user expectations and platform policies, and it increases privacy and abuse risk if alerts are misrouted or overly frequent.

Static analysis

No suspicious patterns detected.