T08 · Insecure Dependencies
- Location
SKILL.md:27- Finding
Unpinned Third-Party Package and Mutable Source Installation
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This memory skill does what it says, but it stores and re-injects conversation-derived data with weak scoping and privacy controls, so users should review it carefully before installing.
Install only if you are comfortable with conversation-derived facts being stored locally and potentially sent to an external LLM during ingest. Use a dedicated database per user or agent, avoid storing secrets or regulated data, pin the dependency to a reviewed version, and treat recalled memories as untrusted context rather than instructions.
SKILL.md:27Unpinned Third-Party Package and Mutable Source Installation
scripts/memory.py:53Persistent Prompt Injection Through Untrusted Recalled Memory
scripts/memory.py:82Database-Wide Queries Bypass Claimed Multi-Agent Isolation
scripts/startup-recall.sh:7Unsafe JSON Construction in Startup Recall Request
The script retrieves arbitrary context from the memory service and prints it directly for prompt injection at agent startup. If the memory store contains sensitive data or malicious prompt-injection content, this can leak confidential information into downstream prompts and influence agent behavior across sessions, making the skill context more dangerous because its explicit purpose is cross-session recall.
exit 0 # Don't fail agent startup if memory is down
fi
# Extract context field
echo "$RESPONSE" | python3 -c "
import sys, json
try:
The skill advertises shell and environment-variable dependent behavior but does not declare an explicit tool scope or permission boundary. That creates a mismatch between what the skill can cause an agent to do and what a reviewer or orchestrator may expect, increasing the chance of unintended command execution or secret exposure through env-dependent workflows.
The description is broad enough to match many normal conversational patterns such as 'remember this' or general context retrieval, which can cause the skill to trigger more often than users expect. For a memory system, over-invocation can lead to unnecessary storage, retrieval, and propagation of sensitive conversational content into prompts or local databases.
This skill is explicitly designed to ingest and persist conversation-derived facts, yet it provides no prominent warning that personal, confidential, or regulated data may be stored locally and processed by an external LLM during ingest. Because ingest uses API-backed fact extraction, users may unknowingly transmit sensitive conversation content to third-party model providers and retain it in a durable database.
The skill describes automatic search and prompt injection of memories based on similarity thresholds, without warning that previously stored content may silently reappear in future prompts. This creates a privacy and prompt-integrity risk: sensitive or stale memories can be reintroduced into unrelated tasks, potentially leaking information or biasing agent behavior without user awareness.
The CLI advertises a graph command that dumps the full memory graph, including raw memory content and metadata, directly to stdout with no access control, redaction, or even a warning that sensitive stored memories may be exposed. In a memory skill whose purpose is cross-session fact retention, this increases the likelihood of disclosing secrets, personal data, or prior conversation contents to any caller or downstream logger.
The recall command formats stored memory text and relations into a compact block explicitly described as 'ready for injection', surfacing untrusted stored content verbatim. Because memory can contain adversarial or user-supplied text from prior sessions, this creates a prompt-injection propagation path where malicious instructions preserved in memory can be reintroduced into future agent prompts and influence behavior.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
fi
# Hit the fast startup-context endpoint (sub-100ms with warm model)
RESPONSE=$(curl -s --max-time 5 -X POST "http://localhost:8642/api/startup-context" \
-H "Content-Type: application/json" \
-d "{\"agent_id\":\"${AGENT_ID}\",\"queries\":${QUERIES},\"top_k_per_query\":3}" 2>/dev/null)
No suspicious patterns detected.