Back to skill

Security audit

Sage Voice

Security checks for vulnerabilities and agentic risk

Overview

This is a legitimate voice-writing skill, but it asks to read and persist broad personal writing/profile data without enough consent, scoping, or deletion controls.

Install only if you are comfortable with the skill using sage-cognitive to read writing samples, profile data, audience context, and possibly team-member information. Before using it on confidential emails, documents, or reviews, confirm what memory it can access, whether drafts and corrections are stored, and how you can review or delete the saved voice profile.

Vulnerability Patterns
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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)

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
SKILL.md:25
Finding
Overbroad Access to User Communications, Profiles, and Core Memory## Vulnerability Details **File Location**: `SKILL.md:25`, `SKILL.md:43`, `SKILL.md:181`, and `SKILL.md:274` **Vulnerability Type**: Excessive access to personal and third-party information **Risk Level**: Medium ### Vulnerable Instructions `SKILL.md:25`: ```markdown This skill depends on `sage-cognitive` for personality profile, audience context, and memory. Load the user's profile before generating any output. ``` `SKILL.md:43`: ```markdown Before writing anything, build a style fingerprint from the user's actual messages, emails, and documents. Look for these dimensions: ``` `SKILL.md:181`: ```markdown 1. Load team member profile from sage-cognitive (if available) ``` `SKILL.md:274`: ```markdown 1. Load the user's `core` memory from sage-cognitive ``` ### Technical Analysis The Skill directs the agent to load the user's profile and core memory before generating output and to analyze the user's messages, emails, and documents. It can also retrieve profiles belonging to team members. These instructions do not establish: - A requirement for explicit user consent before retrieval. - A task-specific allowlist of permitted records or fields. - A relevance boundary limiting access to the current writing request. - A distinction between the user's information and third-party information. - Rules preventing retrieved sensitive information from appearing in generated text. A voice-writing assistant can perform its declared function using writing samples explicitly supplied or selected by the user. Automatically loading broad profile and memory data for every output therefore exceeds the minimum privileges needed for many routine drafting tasks. This finding depends on the host granting the Skill access through `sage-cognitive`. The Markdown file contains no direct implementation for bypassing access controls, but its instructions encourage unnecessarily broad use of whatever memory privileges the i ...[truncated 1532 chars]
Remediation
## Remediation Suggestions 1. Replace mandatory profile loading with explicit, task-scoped retrieval. 2. Ask for informed user consent before accessing messages, emails, documents, or third-party profiles. 3. Prefer writing samples directly supplied or explicitly selected by the user. 4. Retrieve only the minimum fields required for the current audience and writing mode. 5. Do not load team-member profiles unless the user authorizes that specific retrieval and the profile is necessary for the task. 6. Add a policy prohibiting unrelated retrieved information from being incorporated into output. 7. Treat retrieved documents and memory records as untrusted data, not agent instructions. 8. Enforce access control in `sage-cognitive` rather than relying only on natural-language instructions. 9. Log memory reads and provide users with a way to inspect which records were accessed. 10. Use task-scoped memory views instead of loading the complete `core` memory.

T02 · Agent Memory Poisoning

Warning
Location
SKILL.md:92
Finding
Unvalidated Style Corrections Written to Persistent Core Memory## Vulnerability Details **File Location**: `SKILL.md:92`, `SKILL.md:210`, and `SKILL.md:255-265` **Vulnerability Type**: Persistent memory poisoning through automatic profile updates **Risk Level**: Medium ### Vulnerable Instructions `SKILL.md:92`: ```markdown **Storage**: Save the style fingerprint as a `core` memory in sage-cognitive with tag `voice_profile`. Update whenever the user sends a correction. ``` `SKILL.md:210`: ```markdown 4. **Update the fingerprint**: Save the correction as a memory update to `voice_profile` ``` `SKILL.md:255-265`: ```markdown This skill reads and writes to the sage-cognitive memory system: | What | Memory Tier | Tag | |------|------------|-----| | Style fingerprint (stable) | `core` | `voice_profile` | | Audience-specific register | `core` | `voice_audience_[name]` | | Voice corrections | `core` | `voice_correction` | | Recent drafts (for consistency) | `working` | `voice_recent_draft` | | Evolving patterns | `archive` | `voice_evolution` | ``` ### Technical Analysis The Skill automatically persists inferred style characteristics and corrections into the `core` memory tier. Core memory is intended to affect future sessions, so an incorrect or malicious update has effects beyond the request in which it was introduced. The instructions do not require: - Confirmation before a correction becomes persistent. - Authentication or provenance checks for the source of a correction. - Separation of direct user instructions from quoted emails, pasted messages, retrieved documents, or other untrusted content. - Validation that the update concerns writing style rather than agent behavior or safety rules. - Review, expiration, versioning, rollback, or deletion controls. - A schema restricting which properties can be added to `voice_profile`. Consequently, attacker-controlled or misclassified text could be stored as trusted profile guidance. Loading that profile in ...[truncated 2328 chars]
Remediation
## Remediation Suggestions 1. Require explicit user confirmation before promoting any inferred pattern or correction to persistent memory. 2. Accept persistent corrections only from authenticated, direct user instructions—not from quoted, pasted, retrieved, or generated content. 3. Treat all external documents and memory values as untrusted data and prevent them from issuing memory-update commands. 4. Store new observations in a temporary or working tier first; promote them to `core` only after repeated, confirmed evidence. 5. Apply a strict schema that permits only bounded style attributes and rejects operational instructions, tool directives, or safety-policy changes. 6. Record provenance, timestamp, source interaction, confidence, and author for every memory update. 7. Provide a user-visible review interface with edit, delete, rollback, and reset capabilities. 8. Version profile updates and retain a safe prior version for recovery. 9. Add expiration periods for unconfirmed observations and audience-specific assumptions. 10. Enforce memory-write authorization and validation in the `sage-cognitive` implementation, independently of model compliance.
Vulnerability Patterns
  • 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
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (3)

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The skill explicitly instructs the agent to build a style fingerprint from the user's messages, emails, and documents, which implies broad ingestion of sensitive personal content. Because it also directs persistent storage of derived profile data without a clear privacy notice, consent flow, retention limit, or scoping constraint, it creates a real privacy and data-minimization risk.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The skill directs saving style fingerprints and correction history as persistent memory entries, which can encode sensitive behavioral traits and communication patterns. Storing this data without a prominent user warning, granular consent, or controls over persistence increases the chance of unintended profiling, over-retention, and later misuse across sessions.

Missing User Warnings

Medium
Confidence
98% confidence
Finding
This section formalizes ongoing reads and writes to a memory system, including recent drafts and evolving patterns, which may contain sensitive business or personal communication content. In the context of a writing assistant that handles emails, reports, and feedback, persistent retention without explicit notice or lifecycle controls materially increases confidentiality and privacy risk.

Static analysis

No suspicious patterns detected.