Back to skill

Security audit

Support Macro Crafter

Security checks for vulnerabilities and agentic risk

Overview

This skill is a local Chinese customer-support template generator with some overbroad but disclosed file input/output behavior and no evidence of network exfiltration, persistence, or deception.

Install only if you are comfortable with a local Python helper that reads the input file you choose and can write or overwrite the output file you choose. Use dry-run or stdout for review, avoid passing secrets or broad private files as input, and write outputs to a dedicated workspace path.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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)

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
scripts/run.py:223
Finding

Unrestricted Local File Reading and Content Disclosure

Content
View full analysis
str: title = spec["title"] summary = spec["summary"] sections = spec["sections"] bullets = [line.strip("- ").strip() for line in input_text.splitlines() if line.strip()] bullets = bullets[:18] out = [f"# {title} 结果", "", f"> 模式:{spec['mode']}", f"> 摘要:{summary}", ""] for idx, section in enumerate(sections): out.append(f"## {section}") if bullets: selected = bullets[idx::max(1, len(sections))][:3] for item in selected: out.append(f"- {item}") else: out.append("- 输入材料不足,请补充更具体的原始信息。") out.append("") out.append("## 待确认项") out.append(f"- 请补充:{spec.get('inputHint', '更完整的输入材料')}") out.append("") out.append("## 下一步") out.append("- 先审阅上述结构,再决定是否进入执行、发送、发布或系统变更。") return "\n".join(out).strip() + "\n" ``` ```python def build_report(spec: dict, source: Path, limit: int) -> str: mode = spec["mode"] if mode == "structured_brief": text = read_text(source) if source.exists() and source.is_file() else str(source) return make_structured_report(spec, text) ``` ```python parser.add_argument("--input", required=True, help="Input file, directory, or inline string.") ... source = Path(args.input).expanduser() if source.exists(): report = build_report(spec, source, args.limit) else: if spec["mode"] in {"directory_audit","csv_audit","pattern_audit","skill_audit"}: return fail(f"Input path does not exist: {source}") report = build_report(spec, Path(args.input), args.limit) ``` ### Technical Analysis The script accepts an arbitrary value through `--input`, expands the user directory marker, and checks whether ...[truncated 2180 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/run.py:271
Finding

Arbitrary Overwrite of Files Writable by the Process

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (15)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

声明描述的是客服话术模板批量生成工具,但代码并未体现任何面向客服回复模板的专用逻辑,如同理句/行动句/边界句/升级提示的生成、归一化或批量话术产出。相反,代码核心功能是加载 spec.json 后按 mode 分支,生成结构化摘要、目录审计、CSV 审计、模式安全扫描或 Skill 规范检查报告。这些能力明显偏向通用内容审阅与安全/规范审计,且可扫描本地目录、读取多类文本文件、匹配高风险模式和检查项目结构,属于与已声明用途 materially different 的主要行为。因此描述与实际代码存在明显不一致。

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

The regex-based scanning logic searches arbitrary files for secrets, private URLs, and shell-command indicators, which is unrelated to customer-service macro creation and creates a covert inspection capability. In this skill context, that capability is especially risky because users may trust the skill with access to local workspace content that has nothing to do with support replies.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The script’s primary behavior is a generic multi-mode auditing/reporting tool for directories, CSVs, pattern scans, and skill-package checks, which materially exceeds the declared purpose of generating customer-support reply templates. This mismatch expands the skill’s data access and analysis surface, enabling unintended inspection of arbitrary local files and repositories under the guise of a benign support workflow.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
78% confidence
Finding

文件标题及全文都将技能描述为中文客服模板用途,但未明确说明这是面向特定中文场景的受限技能,也未提供语言/locale 选择机制。按照语言/locale 政策,若技能默认强制单一语言而无用户选择或明确区域性说明,可能构成自然语言策略问题。

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger examples are broad, natural-language phrases that could overlap with ordinary user requests, increasing the chance that the skill activates when the user did not explicitly intend to invoke it. In a customer-support macro skill, accidental invocation is more likely to cause workflow confusion or inappropriate templated output than direct security compromise, but it can still reduce reliability and lead to misuse in downstream support processes.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding

The skill advertises executable capabilities via python3 and references reading inputs and writing outputs, but it does not declare any explicit tool scope such as allowed tools or permissions. This creates an authorization ambiguity where a host agent may permit broader shell, file read, or file write access than users expect, increasing the chance of unintended local file access or command execution.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The skill title, role description, and routing examples are written in Chinese, which signals a fixed language/locale for interaction. The file does not state that other languages are supported or that the user may choose their preferred language, so this can violate a language-choice policy.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Multiple user-facing report strings are emitted in Chinese, and similar hard-coded Chinese text appears throughout the script. This forces a specific language on users without opt-in or any indication that the skill is intentionally region-specific, which matches the locale policy violation criteria.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill_audit functionality inspects package structure and parses SKILL.md metadata for arbitrary skill directories, which is outside the advertised support-macro use case. While less severe than secret-scanning, it still provides undeclared repository auditing behavior and broadens the skill into a general inspection tool that could be misused for reconnaissance.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The CLI presents itself as a 'local support script' while dispatching into several generic audit and scanning modes loaded from external spec configuration. This misleading description increases the chance that operators grant the tool access to local paths expecting macro generation, when it can instead enumerate files and analyze repository contents.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

The file is entirely written in Chinese and presents the skill input format and requirements only in that language, without indicating that users may choose another language or that the skill is specifically limited to a Chinese-speaking context. This can be a natural-language policy concern if the organization requires language choice or explicit locale justification.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

This markdown file presents the skill output exclusively in Chinese, and there is no natural-language indication that users may choose another language or locale. Under the language/locale policy rule, forcing a specific language without user opt-in can be a policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The title, category label, summary, examples, and risk text are all presented only in Chinese, which implies a fixed language/locale for the skill experience. The file does not offer a language choice or explain why Chinese-only output is required, which can violate language/locale policy expectations.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

The template headings and instructions are entirely in Chinese, and the file presents a fixed output structure for the skill without offering any language selection or opt-in. Under the policy rule for natural-language violations, this can be a locale/language constraint imposed on users without explicit choice.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

This markdown file presents all instructions and test criteria exclusively in Chinese, which can impose a language requirement on users without opt-in. The policy allows locale constraints when they are explicitly justified or when users are given a choice, neither of which is stated here.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.