Back to skill

Security audit

Expressive Soul

Security checks for vulnerabilities and agentic risk

Overview

This skill is coherent as a Chinese expression and reflection tool, but it automatically stores full conversation payloads in plaintext for persistent review without clear opt-in, redaction, retention, or deletion controls.

Install only if you are comfortable with automatic Chinese-style response shaping and local retention of conversation content. Avoid using it in chats that may include credentials, personal data, private code, business secrets, or regulated information unless logging is disabled or the skill is changed to store only explicitly approved, redacted summaries with clear deletion and retention controls.

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

T09 · Insecure Skill Coding Practices

Warning
Location
handler.sh:11
Finding

Unfiltered Conversation Payloads Stored in Plaintext

Content
View full analysis
> "$LOG_FILE" 2>/dev/null echo "logged" >&2 ``` The destination is initialized earlier as a daily plaintext JSONL file: ```bash _SELF_DIR="$(cd "$(dirname "$0")" && pwd)" MEMORY_DIR="$_SELF_DIR/memory/daily" mkdir -p "$MEMORY_DIR" TODAY=$(date -u +%Y-%m-%d) LOG_FILE="$MEMORY_DIR/${TODAY}.jsonl" ``` ### Technical Analysis The post-response handler reads the complete standard-input payload and appends it to a persistent JSONL file. According to the documented data format, the payload can contain both the conversation message and generated result. No data-minimization, secret-redaction, consent, retention, encryption, or deletion controls are implemented. The directory and file are also created without explicit restrictive permissions, so their effective permissions depend on the runtime environment's `umask`. Consequently, sensitive content supplied during a conversation—including API tokens, passwords, personal information, proprietary source code, internal prompts, or confidential business data—can be retained in plaintext. The timestamp added through `jq` does not sanitize or reduce the original payload. This issue does not provide remote code execution, privilege escalation, or demonstrated network exfiltration. Exploitation requires the ability to include sensitive material in a processed conversation and subsequently obtain local read access to the generated memory files. ### Attack Path 1. A user or integrated system submits a conversation containing sensitive information. 2. The AI generates a response, causing the configure ...[truncated 1058 chars]
Remediation
View remediation
/dev/null`. - Validate the input schema and fail closed when the payload is malformed. - Report whether a record was actually written instead of always printing `logged`. ]]>
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (12)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The metadata describes the skill as enforcing a Mao-style Chinese expression framework, which can override user preference for language, tone, or neutrality. While not a classic security flaw, it is a genuine policy and user-trust issue because the skill may steer outputs in an unexpected ideological or stylistic direction without opt-in.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill explicitly schedules a daily review at 23:00 and states that all conversation content will be reviewed, distilled, and written into persistent memory files. This creates a real privacy and data-retention risk because sensitive user content may be stored without clear notice, consent, scope limits, retention controls, or exclusion rules.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill instructs automatic review of all conversation content and persistent storage of extracted insights and daily logs, which is a direct data leakage and retention risk. In context, this is more dangerous because the skill frames the behavior as routine background operation, increasing the chance that sensitive content is silently persisted beyond the original interaction.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The skill says every reply will automatically follow the SOUL framework, with no mechanism for user choice or disabling the behavior. This reduces user control and can cause unwanted transformation of responses, especially where concise, neutral, or differently styled answers are expected.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The comments describe a design where logging happens automatically after every AI response for later review, with no indication of user opt-in. Even though expressed in comments, the code behavior aligns with that policy, making this a genuine privacy vulnerability because it normalizes covert retention of potentially sensitive conversational data.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The stated purpose is to record every conversation after each reply for a 23:00 review, which increases the sensitivity of the collected data and suggests routine surveillance rather than narrowly scoped operational logging. In this skill context, automatic capture of all dialogue is more dangerous because agent interactions often include credentials, personal data, proprietary prompts, or other secrets.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The script appends the full JSON conversation payload from stdin to a persistent daily log file on every trigger, and nothing in the implementation provides notice, consent, minimization, or retention controls. This creates a real privacy and data-handling risk because user prompts and model outputs may contain sensitive information that is silently stored on disk for later access or disclosure.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The module docstring describes the skill entirely in Chinese and presents the behavior as the default scheduled operation, with no indication that users can choose another language or locale. This is a natural-language policy issue because the skill appears to enforce a specific language context without documenting opt-in or offering alternatives.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The module docstring describes analysis activities only: reviewing today's dialogue, tracing causality, and extracting insights. However, the implementation also performs persistent writes to both the daily log and the long-term insights store in anchor_to_memory, which is a meaningful side effect not reflected in the stated intent text.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

This Python file contains the module description, CLI help text, and runtime status messages entirely in Chinese. That creates a language/locale policy concern because users are forced into a specific language with no opt-in, selection mechanism, or documented region-specific justification.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The module docstring is entirely in Chinese and presents the skill's purpose only in that language. This creates a language/locale constraint without any opt-in, alternative locale, or documented region-specific justification, which matches the policy-violation category for forced language use.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
77% confidence
Finding

The tags "mao-style" and "chinese" indicate the skill may enforce a specific linguistic or stylistic mode. In a manifest file, this can imply a language or locale constraint without any visible opt-in or justification for users.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.