Back to skill

Security audit

strong-mindset

Security checks for vulnerabilities and agentic risk

Overview

The skill is largely purpose-aligned Chinese coaching/reporting content, but its HTML report generator can render unescaped HTML or JavaScript from untrusted report metadata.

Use this skill only if you want its Chinese coaching style and subjective assessment framework. Do not feed the report generator JSON from untrusted sources or open generated reports from unreviewed specs until tier and date are escaped or validated; generated HTML should be reviewed before sharing.

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
references/generate_report.py:122
Finding

HTML and JavaScript Injection Through Unescaped Report Metadata

Content
View full analysis
' + date + '\n' ... ' 段位 · ' + tier + '\n' ``` By contrast, other textual fields such as `title`, `subtitle`, `verdict`, `persona`, and tags are passed through the `esc()` function before being rendered. ### Technical Analysis The report generator reads a caller-supplied JSON specification and constructs an HTML document through string concatenation. Because `tier` and `date` are not passed through `esc()`, an attacker who can control either field can terminate the intended text context and insert arbitrary HTML. For example, a malicious specification could contain: ```json { "score": 80, "tier": "", "date": "2026-09-16" } ``` The resulting report would include the attacker-controlled element directly inside the document. When the HTML report is opened in a browser, the `onerror` handler can execute JavaScript. This vulnerability is caused by inconsistent output encoding. Although the existing `esc()` function encodes `&`, `<`, and `>`, it is not applied to all untrusted textual fields. ### Attack Path 1. An attacker gains the ability to supply or influence a JSON report specification. 2. The attacker places an HTML or event-handler payload in the `tier` or `date` field. 3. A user or automated workflow invokes the documented generator: ```bash python references/gen ...[truncated 1188 chars]
Remediation
View remediation
``` 5. **Add regression tests** that place payloads in every input field and verify the resulting document contains encoded text rather than executable markup. Test at minimum `
Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (10)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
81% confidence
Finding

The skill instructs the agent to read from and potentially write artifacts via references/style-guide.md, references/articles/, and references/generate_report.py, but it does not declare any explicit tool scope or permission boundary. This creates an authorization ambiguity: a host agent may grant broader file capabilities than the skill actually needs, increasing the chance of unintended local file access or output file creation beyond the intended report workflow.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The description defines activation conditions in very broad natural-language terms such as confusion, rumination, being drained, or asking for advice, which overlap heavily with ordinary conversation. An overly broad trigger surface can cause accidental invocation, leading the skill to override other more appropriate skills or inject its behavioral framing into unrelated user requests.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The routing table contains overlapping triggers across advice, evaluation, assessment, writing, and editing workflows without clear disambiguation rules. In practice, the agent could misroute a request into the wrong workflow, causing unintended content generation, misclassification of user intent, or inappropriate collection/processing steps such as switching into assessment or report-generation modes when the user did not ask for them.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The keyword list is extremely expansive and includes abstract, common, and metaphorical phrases that may appear in many unrelated contexts. This materially increases accidental activation risk and makes prompt routing susceptible to false matches, especially in multilingual or general-discussion settings where those phrases could be mentioned descriptively rather than as a request to use the skill.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
85% confidence
Finding

该 markdown 文件整体以中文编译版/中文整理内容面向读者,但未说明这是用户主动选择的语言,也未提供多语言选项或地区适用性说明。按组织语言/locale 政策,若内容默认强制单一语言而无用户选择,属于自然语言层面的潜在政策问题。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The file is entirely written in Chinese and provides no indication that other languages are supported or that the user can choose their preferred language. Under the stated policy, forcing a specific language without opt-in is a natural-language policy violation unless the locale constraint is explicitly documented and justified.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The generated document explicitly sets lang="zh-CN", and the surrounding user-facing text throughout the file is fixed in Chinese. This imposes a specific language/locale on all users without opt-in, which matches the policy category for language or locale constraints.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This markdown guidance is written entirely in Chinese and repeatedly defines the skill's default handling mode and output style without offering any language or locale choice. Under the policy for natural-language violations, a skill that effectively mandates a specific language without user opt-in should be flagged unless the locale constraint is explicitly justified, which is not documented here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

SQP-3 applies to all file types and covers language or locale policy violations. This markdown file presents all instructions and guidance exclusively in Chinese, with no opt-in, alternative language, or stated reason that the content is intended only for a Chinese-speaking or region-specific audience.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

SQP-3 applies to all file types and covers natural-language policy violations such as forcing a specific language without user opt-in. This markdown file presents all user-facing content in Chinese and does not indicate that the skill or content is intentionally limited to a Chinese-speaking audience or that users can choose another language.

Content

No source excerpt is available for this finding.