Back to skill

Security audit

Finance News Assistant

Security checks for vulnerabilities and agentic risk

Overview

This finance-reporting skill is not malicious, but it should be reviewed because it sends an API token and stock queries to a fixed external service while describing the API as local and can produce automated investment recommendations.

Install only if you trust the operator of tczlld.com and intend to share the configured STOCK_API_TOKEN, queried stock symbols, request timing, and generated report data with that service. Use a dedicated least-privilege token, avoid enabling Feishu delivery unless you understand where reports will be sent, and treat the AI trading recommendations as unverified external output rather than professional financial advice.

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

other

Warning
Location
SKILL.md:39
Finding
Remote API Is Mischaracterized as Local and Receives an Authentication Token<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 39–51 and line 112 **Vulnerability Type**: Undisclosed External API Interaction **Risk Level**: Medium ### Vulnerable Code Snippet ```http GET https://tczlld.com/trade/api/stocks/{code} Authorization: Bearer <STOCK_API_TOKEN> ``` ```http POST https://tczlld.com/trade/api/ai/decision Authorization: Bearer <STOCK_API_TOKEN> Content-Type: application/json {"stockCode": "code"} ``` The documentation further states that the API address is fixed as: ```text https://tczlld.com/trade/api/ ``` ### Technical Analysis The Skill describes the service as a local API, but the configured endpoint is an external HTTPS domain, `tczlld.com`. When the Skill is used, it instructs the Agent to read `STOCK_API_TOKEN` from the environment and transmit it as a bearer credential to that remote service. Using bearer authentication over HTTPS is not inherently unsafe. The security concern is the inaccurate description of the trust boundary and the absence of documented endpoint ownership, token scope, privacy expectations, response validation, or credential-handling controls. A user may authorize the operation under the mistaken belief that credentials and query data remain local. The endpoint also supplies AI-generated investment decisions that are incorporated into reports. If the domain, DNS resolution, TLS trust chain, server account, or API implementation is compromised, an attacker could return manipulated recommendations. The project contains no executable code, remote payload execution, persistence, privilege escalation, or direct credential-harvesting mechanism. ### Attack Path 1. A user activates the Skill to obtain a financial report or stock analysis. 2. The Agent reads `STOCK_API_TOKEN` from its environment. 3. The Agent sends the token and requested stock code to `https://tczlld.com/trade/api/`. 4. The remote service receives the bearer token and query metadata. 5. If the service or its inf ...[truncated 1022 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Replace the “local API” description with an explicit disclosure that `tczlld.com` is a remote third-party or organization-controlled service. 2. Document the service owner, intended data processing, retained metadata, privacy policy, and expected availability. 3. Require explicit user approval before transmitting credentials or stock-query data to the remote endpoint. 4. Issue a dedicated, least-privilege token restricted to the required read-only stock and decision endpoints. 5. Use short-lived credentials where supported, rotate tokens regularly, and revoke them immediately after suspected exposure. 6. Ensure tokens are never included in logs, generated reports, error messages, telemetry, URLs, or model-visible output. 7. Validate API responses against a strict schema and enforce bounds and types for prices, confidence values, and trading decisions. 8. Treat all returned recommendations as untrusted external data and clearly label them as remote-service output. 9. Cross-check material market data and recommendations against independent authoritative sources before presenting financial guidance. 10. Make the endpoint configurable through a documented allowlist, while rejecting redirects or requests to unapproved origins. 11. Enforce HTTPS certificate validation, safe connection timeouts, response-size limits, and redirect restrictions. 12. Add failure behavior that reports the API as unavailable rather than fabricating or reusing stale financial data. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (10)

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The skill instructs sending authenticated requests and stock query data to an external domain without any user-facing disclosure that network access will occur. This creates a privacy and trust risk because user requests, tracked tickers, and potentially sensitive operational metadata are transmitted off-platform, while the user is not warned about the external dependency or data sharing.

Description-Behavior Mismatch

Medium
Confidence
94% confidence
Finding
The skill is presented as a news-monitoring/reporting assistant, but its workflow explicitly calls an external AI decision endpoint that returns buy/hold/sell recommendations, confidence, and target/stop prices. This is a material scope expansion into investment advice, which increases legal, safety, and misuse risk because users may rely on opaque automated trading guidance that is not disclosed as a core function in the manifest.

Missing User Warnings

Medium
Confidence
88% confidence
Finding
The skill references sensitive environment variables for both API authentication and Feishu delivery but does not provide guidance on secure handling or warn that outputs may be sent to external systems. This increases the risk of credential misuse, accidental disclosure, or unreviewed outbound sharing if operators configure the skill without understanding the security implications.

Natural-Language Policy Violations

Medium
Confidence
89% confidence
Finding
The entire policy file is written as mandatory instructions in Chinese and includes fixed Chinese output templates such as "搜索结果未提及此事" and "亏损,不适用". This effectively forces a specific language/locale for responses, and the file does not provide user opt-in, alternative language handling, or a documented region-specific justification.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The document is entirely framed as a required output format in Chinese, including headings, field labels, and content instructions such as the report title and recommendation sections. Because it imposes a specific language for the skill's output without mentioning user preference, opt-in, or a justified locale constraint, it matches the language/locale policy violation category.

Natural-Language Policy Violations

Medium
Confidence
85% confidence
Finding
The entire markdown file is written as mandatory operational guidance in Chinese, including required output phrases such as '搜索结果未提及' and formatting rules, but it does not indicate that language selection is optional or limited to a China-specific skill. This can violate language/locale policy when users have not opted into Chinese output.

Natural-Language Policy Violations

Low
Confidence
90% confidence
Finding
The manifest description, headings, and usage examples all prescribe Chinese-language interaction, but the file does not state that the user may choose another language or that the skill is intentionally restricted to a Chinese-speaking context. This matches the policy category for language or locale constraints without opt-in.

Context-Inappropriate Capability

Low
Confidence
83% confidence
Finding
The manifest describes generating briefings, searching stock news, analyzing news impact, and calling a local stock API for market data, but it does not mention sending reports to external messaging platforms. The optional `FEISHU_RECEIVE_ID` for pushing reports introduces an outbound delivery capability that is not part of the stated scope.

Natural-Language Policy Violations

Low
Confidence
86% confidence
Finding
This manifest/config file contains a natural-language value in Chinese ("示例股票") with no indication that the skill is intentionally region-specific or that users can choose another language/locale. Under the language/locale policy rule, hard-coding a specific language without opt-in can be a policy concern even in example configuration.

Natural-Language Policy Violations

Low
Confidence
88% confidence
Finding
This file contains only Chinese-language instructions and labels, which may effectively force a specific language on users. Under the policy, locale or language constraints should either be optional for the user or clearly justified as region-specific.

Static analysis

No suspicious patterns detected.