Back to skill

Security audit

人生之路

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent life-reflection/report generator, but it should go to Review because it can collect personal self-assessment details and write them into an HTML report without clear consent or sanitization safeguards.

Install only if you are comfortable sharing personal life-stage reflections with the agent and saving them in a generated local HTML report. Avoid opening or sharing reports that include untrusted pasted markup unless the generator escapes or sanitizes dynamic text first.

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
SKILL.md:92
Finding

Unsanitized User-Influenced Content Is Inserted into Generated HTML Reports

Content
View full analysis
当前定位 Current Stage
{{STAGE_NAME}}
{{STAGE_DESCRIPTION}}
{{DIM1_LABEL}}
{{DIM1_SCORE}}/10
``` ```html
行动指南 Action Guide
  1. {{ACTION_TITLE}}
    {{ACTION_DESC}}
``` The generated fragments are then inserted directly into the report template: ```html {{ASSESSMENT_SECTION}} ``` ```html {{ACTION_SECTION}} ``` ### Technical Analysis The report-generation workflow places personalized, potentially user-influenced values such as `STAGE_DESCRIPTION`, `ACTION_TITLE`, and `ACTION_DESC` into HTML contexts. It also instructs the Agent to replace `ASSESSMENT_SECTION` and ...[truncated 2543 chars]
Remediation
View remediation
`, `"`, and `'` before placing user-influenced text into HTML. - Treat stage names, descriptions, dimension labels, and action content as plain text by default. 2. **Separate fixed markup from dynamic data** - Keep all HTML structure in a trusted static template. - Substitute only escaped scalar values rather than generating whole HTML sections from user content. - Do not permit user input to control element names, attributes, or raw fragments. 3. **Sanitize intentionally supported rich text** - If formatting is required, process it with a reputable allowlist-based HTML sanitizer. - Permit only necessary elements such as paragraphs, lists, and basic emphasis. - Remove script-capable elements, inline event handlers, `style` attributes where unnecessary, embedded documents, and dangerous URL schemes such as `javascript:`. 4. **Validate non-text placeholders** - Restrict stage class values to the exact allowlist `passed`, `current`, or an empty string. - Restrict badge and card classes to `current` or an empty string. - Parse scores and percentages as numbers and enforce the expected ranges before rendering. 5. **Apply browser defense in depth** - Add a restrictive Content Security Policy that disallows inline script and remote resources. - Move the template’s inline JavaScript into a fixed local script if scripts must remain enabled. - Avoid granting generated reports access to a privileged application origin. 6. **Add adversarial tests** - Test script elements, broken-tag payloads, SVG event handlers, image error handlers, encoded markup, dangerous links, and malformed numeric or class values. - Verify that every payload is displayed as inert text or removed by sanitization. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (10)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The trigger list contains broad, common-life phrases such as '人生意义', '人生迷茫', and '人生规划' that a user could naturally mention in many unrelated conversations. This can cause unintended invocation of the skill, leading to unsolicited guidance, privacy-sensitive contextual capture, or interference with other more appropriate skills.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill is described entirely as a Chinese-language assistant, and the embedded report/output content is specified in Chinese labels and examples, while also listing an English trigger (“life path”). There is no indication that users can opt into another language or locale, so the skill appears to impose a fixed language without explicit user choice.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger list contains very broad, everyday phrases such as '人生意义', '人生规划', and 'life path', which can cause the skill to activate in conversations where the user did not intend to invoke it. Unintended invocation can expose users to unsolicited collection of personal reflections or route them into report-generation flows that handle sensitive life-stage data.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill instructs collection of age and current troubles, then evaluates life-stage completion and may generate personalized outputs, but it provides no user-facing notice about privacy, retention, or how this sensitive personal content will be handled. In a self-reflection and assessment context, users may reveal intimate emotional or life-planning information without understanding that it may be processed and included in generated artifacts.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The HTML report flow explicitly says personalized assessment and action-guide content will be filled into a template and written to an output file, but the skill does not warn the user beforehand. This creates a concrete risk that sensitive self-assessment content becomes persistently stored or shareable without informed consent.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The default branch states the system should 'automatically judge' and proceed through multiple steps including interpretation, assessment, advice, and report generation for composite requests. This overly broad routing can cause the skill to collect more personal information and generate persistent outputs than the user explicitly requested, increasing privacy and consent risk.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

This HTML template explicitly sets the document language to zh-CN, and the visible title/body content throughout the report is written in Chinese. Because the file provides no indication of user language selection, opt-in, or a documented region-specific requirement, it appears to enforce a specific language/locale unconditionally.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This markdown file is natural-language content, and it appears to require Chinese comprehension throughout while providing no user opt-in, alternate language option, or explanation that the skill is intentionally region- or language-specific. That creates a language/locale policy concern under the rule for natural-language policy violations.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

The skill description and invocation examples are presented entirely in Chinese except for the title and one English trigger phrase, which suggests the skill may operate in Chinese by default. There is no natural-language statement offering the user a language or locale choice, which can violate language-choice policy if the skill constrains output language without opt-in.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

This markdown file presents all instructions and explanations exclusively in Chinese, and it does not indicate that the language is optional or that the content is intentionally limited to a Chinese-speaking audience. Under the policy rule for natural-language violations, forcing a specific language without user opt-in can be a locale-policy issue.

Content

No source excerpt is available for this finding.