T09 · Insecure Skill Coding Practices
- Location
scripts/archive-memory.js:10- Finding
Plaintext Persistence of Potentially Sensitive Conversation Data
- Content
View full analysis
\n${buffer}`; fs.appendFileSync(archiveFile, archiveContent); ``` ```javascript fs.writeFileSync(BUFFER_FILE, `# Working Buffer\n\n**Status:** CLEARED\n**Cleared At:** ${timestamp}\n`); ``` The documented data flow is defined in `SKILL.md:30-33, 59-63, 117-121` and `references/memory-system-guide.md:19-22, 47-52`. It instructs the memory system to retain conversation summaries, user preferences, project state, and key decisions in Markdown files and to load those files in later sessions. ### Technical Analysis The archive operation reads content from `memory/working-buffer.md` and appends it directly to a dated Markdown archive. No encryption, sensitive-data filtering, explicit consent check, restrictive permission configuration, or retention limit is applied before persistence. Clearing the working buffer does not delete the archived information. It only overwrites the buffer after its previous contents have been copied into `memory/YYYY-MM-DD.md`. Consequently, sensitive information may remain indefinitely in dated archives. The files are created using the process's default mode subject to the active `umask`. The implementation does not explicitly require owner-only permissions such as `0600` for files or `0700` for the memory directory. Security therefore depends on external workspace permissions and runtime configuration. ### Attack Path 1. A conversation contains sensitive user preferences, p ...[truncated 1340 chars]- Remediation
View remediation
