Back to skill

Security audit

绿灵 · Blooming Elf

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent plant-care assistant, with persistent notes and reminders that fit its purpose but deserve user awareness.

Install only if you are comfortable with the skill keeping persistent plant records, city and home-growing details, reminder settings, and document IDs or local file paths. Review where it stores its Markdown notes, be careful with generated document links, and confirm reminder automation before enabling it.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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)

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
SKILL.md:153
Finding

Shared Agent Memory Access Exceeds Skill-Scoped Storage Boundaries

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 15, 153-184, 307-316, and 417
Vulnerability Type: Shared persistent-memory access without Skill-level isolation
Risk Level: Medium
Classification: T05: Unauthorized Access and Privilege Escalation

Relevant Code Snippets

The following are faithful English translations of the relevant source instructions:

Line 15

markdown
Trigger: Read `~/.workbuddy/MEMORY.md`. If the current user's configuration section cannot be found, or the configuration status is not marked as configured, start profile setup.

Lines 153-184

markdown
Storage: `~/.workbuddy/MEMORY.md`, under the current user's configuration section, or a named virtual-user configuration section when multiple users are present.

The configuration contains:
- Assistant name
- City
- Climate type
- OpenAPI knowledge-base ID
- MCP knowledge-base ID
- Folder ID
- Growing environment
- Window orientation
- Temperature and humidity information
- Heating or air-conditioning information
- Reminder time
- Plant list
- Last watering date
- Profile note ID
- Log note ID
- Profile file path
- Log file path
- Configuration status

On Skill startup, read MEMORY.md, locate the corresponding configuration section, and parse its fields.

Lines 307-316

markdown
- If IMA is available:
  - Create the profile and log notes with `import_doc`.
  - Record the profile note ID and log note ID in MEMORY.md.
- If IMA is unavailable:
  - Create local Markdown files with `Write`.
  - Record the profile file path and log file path in MEMORY.md.
  - Use `Read` for later access and `Edit` for append operations.

Line 417

markdown
Before completion, write the complete configuration into the Skill configuration section of MEMORY.md and mark the configuration status as configured. At minimum, store the city, climate type, growing envi
...[truncated 3351 chars]
Remediation
View remediation

Remediation Suggestions

  1. Replace global memory storage with a dedicated Skill-owned state file, such as a private application-data directory scoped to blooming-elf.
  2. Apply restrictive file permissions so only the current user and the Skill runtime can access the state.
  3. Use a structured, scoped state API that exposes only this Skill's namespace instead of granting access to the complete memory file.
  4. Obtain explicit user consent before the first persistent read or write, and clearly identify every category of retained data.
  5. Minimize stored information. Avoid retaining precise location, household environmental details, local paths, or cloud identifiers unless required for an enabled feature.
  6. Use stable, runtime-provided user identifiers rather than editable names to separate multiple users.
  7. Validate document identifiers and local paths before use. Restrict local paths to an approved Skill-owned directory and reject traversal outside that directory.
  8. Parse configuration with a strict structured format rather than matching Markdown headings.
  9. Perform atomic updates with backups or compare-and-swap semantics to avoid corrupting unrelated state.
  10. Provide controls to inspect, export, delete, and reset all persistent data associated with the Skill.
  11. Ensure reminder automations retain the existing explicit-confirmation requirement and store only opaque task identifiers in Skill-scoped state.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (8)

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.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The file requires the agent to output a fixed Chinese onboarding script '逐字照搬' and the entire skill is written as mandatory Chinese interaction behavior. There is no indication that the user can choose another language or locale, making this a language-policy issue for a general-purpose skill.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill stores personal and environmental data in MEMORY.md and external/local documents but does not present a clear privacy notice before collection and persistence. Users may disclose location, routines, file paths, and plant-related notes without understanding where the data is stored, how long it persists, or who can access it.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill is presented as a simple plant-care assistant, but it performs substantial document creation, persistence, automation setup, and knowledge-base operations. This mismatch can prevent users from understanding the scope of data handling and side effects, undermining informed consent and increasing privacy and integrity risk.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill can retrieve shareable document URLs for user notes, which expands access beyond internal note handling into potentially redistributable links. For a plant-care assistant, this capability is not obviously necessary and could expose user-maintained notes or metadata if invoked without clear user understanding of link scope and lifetime.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

Several trigger phrases are generic everyday expressions like '帮我看看' or broad symptom statements, making accidental invocation likely in unrelated contexts. This can lead to unintended workflow execution, including data reads, storage operations, or automation prompts without clear user intent.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The unconfigured trigger activates on broad plant-related conversation, which may cause the skill to initiate onboarding, read/write memory, or steer the interaction even when the user did not intend to use this skill. Overbroad activation increases the chance of unsolicited data collection and unintended state changes.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The skill fetches live weather based on the user's city, but this network behavior is not clearly disclosed beforehand. While lower impact than document sharing or persistent storage, undeclared external lookups still affect privacy expectations and could surprise users who did not expect location-derived queries.

Content

No source excerpt is available for this finding.