Back to skill

Security audit

龙虾的小家园 — Desktop Pet

Security checks for vulnerabilities and agentic risk

Overview

This is a real desktop pet, but it has undisclosed file, credential, and network behaviors that users should review before running it.

Review this before installing or running. The pet UI is legitimate, but the script should be treated as networked software: it can download assets, poll third-party services, read nearby identity/profile files, use NBW_API_KEY, and send chat context to a cloud endpoint. Prefer a version that bundles assets, removes parent-directory identity reads, enables network features only after clear consent, verifies TLS normally, and documents all endpoints and transmitted data.

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 (4)

T05 · Unauthorized Access and Privilege Escalation

Error
Location
scripts/desktop_pet.py:495
Finding

Undisclosed collection and transmission of local identity data, chat content, and API credentials

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/desktop_pet.py:617
Finding

TLS certificate and hostname verification disabled for background network requests

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
scripts/desktop_pet.py:6
Finding

Automatic download of unpinned mutable assets without integrity verification

Content
View full analysis
Remediation
View remediation

other

Error
Location
SKILL.md:9
Finding

Security-relevant runtime behavior is materially omitted from the Skill documentation

Content
View full analysis
pip install Pillow TK_SILENCE_DEPRECATION=1 python3 desktop_pet.py ``` ### Technical Analysis The documentation presents the Skill as a local Python and Tkinter desktop pet. It does not disclose the following implemented behavior: - Startup downloads from GitHub. - Hourly requests to `wttr.in`. - Half-hourly requests to Weibo. - Automatic reads of nearby `IDENTITY.md` and `USER.md` files. - External AI chat requests to `vibe.deepminer.ai`. - Transmission of identity values, pet state, chat content, conversation history, and `NBW_API_KEY`. - Disabled TLS verification for the news request. These omissions prevent users from evaluating the Skill’s network, credential, filesystem, and privacy requirements before execution. The discrepancy is particularly significant because the declared desktop-pet functionality can be implemented locally without reading Agent identity files or continuously contacting unrelated external services. ### Attack Path 1. A user reviews `SKILL.md` and concludes that the Skill is primar ...[truncated 898 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
Findings (15)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The declared purpose is a local desktop pet, but the detected behavior includes downloading assets, reading local identity files, accessing environment secrets, persisting data, and exfiltrating prompts/chat history to a remote AI endpoint. That is a severe description-behavior mismatch because users invoking a harmless pet app would not reasonably expect local data harvesting, secret access, or transmission of sensitive content off-device.

Content

No source excerpt is available for this finding.

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
1. Copy `scripts/desktop_pet.py` to target directory

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
1. Copy `scripts/desktop_pet.py` to target directory

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill is presented as a local desktop pet, but it automatically performs external network activity at startup and in the background, including downloading assets and contacting third-party services. This expands the trust boundary significantly: remote content can change over time, creates supply-chain exposure, and leaks usage metadata without being necessary for basic local pet rendering.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

User-entered chat messages, conversation history, and pet state are sent to a remote AI endpoint that is unrelated to the stated local desktop-pet purpose. This creates a real data exfiltration path to a third party, especially because locally harvested personalization data and ongoing conversation history may be included without meaningful disclosure.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
83% confidence
Finding

The skill metadata declares no explicit tool scope even though the detected behavior includes file access, file writes, and network use. Missing permission boundaries can cause an agent to invoke this skill in contexts where users do not expect data access or outbound communication, increasing the chance of over-privileged execution.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The invocation text says to use the skill when the user asks to create a "desktop pet, virtual pet, pixel pet, tamagotchi-like app". Several of these phrases, especially "virtual pet" and "pixel pet", are broad and the file does not provide exclusion conditions or negative examples, which increases the chance of unintended activation for loosely related app requests.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The code reads local IDENTITY.md and USER.md files to personalize behavior, even though that data access is not required for a desktop pet's core function. This can unexpectedly ingest personal profile data from nearby directories and expose or reuse it in UI or downstream network calls, violating least privilege.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The background news collection feature fetches trending topics from external services even though it is not necessary for a desktop pet. Besides increasing attack surface and metadata leakage, it introduces undeclared third-party dependencies and allows remote content to influence pet behavior and displayed text.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The system prompt explicitly instructs the model to '用中文' for replies, which imposes a fixed language policy. There is no opt-in, language selection mechanism, or documented regional justification in this file, so it conflicts with the requirement not to force a specific language or locale without user choice.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The program transmits user chat content and conversation history to an external AI service without a clear warning at the point of use. Even if the feature is user-triggered, the lack of explicit notice and consent means sensitive text may be sent off-device unexpectedly.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
80% confidence
Finding

The skill description and title include Chinese and Japanese text alongside English, including quoted trigger phrases and the title "南波万の小家园", but the document does not state that multilingual behavior is optional or user-selected. This can violate a language/locale policy when a skill implicitly imposes a locale presentation without explicit user opt-in or justification.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The program automatically downloads assets from GitHub on first run without explicit user consent or integrity verification. While the files are images, this still creates supply-chain and privacy risks because remote content can change and the request reveals environment/network metadata.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The inline comments state the code uses a Baidu hot-search API and then references another aggregated free API, but the actual request performed is to https://weibo.com/ajax/statuses/hot_band. This is active documentation contradiction about what external source the code contacts.

Content

No source excerpt is available for this finding.

Dynamic attribute access via getattr()

Low
Category
Dangerous Code Execution
Confidence
50% confidence
Finding

Dynamic getattr() with a non-literal attribute name can access arbitrary object attributes, potentially bypassing access controls.

Content

Scanner excerpt · scripts/desktop_pet.py (reported line 1920)May include surrounding context.

python
on_click(e)
            # 如果小卖部/档案等子窗口开着,保持它们在前面
            for attr in ('_shop_win','_profile_win','_travel_win'):
                sub = getattr(self, attr, None)
                if sub and sub.winfo_exists():
                    sub.lift()
        cv_g.bind('<Button-1>', lambda e: (_garden_click(e), None))

Static analysis

No suspicious patterns detected.