T09 · Insecure Skill Coding Practices
- Location
jackal-memory/client.py:42- Finding
Encryption Key Stored Without Explicitly Restrictive File Permissions
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a coherent remote memory tool, but it handles the long-term encryption key in ways that could expose saved memories.
Install only if you are comfortable with this skill storing AI memory remotely and managing a long-term local encryption key. Before use, create the key file with owner-only permissions, avoid running keygen or first-run setup where output is logged, and consider installing dependencies in an isolated environment with pinned versions.
jackal-memory/client.py:42Encryption Key Stored Without Explicitly Restrictive File Permissions
jackal-memory/client.py:47Encryption Key Disclosed Through Standard Output and Error Streams
SKILL.md:21Unpinned Cryptography Dependency Installation
The skill requests and documents capabilities that access environment secrets, local files, and a remote network service, but it does not declare any explicit tool scope or allowed-tools restrictions. That increases the blast radius because an agent runtime may grant broader-than-necessary access, allowing unintended exposure of API keys, encryption keys, or sensitive memory contents through file and network operations.
The client auto-generates a long-term encryption key and writes it to a predictable location in the user's home directory without setting restrictive file permissions or requiring explicit user consent before persisting secret material. If the file is readable by other local users, included in backups, or harvested by malware, an attacker who also obtains stored ciphertext can decrypt all memories protected by that key.
The docstring explicitly states, "Encryption is always on — there is no opt-out." This imposes a fixed behavior without offering user choice or documenting a justified policy need, which matches the natural-language policy concern around forced settings without opt-in.
No suspicious patterns detected.