Back to skill

Security audit

My Diary

Security checks for vulnerabilities and agentic risk

Overview

This diary skill is coherent and not malicious, but it stores and displays sensitive personal diary data from a plaintext local file with limited privacy safeguards.

Install only if you are comfortable with diary entries being saved as plaintext JSON at the documented local path. Use a private, access-restricted location, avoid shared machines or logged/shared assistant sessions, and be careful with view/search commands because they can reveal stored personal content.

Vulnerability Patterns
  • 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
  • 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)

T09 · Insecure Skill Coding Practices

Warning
Location
README.md:24
Finding

Diary Entries Stored in Plaintext at a Predictable Hardcoded Path

Content
View full analysis

Vulnerability Details

File Location: README.md:24-29 and README.md:113-126; corroborated by SKILL.md:18-20 and SKILL.md:75-88
Vulnerability Type: Plaintext storage of sensitive personal information in a fixed, developer-specific location
Risk Level: Medium

Vulnerable Code Snippets

README.md:24-29:

markdown
### Storage Location

By default, diaries are stored at:

D:\Nancy\MyWork\WorkBuddyWorkSpace\diary\my-diary.json

text

README.md:113-126:

markdown
## Data Format

Diary entries are stored in JSON format:

```json
{
  "version": "1.0",
  "entries": [
    {
      "id": "1700000000000",
      "content": "Diary content here...",
      "created_at": "2026-03-15 14:30:00"
    }
  ]
}
text

### Technical Analysis

The skill directs the AI agent to store personal diary content as ordinary JSON at a fixed, predictable filesystem path. No encryption, restrictive file permissions, operating-system-backed secret storage, path isolation, or confidentiality checks are specified.

Diary entries may contain highly sensitive personal information. A predictable plaintext file allows any local user or process that already has sufficient filesystem access to locate and read the complete diary without interacting with the skill. A process with write access could also alter, inject, or delete entries. The hardcoded developer-specific path additionally creates portability and data-separation problems if the skill is installed in another environment without first being reconfigured.

This finding does not establish remote access or privilege escalation. Exploitation depends on an attacker or untrusted local process already having permission to access the configured file or its parent directory.

### Attack Path

1. A user invokes the skill to record one or more diary entries.
2. The agent creates or updates `D:\Nancy\MyWork\WorkBuddyWorkSpace\diary\my-diary.json`.
...[truncated 1281 chars]
Remediation
View remediation

Remediation Suggestions

  1. Replace the hardcoded developer-specific path with a configurable, per-user application-data directory obtained from the operating system.
  2. Create the diary directory and file with permissions restricted to the current user. On Windows, apply an ACL that excludes unrelated users; on Unix-like systems, use directory mode 0700 and file mode 0600.
  3. Encrypt diary contents at rest using authenticated encryption. Store encryption keys through an operating-system-backed facility such as Windows DPAPI, macOS Keychain, or a suitable Linux secret service rather than embedding keys in the skill.
  4. Validate that the resolved storage path remains inside the approved application-data directory before every read, write, or delete operation.
  5. Use atomic writes through a protected file in the same directory, followed by an atomic replacement, to reduce corruption and unsafe temporary-file exposure.
  6. Define handling for malformed or tampered JSON and avoid overwriting the original file until validation succeeds.
  7. Document the sensitivity of diary data, the storage location, permission requirements, backup behavior, and a secure deletion procedure.
  8. Consider requiring explicit user approval before displaying complete diary contents when the operating environment may be shared.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • YARA SignaturesMalware Match, Webshell Match, Cryptominer Match
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (5)

YARA rule 'agent_skill_mcp_tool_poisoning_metadata': MCP/tool metadata poisoning indicators in tool schemas or skill manifests [agent_skills]

High
Category
YARA Match
Confidence
80% confidence
Finding

YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).

Content

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

md
---
AIGC:
    ContentProducer: Minimax Agent AI
    ContentPropagator: Minimax Agent AI
    Label: AIGC
    ProduceID: 286144e5fc1f5629a70e6c0669393a38
    PropagateID: 286144e5fc1f5629a70e6c0669393a38
    ReservedCode1: 3045022100eddf38bb28b4f63a252a1736e5cbbd35d44fbc7a51d416067a08da8a91f084fd02207db5e6204aa023996b5eb757e9f6766ac8bab385ebfb15884c9e90809e16fbe5
    ReservedCode2: 3046022100cb4699180d984b19fb0f33a53726a9463dc916b9fd547eb747b971c77f28d48c02210099bd99b6b2c20cc8461cc52f1d45866a4d146e568863d89d1ff2f168124a57bc
description: 个人日记管理技能。用于记录日记、查询日记、查看日记列表、删除日记等操作。当用户说"写入日记"、"查看日记"、"列出日记"、"删除日记"时触发此技能。
name: my-diary
---

# 我的日记 (my-diary)

管理个人日记,支�

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The README documents that highly sensitive diary content is stored in a fixed local JSON file path but gives no warning about the sensitivity of the data, local exposure risks, backups/sync, or the lack of encryption/access controls. In a diary skill, users are especially likely to store intimate personal data, so omission of privacy guidance can lead to unsafe deployment and unintended disclosure.

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 sensitive personal diary content persistently in a local file, but the description does not clearly warn users that their entries will be saved to disk at a specific path. This can lead users to disclose intimate information without informed consent, increasing privacy and data exposure risk on shared or compromised systems.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger phrase "我的日记" is broad enough to match ordinary conversational text rather than an explicit command, which can cause unintended activation of a skill that reads or exposes highly sensitive diary data. In the context of a diary skill, accidental invocation is more dangerous than usual because the content is private and persistent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The README explains viewing and searching diary entries but does not warn that these actions may reveal previously stored sensitive personal content to anyone with access to the assistant session, terminal, logs, or screen. Because the skill’s purpose is managing personal diaries, exposing old entries during browse/search operations is a realistic privacy risk even without an active attacker.

Content

No source excerpt is available for this finding.