Back to skill

Security audit

strategic-analyst-skill

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent strategic-research assistant, but it needs Review because it automatically uses broad web/browser research, stores raw research logs, relies on external runtime components, and generates unsafe HTML from untrusted content.

Install only if you are comfortable sending research topics to web/search providers and keeping a local raw-source log. Avoid using it for confidential strategy, acquisition, investment, or customer data unless searches and logging are explicitly controlled. Do not open or share generated HTML reports from untrusted inputs until the converter escapes HTML and validates links, and prefer pinned, reviewed dependency installs over runtime npx execution.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (2)

T09 · Insecure Skill Coding Practices

Warning
Location
tools/report_generator.py:69
Finding

Unescaped report content permits active HTML and script injection

Content
View full analysis
str: """解析Markdown表格为HTML表格""" table_pattern = r'\|([^\n]+)\|\n\|[-:\s|]+\|\n((?:\|[^\n]+\|\n?)+)' def convert_table(match): header_line = match.group(1).strip() body_lines = match.group(2).strip() headers = [h.strip() for h in header_line.split('|') if h.strip()] rows = [] for line in body_lines.split('\n'): if line.strip(): cells = [c.strip() for c in line.split('|') if c.strip()] if cells: rows.append(cells) html = ['
'] html.append('
') html.append('PNG') html.append('SVG') html.append('
') html.append('') html.append('') for header in headers: html.append(f'') html.append('') html.append('') for row in rows: html.append('') for i, cell in enumerate(row): if i < len(headers): html.append(f'') html.append('') html.append('') html.append('
{self._format_cell_content(header)}
{self._format_cell_content(cell)}
') return '\n'.join(html) return re.sub(table_pattern, convert_table, content) ``` ```python def _parse_markdown_cont ...[truncated 7336 chars]
Remediation
View remediation
` elements - `` payloads - `` elements - Attribute quote-breaking payloads - `javascript:` and `data:` links - Malicious HTML in titles, headings, tables, and ordinary paragraphs 10. Treat all text obtained from web research and user-provided Markdown as untrusted, even when the source is considered credible. ]]>

T08 · Insecure Dependencies

Warning
Location
skill.yaml:6
Finding

Runtime execution of external dependencies lacks complete integrity controls

Content
View full analysis
Remediation
View remediation
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 (39)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger phrases are broad enough that the skill may activate for generic requests such as market research or learning about a sector, even when the user did not intend to invoke this specialized workflow. In an agent ecosystem, over-broad activation can cause unintended tool use, unnecessary web research, or the application of rigid instructions in contexts where a simpler or different skill would be safer and more appropriate.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger phrases are broad enough to activate on ordinary strategic or industry-related conversation, which can cause the skill to run unexpectedly. Because the skill performs external searches and creates a persistent intermediate log, accidental activation can lead to unintended data transmission and retention beyond what the user reasonably expects.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The workflow explicitly performs Tavily/WebSearch-based external research, yet the skill description does not warn users that their queries will be sent to third-party services. This is dangerous because user prompts may include confidential strategic interests, targets, or market plans that should not be disclosed externally without informed consent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill mandates saving data_collection.md with search queries, source URLs, tools used, and raw snippets, but the description does not warn the user that this artifact will be created and may contain sensitive research context. This creates a transparency and privacy risk because users may unknowingly cause internal interests, confidential topics, or third-party content excerpts to be stored.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill hard-codes a specific elite-consultant persona and language style without first obtaining user consent. This can override user preferences, reduce transparency, and create undue authority bias, making users more likely to trust outputs as expert advice even when the model lacks verified qualifications or context-specific appropriateness.

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 presents all instructions in Chinese and does not indicate that the skill is region-specific or that users may opt into another language. Under the policy rule for language or locale, forcing a single language without user choice can be a natural-language policy violation.

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 file presents all instructions, checklist items, and user prompts exclusively in Chinese. Under the policy rule for natural-language violations, forcing a specific language without user opt-in or justification is a locale/language policy issue.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

This markdown file contains natural-language instructions that set the skill's output style and language context as Chinese from the title onward, and later requires maintaining a specific professional consultant persona. Under the policy, forcing a specific language or locale without offering user choice can be a violation unless clearly justified as region-specific.

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 uses only Chinese for headings and checklist items, which effectively forces a specific language on users. Under the policy, a language constraint should either be optional for the user or explicitly justified as locale-specific.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The document title and scope define the reporting style guide in Chinese and apply it to all strategic-analyst generated HTML reports, which implies a fixed language/locale requirement. The file does not offer a user opt-in or language choice, nor does it explain a region-specific justification for forcing this locale.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The title and the entire standard are written as a normative guide in Chinese, and multiple formatting rules prescribe Chinese-specific symbols and labels such as '必须用★星级表示' and Chinese field values. For a general visualization standard, this effectively forces a specific language/locale without opt-in or a documented region-specific justification, which matches the language/locale policy violation criterion.

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 presents all instructions, headings, and templates exclusively in Chinese, which can amount to a language/locale policy violation when no user opt-in or alternative language option is provided. The file does not indicate that the skill is region-specific or intentionally limited to Chinese-speaking users.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

This markdown file presents all instructions and templates exclusively in Chinese, and there is no natural-language indication that the user can choose another language or that the skill is intentionally limited to a Chinese-speaking context. Under the policy, forcing a specific language without user opt-in is a reportable locale/language violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The entire skill file is written in Chinese and presents the framework exclusively in that language, with no indication that users may request another language or that the skill is intended only for a Chinese-language or China-specific audience. Under the policy, a language-specific constraint without user opt-in or clear justification is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill is defined with a broad strategic-analysis purpose and enables automatic invocation of multiple dependent skills and tools without a narrowly scoped trigger boundary. This increases the chance of unnecessary browsing, searching, and content retrieval beyond the user's minimal need, which can expand attack surface and cause over-collection of external or sensitive data.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The description and configuration repeatedly mandate real-time web search and even require looping until at least two independent sources are found, removing user choice and pressuring the agent to access external systems regardless of necessity. This can lead to privacy leakage, policy bypass attempts, excessive outbound requests, and unsafe retrieval from untrusted sources, especially when paired with automatic browser/tool selection.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

This markdown template is entirely written in Chinese and presents the report structure, labels, and disclaimer text only in that language. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale restriction is explicitly justified, which is not stated here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The entire template is written in Chinese and presents fixed Chinese headings and labels, which implies the skill will generate outputs in Chinese by default. Under the stated policy, forcing a specific language without user 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
93% confidence
Finding

The template title and all section headings are written exclusively in Chinese, which signals that the skill output is expected in a fixed language. The policy requires flagging language or locale constraints when the skill does not explicitly offer the user a language choice or document a justified region-specific limitation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The template title and instruction text require a standardized report structure in Chinese and state that all industry analysis reports must follow this format. This imposes a specific language/locale by default, with no indication of user opt-in or a documented regional justification, which matches the language-policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The entire template is written as a fixed Chinese-language report structure, with headings, instructions, and output fields all requiring Chinese output. There is no indication that the user can choose another language or that the locale restriction is explicitly justified as a region-specific requirement, which creates a language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This code file contains natural-language instructions and descriptions entirely in Chinese, including the module docstring and later user-facing output, but provides no opt-in, fallback, or indication that the tool is intentionally region-specific. Under the language/locale policy, forcing a specific language without user choice is a policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The CLI help text shown to users is only in Chinese and does not provide an alternative language or any mechanism to choose locale. This can constitute a language-policy violation because the skill forces one language for interaction without opt-in.

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 and all required section/framework terminology are defined exclusively in Chinese, and the validation logic checks for Chinese-only headings and phrases. This imposes a specific language/locale on generated reports with no opt-in or alternative language path, which is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The Markdown-to-HTML conversion path inserts untrusted content directly into HTML without escaping, and also converts Markdown links into raw href attributes. Because the generated report includes inline JavaScript and is intended to be opened in a browser, attacker-controlled Markdown can inject arbitrary HTML or script-bearing payloads, leading to stored XSS in the generated local report.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.