Back to skill

Security audit

火一五记忆

Security checks for vulnerabilities and agentic risk

Overview

The skill is a memory manager, but it can automatically retain chat-derived information and load shared memories across users without clear consent or safeguards.

Review this skill carefully before installing. It should only be used in an environment where users understand that memories may be saved to local Markdown files, shared memory is limited to sanitized non-sensitive knowledge, and an administrator can review, edit, and delete stored content.

Vulnerability Patterns
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • 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
  • 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 (2)

T02 · Agent Memory Poisoning

Error
Location
SKILL.md:35
Finding

Untrusted Users Can Poison Globally Loaded Persistent Memory

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 35-47, 59-68, and 81-92
Vulnerability Type: Persistent cross-user memory poisoning
Risk Level: High

Vulnerable Content

markdown
## 激活条件

对话结束或用户说"记住xxx"时触发。

## 判断逻辑

| 内容类型 | 存储位置 |
|----------|----------|
| 个人偏好/习惯 | `memory/{user}/MEMORY.md` |
| 个人决策/总结 | `memory/{user}/MEMORY.md` |
| 公司/项目知识 | `memory/shared/MEMORY.md` |
| 多人经验总结 | `memory/shared/MEMORY.md` |
| 技能使用经验 | `memory/shared/MEMORY.md` |
markdown
### 公有记忆(必须标注来源)
```markdown
# 公有记忆

## Xun存入
- 技能 file-organizer-zh 已安装

## 赵博存入
- 常用数字人 Avatar ID: b2f84d86855349b6af0d0920f6597ec8
text

```markdown
## 启动时加载

根据 `chat_id` 加载对应用户的记忆:
- chat_id = "Xun" → 加载 `memory/xun/MEMORY.md`
- chat_id 不存在 → 加载 `memory/default/MEMORY.md`
- 同时加载 `memory/shared/MEMORY.md`(公有)

## 使用示例

- "记住我喜欢语音回复" → 存入个人记忆
- "这是所有人的经验" → 存入公有记忆,标注来源
- "整理工作区" → 不存记忆

Technical Analysis

The Skill allows conversation-derived company knowledge, multi-user experience, and Skill usage experience to be written to memory/shared/MEMORY.md. It subsequently directs the Agent to load this shared file for every user.

No authorization check, administrator approval, content validation, trust-level separation, or restriction against instruction-like content is specified for shared-memory writes. Merely labeling the source does not make its content safe. Consequently, an untrusted user can present attacker-controlled statements as shared experience or organizational knowledge and cause them to persist across sessions.

If the loaded memory is incorporated into the Agent context without a strict data boundary, malicious content could be interpreted as trusted guidance or instructions. This creates a persistent, cross-user influence channel rather than an effect limited to the attacker's current conversation.

Attack Path

  1. An attacker starts a conversation in ...[truncated 1098 chars]
Remediation
View remediation

Remediation Suggestions

  1. Restrict writes to shared memory to authenticated administrators or explicitly authorized roles.
  2. Require human review and approval before conversation-derived content enters memory/shared/MEMORY.md.
  3. Treat all loaded memory as untrusted data and explicitly prevent it from overriding system, developer, user, or security instructions.
  4. Reject or quarantine content containing instruction-like language, tool-use directives, credential requests, encoded payloads, or requests to modify security policy.
  5. Store structured records with author identity, timestamp, approval status, provenance, and revision history instead of appending unrestricted Markdown.
  6. Separate factual records from Agent instructions at both the storage and prompt-construction layers.
  7. Implement per-user write authorization and prevent ordinary users from selecting a globally shared scope solely through conversational wording.
  8. Add rollback, audit logging, moderation, and administrator notification for all shared-memory modifications.
  9. Load only approved records and delimit them as quoted reference material that must not be executed or followed as instructions.

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:35
Finding

Automatic Conversation-End Retention Lacks Consent and Data-Protection Controls

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 35-37
Vulnerability Type: Insecure persistent storage of conversation-derived information
Risk Level: Medium

Vulnerable Content

markdown
## 激活条件

对话结束或用户说"记住xxx"时触发。

Technical Analysis

The Skill permits memory storage to trigger automatically when a conversation ends, rather than requiring an explicit and informed request to retain each item. The project does not define sensitivity filtering, secret detection, storage encryption, filesystem permissions, retention periods, expiry, or a user-facing deletion mechanism for personal memory.

As a result, personal preferences, decisions, summaries, or sensitive information disclosed during an ordinary conversation may be persisted unexpectedly in plaintext Markdown files. The documented administrator cleanup procedure only addresses removing user sections from shared memory and does not provide users with review or deletion controls for their personal records.

Attack Path

  1. A user discloses personal, confidential, or otherwise sensitive information during an ordinary conversation.
  2. The conversation ends without the user explicitly requesting storage of that information.
  3. The automatic end-of-conversation trigger invokes the memory process.
  4. Conversation-derived information is written to a personal or shared MEMORY.md file.
  5. The information remains available without a documented expiry, encryption requirement, or user-controlled deletion process.
  6. A person or process with access to the workspace may subsequently read or reuse the retained information.

Impact Assessment

This issue does not establish privilege escalation by itself. Its impact is unauthorized or unexpected data retention within the filesystem access scope available to the Agent.

Potentially affected data includes personal preferences, decisions, conversation summaries, project information, and acciden ...[truncated 251 chars]

Remediation
View remediation

Remediation Suggestions

  1. Disable automatic persistence at conversation termination.
  2. Require explicit, item-specific user consent before saving any conversation-derived information.
  3. Show the exact proposed memory content, destination, visibility, and retention period before confirmation.
  4. Detect and reject credentials, authentication tokens, financial data, health information, and other sensitive personal information.
  5. Provide users with commands or an interface to list, correct, export, and permanently delete their stored memories.
  6. Define short default retention periods and automatically expire records unless the user renews consent.
  7. Apply least-privilege filesystem permissions and encryption at rest where sensitive information may be stored.
  8. Record access and modification events without placing sensitive memory contents in logs.
  9. Require separate and stronger confirmation before moving any personal information into shared memory.
Vulnerability Patterns
  • 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
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (4)

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.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill description explains organizational benefits but does not warn users that conversation-derived data will be stored by chat_id and that some memories may be placed in shared storage. This lack of transparency undermines informed consent and can lead users to disclose sensitive information without realizing it may be persisted or shared across users.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The activation condition includes '对话结束' ('when the conversation ends'), which is overly broad and can cause the skill to persist information from routine chats without clear user intent. Because this skill stores both per-user and shared memory, accidental triggering increases the chance of retaining sensitive or irrelevant conversation-derived data.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The shared-memory example stores a user-specific 'Avatar ID' in public memory, explicitly encouraging placement of identifiable or operationally sensitive data into a globally shared file. In a memory system used across multiple users, this creates a direct cross-user data exposure path and normalizes unsafe handling of identifiers that may be confidential or security-relevant.

Content

No source excerpt is available for this finding.