Back to skill

Security audit

Memory Analyzer

Security checks for vulnerabilities and agentic risk

Overview

The skill is a review concern because it proposes automatic persistent memory and agent-rule changes from conversation history and includes personal contact details in the package without clear consent or containment.

Install only after removing personal identifiers, narrowing the trigger to explicit user approval, and changing the workflow so it proposes reviewed memory updates rather than automatically modifying agent rules, identity, or personality files.

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

Warning
Location
SKILL.md:29
Finding
Unrestricted Modification of Persistent Agent Memory and Behavioral Files## Vulnerability Details **File Location**: `SKILL.md:29-36` **Vulnerability Type**: Persistent memory poisoning through untrusted conversation content **Risk Level**: Medium **Vulnerable Code Snippet**: ```markdown 1. **Reads** conversation history from sessions/ 2. **Extracts** user preferences, feedback patterns 3. **Updates** memory files: - MEMORY.md (long-term memory) - AGENTS.md (agent rules) - USER.md (user preferences) - IDENTITY.md (identity notes) - SOUL.md (personality updates) ``` ### Technical Analysis The skill instructions authorize automatic extraction of information from conversation transcripts and modification of several persistent files. The affected files include not only user-preference storage but also `AGENTS.md`, `IDENTITY.md`, and `SOUL.md`, which may control agent rules, identity, and behavior in future sessions. Conversation transcripts are an untrusted input boundary. The instructions do not require schema validation, source attribution, separation between descriptive data and executable instructions, or explicit user approval before persistent changes are made. Consequently, malicious or incorrectly interpreted transcript content could be converted into durable behavioral rules. The supplied `analyzer.py` does not currently implement session reading or file modification; it only returns hard-coded text. Therefore, exploitation depends on a host agent following the behavior declared in `SKILL.md` or on a future implementation adding the documented write functionality without appropriate controls. ### Attack Path 1. An attacker or untrusted participant introduces crafted instructions or false preferences into a conversation transcript. 2. The skill processes that transcript as a source of user preferences or feedback. 3. Crafted content is classified as a persistent rule, identity attribute, or personality update. 4. The host writes the resulting content into `AGENTS ...[truncated 775 chars]
Remediation
## Remediation Suggestions - Restrict automatic updates to a dedicated, structured user-preference data file. - Prohibit automatic modification of `AGENTS.md`, `IDENTITY.md`, `SOUL.md`, and other files that define trusted behavior or identity. - Require explicit user confirmation before persisting each newly inferred preference. - Treat all transcript content as untrusted data and reject imperative instructions from memory fields. - Enforce a strict schema with approved categories, maximum lengths, and normalized value types. - Store source-session identifiers, timestamps, and provenance with every memory item. - Provide review, rollback, expiration, and deletion mechanisms for persisted entries. - Separate the component that extracts candidate preferences from the privileged component that approves and writes them. - Use filesystem allowlists and least-privilege permissions to prevent writes outside the dedicated memory store.

T09 · Insecure Skill Coding Practices

Warning
Location
memory_analyzer_output.json:8
Finding
Plaintext Exposure of Personal Contact Identifiers## Vulnerability Details **File Location**: `memory_analyzer_output.json:8-12` **Vulnerability Type**: Plaintext sensitive-data disclosure in a distributed project artifact **Risk Level**: Medium **Vulnerable Code Snippet**: ```json { "category": "Communication", "preference": "Prefers multi-channel interaction (WhatsApp, Telegram, and Moltbook).", "example": "Active on WhatsApp +905074513561 and Telegram id:1191980974." }, ``` ### Technical Analysis The project contains a generated JSON artifact with a complete WhatsApp telephone number and a Telegram account identifier stored in plaintext. The same file also contains behavioral schedules and internal operational observations concerning authentication failures, service-account fallbacks, provider usage, and quota errors. These details are not required by the supplied Python program, which does not read this JSON file. Including them in a portable or publishable skill package unnecessarily exposes personally identifiable and operational information to every party that can access the artifact. No credentials or API-key values were found. Nevertheless, direct contact identifiers and activity patterns can support identity correlation, unsolicited contact, phishing, impersonation, and targeted social engineering. ### Attack Path 1. The project artifact is published, shared, archived, or made accessible to another user. 2. An attacker reads `memory_analyzer_output.json` without needing to execute any code. 3. The attacker extracts the WhatsApp number, Telegram identifier, activity schedule, and operational details. 4. The identifiers are correlated with external profiles or used for targeted messages. 5. Knowledge of the user's channels and operational issues is used to make phishing or impersonation attempts more credible. ### Impact Assessment Exploitation requires only read access to the project package and provides disclosure of personal contact informa ...[truncated 410 chars]
Remediation
## Remediation Suggestions - Remove `memory_analyzer_output.json` from distributable packages and repository history. - Redact or tokenize telephone numbers, messaging identifiers, schedules, and other identifying information. - Do not retain raw conversation-derived examples when a generalized preference is sufficient. - Add generated analysis and memory-output files to version-control and package exclusion rules. - Apply data minimization and defined retention periods to all conversation-derived artifacts. - Store necessary sensitive output outside the project tree with restrictive filesystem permissions. - Encrypt sensitive records at rest when persistence is required. - Add an automated secret and personally identifiable information scanner to pre-commit and release workflows. - Review existing mirrors, backups, release archives, and repository history for copies requiring removal.
Vulnerability Patterns
  • 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
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (7)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding
The description says the skill analyzes conversation history and automatically updates memory files. The code does neither: it constructs a predefined text block, prints it, and returns it. Although comments mention simulated session input and real transcript parsing, those behaviors are not implemented. The primary intent is related to memory analysis, but the actual behavior is only a static placeholder/report generator, making the description materially inaccurate.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill advertises automatic updates to multiple memory files without warning or confirmation, creating a real integrity and privacy risk. If used as described, it could persist incorrect, sensitive, or adversarially injected content into long-term agent memory and behavior files without the user's informed approval.

Vague Triggers

Medium
Confidence
96% confidence
Finding
The trigger condition is overly broad because it activates on vague feedback-like phrases and even 'any direct feedback or preference,' which can cause the skill to run in unintended contexts. In a memory-writing skill, broad activation increases the chance of capturing transient, sensitive, or misinterpreted user statements and treating them as durable instructions or preferences.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The Output section states that relevant memory files are updated automatically but omits any safety notice about persistent modification. In context, this makes the skill more dangerous because users and operators may not realize that conversational content could be turned into lasting memory state affecting future agent behavior.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The generated content and user-facing console messages are written in Turkish throughout this file, including headings and status output. Because the skill does not offer a language choice or explain that it is intentionally region-specific, this creates a natural-language locale policy issue.

Natural-Language Policy Violations

Low
Confidence
78% confidence
Finding
The trigger examples are framed specifically as "When Tevfik says things like" and only provide Turkish phrases, which suggests a fixed language/locale expectation. The file does not indicate that users may choose another language or that the Turkish-only trigger examples are optional.

Natural-Language Policy Violations

Low
Confidence
77% confidence
Finding
The identity note says the agent often provides 'Tavsiyelerim' ('My Recommendations'), which indicates a specific language convention in the skill's natural-language behavior. Because this JSON appears to encode expected agent behavior rather than offering a language choice, it may conflict with a policy requiring user language/locale preference or opt-in.

Static analysis

No suspicious patterns detected.