T01 · Skill Instruction Hijacking
- Location
scripts/evolution_mechanic.py:1218- Finding
Persistent Skill poisoning through untrusted evolution inputs
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a privacy-masking suite, but it stores sensitive behavior data and can automatically generate and publish persistent user skills from model output.
Install only in a controlled environment after disabling or gating automatic publishing, restricting MiniCPM to a trusted local endpoint, removing raw previews/correction values from logs, adding retention/deletion and encryption controls, and fixing path validation before using real user data.
scripts/evolution_mechanic.py:1218Persistent Skill poisoning through untrusted evolution inputs
scripts/evolution_mechanic.py:1414Path traversal permits out-of-root Skill writes and recursive deletion
scripts/behavior_monitor.py:197Sensitive behavior and correction data is retained in plaintext without enforced expiration
scripts/evolution_mechanic.py:179Sensitive correction records can be transmitted to an arbitrary plaintext HTTP endpoint
scripts/smart_masker.py:72Smart Masker prints OCR-extracted sensitive text before masking
scripts/smart_masker.py:50Documented privacy-masking API is absent from the implementation
SKILL.md:75Runtime dependencies are installed without version or integrity pinning
This variant identifies materially risky declared behavior: persistent logging of user behavior, remote API use, publishing/updating skills, and automatic rule evolution are powerful capabilities that exceed a simple privacy-masking tool. In this context, the danger is not merely mismatch but under-disclosed capability expansion that could expose sensitive activity data or permit unauthorized modification of agent behavior.
This variant identifies materially risky declared behavior: persistent logging of user behavior, remote API use, publishing/updating skills, and automatic rule evolution are powerful capabilities that exceed a simple privacy-masking tool. In this context, the danger is not merely mismatch but under-disclosed capability expansion that could expose sensitive activity data or permit unauthorized modification of agent behavior.
This variant identifies materially risky declared behavior: persistent logging of user behavior, remote API use, publishing/updating skills, and automatic rule evolution are powerful capabilities that exceed a simple privacy-masking tool. In this context, the danger is not merely mismatch but under-disclosed capability expansion that could expose sensitive activity data or permit unauthorized modification of agent behavior.
This variant identifies materially risky declared behavior: persistent logging of user behavior, remote API use, publishing/updating skills, and automatic rule evolution are powerful capabilities that exceed a simple privacy-masking tool. In this context, the danger is not merely mismatch but under-disclosed capability expansion that could expose sensitive activity data or permit unauthorized modification of agent behavior.
This variant identifies materially risky declared behavior: persistent logging of user behavior, remote API use, publishing/updating skills, and automatic rule evolution are powerful capabilities that exceed a simple privacy-masking tool. In this context, the danger is not merely mismatch but under-disclosed capability expansion that could expose sensitive activity data or permit unauthorized modification of agent behavior.
This variant identifies materially risky declared behavior: persistent logging of user behavior, remote API use, publishing/updating skills, and automatic rule evolution are powerful capabilities that exceed a simple privacy-masking tool. In this context, the danger is not merely mismatch but under-disclosed capability expansion that could expose sensitive activity data or permit unauthorized modification of agent behavior.
The code packages user-derived session traces and correction data into prompts sent to MiniCPM for analysis, which can expose behavioral history and potentially sensitive fields to an LLM service. In a privacy-protection product, exporting exactly the data being protected is a strong contradiction and can lead to privacy leakage, secondary use, or retention outside the expected trust boundary.
The skill metadata declares no explicit tool scope or permissions even though the documentation describes capabilities that imply filesystem access, network access, and rule publication. In an agent environment, missing scope declarations weaken review and sandboxing because operators cannot reliably constrain what the skill is allowed to do before installation or execution.
The skill explicitly presents behavior monitoring and shows logging of user ID, app context, scenario tags, fields, and PII type, but it does not provide an upfront warning that sensitive user actions and context are recorded. In a privacy-branded skill, this omission is especially dangerous because users may trust it to reduce exposure while it simultaneously creates new sensitive telemetry.
The self-evolution section describes automatic optimization, sandbox testing, and publish/mount behavior without a clear warning that the skill may modify or deploy updated rules autonomously. In an agent system, silent self-modification or auto-publication can alter enforcement behavior, introduce regressions, or expand privileges without adequate human review.
The file title and all instructional content are written as a required Chinese SOP template, and there is no indication that users may choose another language or locale. This creates a natural-language policy concern because the skill appears to force a specific language without explicit user opt-in or a documented locale-specific justification.
The architecture explicitly describes capturing user correction logs and forwarding processed screenshots plus metadata to a cloud agent, but the document does not mention explicit user notice, consent, retention limits, or privacy controls. In a privacy-focused product, silent behavior logging and cloud transmission can create compliance, trust, and data-governance risks even if the screenshots are intended to be masked first.
This markdown file is written as a prompt-template document in Chinese, and multiple embedded templates instruct the model to produce outputs in Chinese phrasing and field descriptions. Because the file does not indicate that Chinese is optional, user-selected, or required for a justified region-specific context, it creates a language/locale policy concern under the natural-language policy rule.
This markdown file describes collecting and storing user personalized privacy rules, historical behavior patterns, and UI-context matching data, which can affect user privacy and data handling. The document does not include any warning or disclosure to users about retention, monitoring, or privacy implications of these behaviors.
The markdown explicitly proposes collecting detailed user behavior and correction logs, including value_preview and sensitive classifications such as medical records, but does not describe consent, minimization, encryption, retention enforcement, or user-facing disclosure. In a privacy-protection skill, silently persisting rich correction logs materially increases exposure of sensitive data and creates a high-value local or server-side surveillance dataset if accessed by attackers or mishandled internally.
The design is internally inconsistent: early sections frame generation as structured privacy-rule extraction, while later sections describe evolving SOPs and publishing them as user skills. That ambiguity is dangerous because implementers may permit a broader class of model-generated outputs than intended, allowing the evolution system to cross from passive policy generation into active agent behavior modification without equivalent safeguards.
The document describes a self-evolution pipeline that does not stop at deriving privacy rules, but culminates in publishing new artifacts into user_skills/. That expands the trust boundary from data-driven rule tuning into behavior-changing skill generation, creating a pathway for unreviewed logs or model outputs to influence executable agent capabilities and potentially introduce unsafe or prompt-injected behavior.
The Behavior Monitor API explicitly documents persistent logging of user-linked identifiers, app context, relationship tags, fields, and PII types into JSONL/session trace artifacts, but provides no retention limits, consent expectations, minimization guidance, or access controls. In a privacy-protection skill, this creates a real privacy/security risk because operators may deploy broad surveillance-style logging that centralizes sensitive behavioral and personal data, increasing exposure in the event of misuse or compromise.
The log_event docstring says the function writes old-format logs to both behavior_log.jsonl and correction_log.jsonl for compatibility. In actual code, the only old-format write path is conditional writing to correction_log.jsonl, and there is no behavior_log.jsonl write implementation in this file.
The code persists user_id together with app context, field names, value previews, correction values, and PII type metadata to disk under predictable per-user paths, without any access-control, minimization, encryption, or consent enforcement in this module. In a privacy-protection skill, local persistence of sensitive behavioral and PII-adjacent data is particularly risky because compromise of the host, backups, or other local processes could expose user activity and identifiers.
Structured session traces are appended to disk with detailed action histories, fields, relationship tags, agent intent, and possible correction data, creating rich behavioral profiles tied to a user. In the context of an endpoint privacy-protection suite, storing this telemetry locally without built-in privacy controls undermines the product's trust boundary and increases the blast radius of any local file disclosure.
The demo script records detailed user activity metadata to disk, including user ID, scenario tags, app context, relationship tags, and previews of sensitive content, but this file provides no notice, consent flow, retention control, or minimization safeguards. In a privacy-protection skill, silently persisting behavior traces can itself create a new privacy and compliance risk if logs are accessed by unauthorized parties or retained longer than necessary.
Optional imports allow security-relevant components such as FinalSandbox, SemanticEvaluator, ChecklistEvaluator, and SkillDB to become None, but the code does not enforce a fail-closed initialization path for missing safeguards. In practice this creates an unsafe-default design where a mispackaged or degraded environment may disable validation or break trust assumptions rather than halting securely.
except ImportError:
ChromaManager = None
ChecklistEvaluator = None
FinalSandbox = None
SemanticEvaluator = None
SemanticTestResult = None
SkillDB = None
The HTTP LLM call sends prompt material derived from traces and corrections without any user-facing notice, consent check, or code-level policy enforcement around sensitive content. Because the skill is explicitly marketed for endpoint privacy protection, hidden transmission of behavioral data is especially dangerous and undermines user expectations and compliance posture.
The module autonomously generates, validates, and publishes new skills/SOPs into the user_skills tree, which materially expands the system's authority beyond passive privacy masking/monitoring. In a privacy-focused skill, self-modifying and self-publishing behavior increases the risk of policy drift, unsafe automation, and deployment of unreviewed behaviors under the guise of privacy protection.