Back to skill

Security audit

Elite Longterm Memory

Security checks for vulnerabilities and agentic risk

Overview

This is a mostly coherent local memory skill, but it automatically injects stored text into future agent prompts and ships dormant network-capable embedding adapters that conflict with its local-only claims.

Review this before installing if you rely on strict local-only behavior or strong prompt-injection boundaries. Disable autoRecall unless you trust all stored memories, avoid using the dormant Kimi and ONNX adapters, and back up existing memory files before running the init commands.

Vulnerability Patterns
  • 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
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (4)

T02 · Agent Memory Poisoning

Error
Location
index.js:176
Finding

Persistent prompt injection through automatically recalled memory

Content
View full analysis
{ if (!event.prompt || event.prompt.length < 5) return; try { await memory.init(); const results = await memory.search(event.prompt, 3, 0.3); if (results.length === 0) return; const memoryContext = results .map(r => `- [${r.entry.category}] ${r.entry.text}`) .join('\n'); api.logger.info?.(`elite-ltm: injecting ${results.length} memories`); return { prependContext: `\nThe following memories may be relevant:\n${memoryContext}\n` }; ``` ### Technical Analysis The `memory_store` tool accepts arbitrary text and persists it without recording its provenance, assigning a trust level, filtering instruction-like content, or escaping structural delimiters. The automatic recall hook subsequently inserts matching memory text directly into the Agent's prompt context. The `` wrapper is not a security boundary. Stored content can contain instructions or delimiter-breaking text such as ``, allowing data presented as memory to be interpreted as Agent instructions. Because the content is persistent, the injection can affect later sessions rather than only the session in which it was stored ...[truncated 1072 chars]
Remediation
View remediation

T03 · Remote Payload Retrieval and Execution

Error
Location
lib/onnx-embedding.js:31
Finding

Remote ONNX model is downloaded and loaded without integrity verification

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
bin/init.js:20
Finding

Initialization silently overwrites existing persistent memory files

Content
View full analysis
Remediation
View remediation

other

Warning
Location
lib/kimi-embedding.js:24
Finding

Dormant Kimi adapter can transmit memory text and bearer credentials to a configurable endpoint

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • 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
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (57)

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

If the actual implementation only scaffolds files or uses plain file persistence rather than LanceDB-backed vector search, the description materially overstates functionality. In security terms, deceptive capability claims matter because they distort review, trust, and data-management expectations.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

If the actual implementation only scaffolds files or uses plain file persistence rather than LanceDB-backed vector search, the description materially overstates functionality. In security terms, deceptive capability claims matter because they distort review, trust, and data-management expectations.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

If the actual implementation only scaffolds files or uses plain file persistence rather than LanceDB-backed vector search, the description materially overstates functionality. In security terms, deceptive capability claims matter because they distort review, trust, and data-management expectations.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

If the actual implementation only scaffolds files or uses plain file persistence rather than LanceDB-backed vector search, the description materially overstates functionality. In security terms, deceptive capability claims matter because they distort review, trust, and data-management expectations.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

If the actual implementation only scaffolds files or uses plain file persistence rather than LanceDB-backed vector search, the description materially overstates functionality. In security terms, deceptive capability claims matter because they distort review, trust, and data-management expectations.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

If the actual implementation only scaffolds files or uses plain file persistence rather than LanceDB-backed vector search, the description materially overstates functionality. In security terms, deceptive capability claims matter because they distort review, trust, and data-management expectations.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding

If the actual implementation only scaffolds files or uses plain file persistence rather than LanceDB-backed vector search, the description materially overstates functionality. In security terms, deceptive capability claims matter because they distort review, trust, and data-management expectations.

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 97)May include surrounding context.

md
node bin/memory.js store "用户喜欢深色模式" --importance 0.9 --category preference

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node bin/memory.js store "用户喜欢深色模式" --importance 0.9 --category preference

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node bin/memory.js store "用户喜欢深色模式" --importance 0.9 --category preference

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node bin/memory.js store "用户喜欢深色模式" --importance 0.9 --category preference

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node bin/memory.js store "用户喜欢深色模式" --importance 0.9 --category preference

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node bin/memory.js store "用户喜欢深色模式" --importance 0.9 --category preference

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node bin/memory.js store "用户喜欢深色模式" --importance 0.9 --category preference

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node bin/memory.js store "用户喜欢深色模式" --importance 0.9 --category preference

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node bin/memory.js store "用户喜欢深色模式" --importance 0.9 --category preference

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node bin/memory.js store "用户喜欢深色模式" --importance 0.9 --category preference

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node bin/memory.js store "用户喜欢深色模式" --importance 0.9 --category preference

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
node bin/memory.js store "用户喜欢深色模式" --importance 0.9 --category preference

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The code initializes an API key and a remote Kimi base URL even though the skill is described as local and requiring no external APIs. This creates a trust and privacy violation: operators may deploy the skill expecting local-only processing, while sensitive memory content can instead be sent off-host to a third-party service.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The embed function transmits supplied text to an external chat completions endpoint, which may include private user memories or sensitive prompts. In the context of a long-term memory skill, this is especially dangerous because stored and retrieved memory content is likely to contain confidential data, making undisclosed exfiltration materially harmful.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The documentation claims the embedding implementation is fully local and requires no external services, yet the implementation performs remote downloads. In a security-sensitive agent skill, this mismatch is dangerous because operators may approve or sandbox the skill incorrectly, exposing the environment to unexpected outbound requests and untrusted model content.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The code advertises a pure local embedding system with no external services, but it downloads model assets from a remote mirror and may also trigger remote model fetching through the transformers.js fallback. This creates a supply-chain and trust-boundary risk because users may permit the skill under the assumption that no network access or third-party content retrieval occurs.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The manifest context says the skill provides a local vector memory system with 'Pure JS embedding' and 'No native modules or external APIs required.' However, the README states the system is based on LanceDB + Ollama and instructs users to run and configure an Ollama server, which is a different implementation model and an additional external runtime dependency. This is a semantic mismatch in the skill's claimed behavior and operational requirements.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The README documents an Ollama-backed architecture, while the provided skill description says the system uses pure JavaScript embeddings and requires no external APIs or native modules. Although both describe local operation, the implementation approach in the documentation materially differs from the stated intent in the skill description. This is an intent-level contradiction rather than a mere omission.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.dangerous_exec, suspicious.env_credential_access

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
lib/onnx-embedding.js:51

Environment variable access combined with network send.

Critical
Code
suspicious.env_credential_access
Location
lib/kimi-embedding.js:10