Back to skill

Security audit

公众号爆款文章查询

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent WeChat article search tool, but it exposes a credential-like API key and includes unsafe optional HTML and recurring subscription behavior that should be reviewed before installation.

Review this skill before installing. Do not rely on the exposed API key; it should be removed and rotated by the publisher. Use your own scoped REDFOX_API_KEY only if you accept sending search terms to RedFox. Avoid opening generated HTML reports unless the HTML escaping issue is fixed, and create calendar subscriptions only after reviewing the exact recurrence and stored query details.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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 (3)

T01 · Skill Instruction Hijacking

Warning
Location
SKILL.md:154
Finding

Mandatory workflow and subscription instructions override agent discretion

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
references/gzh_trend_data_format.md:15
Finding

Plaintext API credential embedded in reference documentation

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/fetch_gzh_trends.py:207
Finding

Unescaped user and API data enables active-content injection in generated HTML reports

Content
View full analysis
👤 {author} 📅 {pub_time}
{summary}...
''' return card ``` The keyword is also inserted into HTML without escaping: ```python def get_empty_html(keyword, hot_topics): """Generate empty-result HTML""" html = f'''
🔍

Sorry, no content directly related to "{keyword}" was found

''' return html ``` The generated document is then written to disk: ```python html = generate_html( data["keyword"], sorted_articles, sorted_latest, data["hotTopics"], result_status ) safe_keyword = args.keyword.replace("/", "_").replace("\\", "_") filename = f"{safe_keyword}_趋势数据.html" with open(filename, "w", encoding="utf-8") as f: f.write(html) print(f"HTML file generated: {filename}") ``` ### Te ...[truncated 2451 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
Findings (17)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 422)May include surrounding context.

md
| SKILL 定义 | `SKILL.md` | 定义 Skill 元数据、工作流程、展示策略、订阅逻辑 |

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The request-header example publishes a live credential without any warning, redaction, or safe-handling guidance, which materially increases the chance that users or downstream systems will copy and reuse the secret. Because this is an operational API endpoint for the skill, the exposed header value can be exploited immediately to impersonate the skill against the backend service.

Content

No source excerpt is available for this finding.

Ssd 3

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

Embedding a plaintext API key in human-readable documentation is a direct secret disclosure. Even if the file is only intended as format documentation, attackers, users, or indexing systems can harvest the credential and use it for unauthorized API calls, which is more dangerous here because the key grants access to the exact backend service powering the skill.

Content

No source excerpt is available for this finding.

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

Scanner excerpt · README.en.md (reported line 60)May include surrounding context.

md
💡 **Found 12 related articles; showing first 10. View all?**

| Title                                                                                      | Author           | Reads | Published  | Relevance | Heat | Timeliness | **Total** |
| ------------------------------------------------------------------------------------------ | ---------------- | ----- | ---------- | --------- | ---- | ---------- | --------- |
| [Must-read for workplace newcomers: 5 tips to fit in fast](https://mp.weixin.qq.com/s/xxx) | Workplace Growth | 100K  | 2026-05-15 | 9.8       | 3.0  | 2.0        | **14.8**  |
| [Workplace communication: 3 sentences you must never say!](https://mp.weixin.qq.com/s/xxx) | Workplace Tips   | 85K   | 2026-05-14 | 9.5       | 2.8  | 2.0        | **14.3**  |

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

Scanner excerpt · README.en.md (reported line 65)May include surrounding context.

md
| [Must-read for workplace newcomers: 5 tips to fit in fast](https://mp.weixin.qq.com/s/xxx) | Workplace Growth | 100K  | 2026-05-15 | 9.8       | 3.0  | 2.0        | **14.8**  |
| [Workplace communication: 3 sentences you must never say!](https://mp.weixin.qq.com/s/xxx) | Workplace Tips   | 85K   | 2026-05-14 | 9.5       | 2.8  | 2.0        | **14.3**  |
| [Workers must save: 7 secrets to efficient meetings](https://mp.weixin.qq.com/s/xxx)       | Workplace Lab    | 62K   | 2026-05-13 | 9.2       | 2.5  | 1.8        | **13.5**  |
| ...                                                                                        | ...              | ...   | ...        | ...       | ...  | ...        | ...       |

**🔤 Query expansion**: work, office workers, workplace outfits, workplace tips, growth, niche careers, managing up, workplace anxiety, promotion, financial freedom

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The invocation examples use very broad natural-language phrases such as general content-search requests and subscription commands without defining clear trigger boundaries, exclusions, or confirmation requirements. In an agent environment, this can cause accidental or overly eager tool invocation, including repeated searches or creation of push subscriptions based on ambiguous user intent, which may lead to privacy-impacting actions or unwanted external API usage.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding

The skill documents capabilities that access environment variables, perform network requests, and write files, but it does not declare any explicit tool scope or allowed-tools boundary. This weakens least-privilege controls and makes it harder for a host agent to constrain execution, increasing the chance of unintended file creation, outbound requests, or secret handling beyond what users expect.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The activation description is broad enough to match generic requests like finding articles, popular content, or inspiration, which increases the likelihood of over-triggering the skill in contexts where the user did not intend external API calls or file generation. Over-broad routing raises the attack surface because the skill can be invoked more often than necessary and may perform side effects under ambiguous user intent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The feature list advertises scheduled subscription push capability without prominently warning that it creates persistent future tasks. Users and host agents may interpret this as a normal search feature rather than a stateful action, reducing informed consent and increasing the risk of unexpected recurring notifications or task creation.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill is presented as an article search and inspiration tool, but it mandates a workflow that asks for and creates persistent calendar subscriptions after any successful search. This expands the skill from one-time retrieval into durable side effects, which can pressure an agent into creating ongoing tasks unrelated to the user's original request and without clear up-front consent.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The calendar_create capability is not necessary to fulfill the core search use case described by the skill metadata. Introducing calendar task creation creates cross-domain side effects and can lead to persistence, notification spam, or unauthorized workflow automation if the agent follows the skill literally.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
99% confidence
Finding

The documentation includes what appears to be a live X-API-Key in plaintext. Exposing a usable credential in a skill reference file can enable unauthorized third-party access to the upstream service, abuse of the account, quota exhaustion, and potential billing or data-access impact; in this search-skill context, the key is directly relevant to the skill’s operation, making exposure especially actionable.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The script sends user-provided keyword and date inputs to a third-party external API service without any visible consent prompt or privacy notice at the point of use. If users enter sensitive research terms or proprietary topics, those queries may be disclosed off-system to the remote provider, creating privacy and data-handling risk.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

All user-facing instructions, examples, and outputs are presented only in Chinese, which can amount to forcing a specific language without opt-in. The file does not state that the skill is region-specific or offer an alternative language option.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

The manifest describes a search and trend-insight capability for public WeChat articles, but does not mention credential handling. Accessing process environment variables to retrieve a secret is an additional capability that is not directly stated in the skill's purpose, even though it is used to authenticate the upstream service.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

The HTML template hard-codes lang="zh-CN", which imposes a specific language/locale choice in generated output. Under the policy, locale constraints should either be optional for the user or clearly documented and justified as region-specific.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The manifest focuses on searching public-account articles, surfacing hot content, and providing inspiration, but this script also supports an HTML output mode that persists results to disk. Local file creation is beyond the described search/display behavior and is not implied by the manifest text itself.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.exposed_secret_literal

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
references/gzh_trend_data_format.md:20