Back to skill

Security audit

财税公众号小助手

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a finance content generator, but the package also includes under-scoped financial valuation and investment-recommendation workflows plus exposed credentials and under-disclosed network/file behavior.

Review this package carefully before installing. It is not just a straightforward article-writing helper: it also contains guidance for valuation bots that may collect company financial data and produce investment recommendations. Avoid using it with confidential client, tax, audit, or financial workbooks unless third-party search/API/document-conversion and storage behavior is reviewed, and rotate/remove the embedded Unsplash key before publishing or running the image feature.

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 (2)

T09 · Insecure Skill Coding Practices

Warning
Location
finance-image-generator.cjs:12
Finding

Hard-Coded Unsplash API Credential Exposed in Source Code

Content
View full analysis
{ https.get(url, (res) => { // ... }).on('error', reject); }); } ``` ### Technical Analysis The application distributes an Unsplash API access key directly in its source code. Anyone who can read the project files, obtain a packaged copy of the Skill, or access a source-code archive can extract and reuse this credential independently of the intended application. The key is also placed in the URL query string. Credential-bearing URLs can be retained in HTTP client diagnostics, proxy logs, monitoring systems, and other infrastructure that records complete request URLs. There is no environment-variable lookup, secret-manager integration, runtime credential injection, or mechanism that prevents unauthorized reuse of the exposed key. ### Attack Path 1. An attacker obtains or reads the Skill package. 2. The attacker opens `finance-image-generator.cjs`. 3. The attacker extracts the API key declared at line 12. 4. The attacker submits independent requests to the Unsplash API using the extracted value as the `client_id` parameter. 5. Requests are attributed to the credential owner and consume the associated API quota until the key is rotated, revoked, or rate-limited. ### Impact Assessment The attacker obtains the API permissions granted to the exposed Unsplash credential. The practical scope is limited to the capabilities and quota ...[truncated 463 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
finance-image-generator.cjs:235
Finding

Arbitrary File Overwrite Through Unrestricted Output Path

Content
View full analysis
{ markdown += `### ${index + 1}. ${img.filename}\n\n`; markdown += `- **关键词**: ${img.keyword}\n`; markdown += `- **描述**: ${img.description || '无'}\n`; markdown += `- **作者**: ${img.author}\n`; markdown += `- **路径**: \`${path.join(IMAGES_DIR, img.filename)}\`\n\n`; }); fs.writeFileSync(outputFile, markdown, 'utf-8'); console.log(`✅ 配图信息已保存到: ${outputFile}\n`); } ``` ### Technical Analysis The value supplied after `--output` is treated as a trusted filesystem path. The code does not: - Restrict output to a dedicated directory - Reject absolute paths - Reject traversal sequences such as `../` - Check whether the destination already exists - Require confirmation before replacing an existing file - Use exclusive file creation `fs.writeFileSync()` truncates an existing destination before writing the generated Markdown. Therefore, a caller who can control command arguments can overwrite any file writable by the Node.js process. This is not a privilege-escalation primitive by itself: the write remains constrained by the operating-system permissions of the account running the Skill. However, the damage can be substantial if t ...[truncated 1411 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (35)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
100% confidence
Finding

A hardcoded API key embedded in source code is a real secret-exposure vulnerability. Anyone with repository or package access can extract and abuse the credential, potentially causing unauthorized API usage, quota exhaustion, billing impact, and forced key rotation.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The documented skill materially expands from a stated finance content-generation purpose into a multi-agent system for financial forecasting, valuation, and investment recommendation. This creates a scope-drift vulnerability: users may invoke regulated or high-stakes financial analysis capabilities under the guise of a content tool, increasing the risk of harmful reliance, policy bypass, and deployment without appropriate controls or disclosures.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill includes explicit investment recommendation logic such as buy/hold/sell ratings, target pricing, and undervaluation judgments. In the context of a content generator, this is dangerous because it can cause users to treat generated output as personalized or authoritative financial advice without suitability assessment, licensing, or human oversight.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The file materially departs from the declared skill purpose of finance/tax/audit content generation and instead defines a financial forecasting, valuation, and investment-advisory workflow. This kind of scope drift is dangerous because it can cause the platform or users to invoke capabilities they did not consent to, including analysis of company data and generation of investment recommendations in a context that may lack appropriate controls, disclosures, or authorization.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The guide explicitly implements investment-advisory behavior such as target prices and buy/hold/sell recommendations, which exceeds a content-generation skill’s stated purpose. In practice, this can expose users to unvetted financial advice, create regulatory/compliance risk, and cause harmful reliance on outputs presented as professional recommendations.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger phrases are broad enough to match ordinary writing requests such as '帮我写一篇财税文章' or '我要写公众号内容', which can cause the skill to activate unexpectedly outside an explicit opt-in. In an agent system, overbroad activation increases the chance of prompt hijacking of normal conversations, unintended routing, and execution of skill-specific behaviors when the user did not intend to invoke this capability.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

This JavaScript skill presents its name, usage, prompts, help text, and generated content in Chinese, which effectively forces a specific language experience. The file does not provide any mechanism for users to choose another language or explicitly opt into Chinese-only behavior.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

Several commands invoke the generator with a --save flag, which causes filesystem writes, but the user-facing descriptions do not disclose that behavior. This can lead to unexpected local file creation or overwriting in an agent context where users may assume the command only generates text output, increasing the risk of unintended persistence of sensitive or misleading content.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The review save workflow writes a report file via the --output argument, but its description does not warn that running it modifies the filesystem. In agent-driven environments, undisclosed write behavior can surprise users, create persistent artifacts, and potentially overwrite existing files if topic-derived filenames collide or are manipulated downstream.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest says the skill generates professional finance/tax/audit public-account articles, which implies text-content generation. In this file, the core behavior is querying the Unsplash API over the network and writing downloaded image files to disk, which is a distinct image-asset generation workflow rather than article content generation.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
88% confidence
Finding

The code transmits data to an external service (Unsplash) whenever it performs image search. Although the transmitted keyword is not highly sensitive by itself in this implementation, external network egress is still security-relevant because article themes, topics, or future modifications could disclose business-sensitive content, and the skill description does not strongly foreground this behavior.

Content

Scanner excerpt · finance-image-generator.cjs (reported line 78)May include surrounding context.

js
* 搜索并下载图片
 */
async function downloadImage(keyword, orientation, filename) {
    const url = `https://api.unsplash.com/search/photos?query=${encodeURIComponent(keyword)}&orientation=${orientation}&per_page=1&client_id=${API_KEY}`;

    return new Promise((resolve, reject) => {
        https.get(url, (res) => {

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The tool writes remote content directly to disk after fetching it from an external service, but does so without clear user-facing disclosure or confirmation. In an agent/skill context, undisclosed filesystem modification is security-relevant because users may invoke a content-generation skill without expecting network retrieval and persistent local writes.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The code explicitly formats timestamps using the 'zh-CN' locale, which imposes a specific language/locale choice on generated output. The policy allows locale constraints only when users can opt in or the limitation is clearly documented and justified, which is not present here.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The design introduces API-based retrieval from external financial providers that exceeds the expected scope of article generation and broadens the system’s access to external data sources. This increases exposure to data-sharing, credential misuse, and unauthorized third-party processing risks, especially when the document does not define strict boundaries for what may be transmitted.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill offers external API-based data retrieval with user authorization but does not explain privacy implications of sending company, account, or other potentially sensitive data to third-party providers. This is dangerous because users may consent without understanding what leaves the system, who receives it, and how it is stored or reused.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The skill describes importing Excel files and exporting reports but omits operational safeguards around file handling, overwrite behavior, destination paths, and user-data effects. In practice this can lead to accidental data loss, unsafe file replacement, or processing of sensitive spreadsheets without adequate user warning or isolation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
80% confidence
Finding

Natural-language policy review applies to all file types. The document consistently prescribes Chinese prompts, examples, and China-specific platforms/market conventions, but it does not state that this is a region-specific skill or give users an opt-in or alternative language choice.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The routing logic triggers on broad phrases like “开始”, “估值”, and “预测”, which are common terms and can unintentionally activate the skill or jump users into sensitive financial-analysis flows. In this context, unintended activation is more serious because the downstream workflow includes data collection, valuation, and investment suggestion steps rather than harmless formatting actions.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill asks users to upload Excel files containing historical financial data and describes storing that data, but provides no user-facing notice about how files are processed, retained, or protected. This creates privacy and confidentiality risk, especially if users upload nonpublic company information or sensitive workbooks under the assumption that the interaction is transient.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The guide recommends persistent database storage of company data and valuation records without any user-facing disclosure or consent flow. Persistent storage increases the blast radius of accidental disclosure, misuse, and unauthorized access, especially for proprietary financial assumptions and historical data.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
81% confidence
Finding

The file defines the assistant and all prescribed interaction flows entirely in Chinese, including fixed first-turn and follow-up response text, with no indication that users may choose another language. Under the language/locale policy, forcing a single language without opt-in is a natural-language policy concern unless the restriction is explicitly justified as region-specific.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The guide explicitly instructs sending generated article content to a third-party conversion API, but provides no disclosure about external data transfer, retention, or sensitivity of uploaded content. This creates a real privacy and compliance risk because users may include confidential client, financial, tax, or audit material that would be transmitted off-platform without informed consent.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
97% confidence
Finding

The hardcoded external endpoint to ConvertAPI confirms that skill content may be transmitted to a third-party service. In this finance/tax context, exported material may contain sensitive business, audit, or client information, making external transmission more dangerous than in a generic content skill if no consent, screening, or contractual controls are in place.

Content

Scanner excerpt · finance-writer-coze-quickstart-v2.md (reported line 176)May include surrounding context.

json
{
  "url": "https://api.convertapi.com/Word/MdToWord",
  "method": "POST",
  "headers": {
    "Content-Type": "application/json"

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The system prompt instructs the bot to proactively perform web searches on first interaction and when recommending topics, but it does not tell users that external queries will be sent to a third-party search provider. In a finance/tax writing context, users may reveal sensitive business, audit, or tax topics early in the conversation, and automatic search can transmit those topics off-platform without informed consent.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The document defines the skill as a Chinese-language public-account writing assistant from the title onward, and the embedded system prompt and first interaction are entirely prescribed in Chinese. Because no user language selection or opt-in mechanism is offered, this creates a natural-language locale policy issue under the rule for forced language constraints.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.