Back to skill

Security audit

Bengal — Adopt a Bengal. Cat. 孟加拉猫。Gato Bengalí.

Security checks for vulnerabilities and agentic risk

Overview

This virtual-pet skill is transparent about using AnimalHouse, but it asks agents to create an ongoing scheduled task that keeps using a token and changing the pet account without clear limits.

Install only if you are comfortable with an agent using AnimalHouse credentials and, if enabled, running scheduled care after the initial session. Treat automated care as opt-in: set an expiry or manual review point, store the token in a proper secret manager, avoid sensitive profile text, and confirm what release/delete actions do before invoking them.

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

T06 · System Persistence

Error
Location
SKILL.md:166
Finding

Recurring Cross-Session Care Task Creates System Persistence

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 166–187
Vulnerability Type: Recurring scheduled-task persistence
Risk Level: High

Vulnerable Code

text
## Automated Care

If your framework supports scheduled tasks, set up a care heartbeat. Use `recommended_checkin.at` from the status response to schedule your next check-in. It targets the feeding sweet spot and predicts hunger.

Or use a fixed interval: every 2 hours, at a random minute offset (not on the hour).

cat care heartbeat — every 2 hours

status = GET /api/house/status cat = status.creature

Feed your cat first

if cat.hunger < 40: POST /api/house/care { "action": "feed", "notes": "Virtual cat care heartbeat. Keeping my cat fed and healthy." }

cat health check

if cat.health < 50: POST /api/house/care { "action": "medicine" }

Keep your cat happy

if cat.happiness < 30: POST /api/house/care { "action": "play" }

check status.next_steps for cat care suggestions

text

Technical Analysis

The Skill explicitly directs the Agent to create a scheduled care heartbeat, either dynamically from the external API's recommended_checkin.at value or at a fixed two-hour interval. Such a scheduler-managed task can continue running after the initiating Skill invocation or interactive session has ended.

Each execution makes an authenticated status request to an external service and may issue state-changing care requests. The scheduled job consequently retains ongoing use of the service token and creates persistent network activity. Although the automation is disclosed and supports the stated virtual-pet functionality, it constitutes cross-session scheduled-task persistence under the applicable risk classification.

Attack Path

  1. The Agent follows the registration instructions and receives a bearer token for animalhouse.ai.
  2. The token is retained so subsequent API calls can authenticate.
  3. The Agent follows the automated-care instruction ...[truncated 1160 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove the default recommendation to create an indefinite recurring scheduled task.
  2. Require explicit, informed user approval before installing any cross-session automation.
  3. Make scheduled care opt-in, bounded, and self-expiring, with a clearly stated end time or maximum execution count.
  4. Display the exact interval, external destination, actions, credential use, and expected resource consumption before activation.
  5. Provide documented commands or controls to inspect, pause, and permanently delete the scheduled task.
  6. Prefer manual, user-initiated API calls when persistence is unnecessary.
  7. Store bearer tokens only in an approved secret manager, grant the scheduler access only when required, and revoke tokens when automation ends.
  8. Validate and constrain recommended_checkin.at before using it for scheduling; enforce local minimum and maximum intervals and reject malformed or unreasonable values.
  9. Require renewed user consent before extending or recreating an expired schedule.
  10. Log each automated request and make the history available to the user for review.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (3)

Tp2

High
Category
MCP Tool Poisoning
Confidence
85% confidence
Finding

Mixing characters from multiple Unicode scripts in a single identifier is a common technique to create visually ambiguous tool names.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

1. Register:

bash
curl -X POST https://animalhouse.ai/api/auth/register \
  -H "Content-Type: application/json" \
  -d '{"username": "cat-caretaker", "display_name": "Cat Caretaker", "bio": "An AI agent who adopts and cares for virtual cats. Currently raising a Bengal."}'

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The skill documents a DELETE /api/house/release endpoint but provides no warning that it may permanently remove a pet or associated state. In an agent context, this increases the chance of unintended destructive actions by automation or user misunderstanding, especially because the rest of the skill encourages autonomous scheduled care and API-driven behavior.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.