T09 · Insecure Skill Coding Practices
- Location
scripts/analyze.py:372- Finding
Fabricated Financial Metrics Can Drive Investment Recommendations
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This A-share trading skill needs Review because it can generate concrete stock trades from default or simulated financial data and can automatically push reports to configured webhooks.
Install only if you are comfortable with a trading assistant that may issue concrete buy, sell, stop-loss, and allocation suggestions. Treat all financial outputs as unverified, disable or remove webhook push unless you explicitly want reports sent outside your machine, and use pinned dependencies in an isolated environment.
scripts/analyze.py:372Fabricated Financial Metrics Can Drive Investment Recommendations
scripts/analyze.py:497Advertised Strict Screening Conditions Are Not Enforced
SKILL.md:129Third-Party Dependencies Are Installed Without Version or Integrity Pinning
Outbound webhook communication to Feishu/DingTalk and reading local push configuration are materially different from a pure analysis skill and introduce data egress risk. If not explicitly declared and restricted, the skill could send reports, local metadata, or other sensitive content to external endpoints without clear user understanding or review.
Outbound webhook communication to Feishu/DingTalk and reading local push configuration are materially different from a pure analysis skill and introduce data egress risk. If not explicitly declared and restricted, the skill could send reports, local metadata, or other sensitive content to external endpoints without clear user understanding or review.
The code claims to fetch real financial data, but when data is missing or parsing fails it silently substitutes hard-coded favorable defaults or simulated pseudo-random values. In a stock-picking assistant, this can materially falsify investment outputs while appearing authoritative, causing unsafe or deceptive recommendations based on fabricated data rather than actual fundamentals.
The skill advertises capabilities that imply file access, report generation, cron-based execution, and network use, but it does not declare any explicit tool scope or permissions boundaries. This is dangerous because reviewers and users cannot easily determine what the skill is allowed to access or transmit, increasing the risk of overbroad file/network operations and making misuse or unexpected data exfiltration harder to detect.
The natural-language content of the skill forces a single language experience for users, and there is no indication that the user can opt into another language or that the skill is intentionally limited to Chinese-speaking users. Under the stated policy, forcing a specific language without user opt-in is a policy violation.
The entire skill output is presented only in Chinese and is explicitly tailored to the A-share market ('A股分析报告'), with no indication that the user opted into this language or locale. Under the policy, forcing a specific language or locale without user choice or a clearly documented region-specific justification is a natural-language policy violation.
The stated rationale of only '今日上涨' does not support the claimed methodology of Minervini trend-template plus seven strict financial conditions. This mismatch is dangerous because it can falsely signal rigor and due diligence, causing users to trust recommendations that may actually be based on weak or incomplete criteria.
The report gives concrete entry ranges, target prices, stop-loss levels, and a 60% position size, which goes beyond descriptive stock analysis into prescriptive trading advice. In an agent skill presented as a stock-screening/analysis assistant, this can mislead users into acting on unverified recommendations and create financial harm, especially because the advice appears authoritative and operationally ready.
A disclaimer stating the report is 'for reference only' does not neutralize the fact that the content provides precise execution guidance such as buy ranges, targets, stop-losses, and portfolio allocation. This contradiction can create a false sense of legal or safety coverage while still nudging users toward risky financial actions.
The file’s natural-language content, headings, recommendations, and warnings are all presented exclusively in Chinese, with no indication that the user opted into that language. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale constraint is explicitly justified.
The skill claims a strategy based on Minervini trend templates plus seven strict financial conditions, but the displayed rationale only cites generic technical signals like MACD and KDJ crosses. This mismatch can mislead users about the basis, rigor, and trustworthiness of the recommendations, causing them to rely on analysis that is not what the product claims to provide.
The report goes beyond stock screening and gives concrete entry ranges, target prices, stop-loss levels, and explicit position sizing such as '重仓 (60%)'. In a financial-analysis skill, this materially increases the chance that users will treat the output as personalized trading advice, creating consumer-harm, compliance, and suitability risks if the recommendations are inaccurate or inappropriate.
The file presents all user-facing content in Chinese, including headings, analysis, recommendations, and risk notices, with no indication that the user opted into this language or that the skill is limited to a Chinese-language audience. This can violate language/locale policy when a skill forces a specific language without user choice.
The entire report is presented in Chinese, including headings, analysis, recommendations, and risk notes, with no indication that the user opted into this language or that the skill is limited to a Chinese-language context. The policy for this audit flags natural-language locale constraints when a skill forces a specific language without user opt-in.
The entire report is written in Chinese and is specifically framed as an A-share market report, but the file does not indicate that the user opted into Chinese-language output or that the locale constraint is explicitly documented as a region-specific requirement. Under the policy, forcing a specific language or locale without opt-in can be a natural-language policy violation.
The entire report is written in Chinese and specifically framed as an A-share market report, with no indication that the language or locale was selected by the user or that the skill is explicitly limited to this locale. Under the policy, forcing a specific language without user opt-in is a natural-language policy concern.
The entire report is presented only in Chinese and is specifically framed as an A-share market report, with no indication that the user can choose another language or locale. Under the policy for natural-language violations, forcing a specific language or locale without opt-in should be flagged unless the regional constraint is clearly documented and justified.
The entire skill output is presented in Chinese, including headings, recommendations, and risk notes, with no indication that the user opted into this language or that the skill is intentionally limited to a Chinese-speaking context. This is a natural-language locale policy issue because the file reflects a fixed language choice rather than an offered preference or clearly justified regional constraint.
The script generates a stock analysis report and then automatically calls _push_report(report), which imports a separate pusher module and transmits report content externally. Even though only the first 30 non-empty lines are sent, this is still an undisclosed outbound data flow inconsistent with a local stock analysis tool and can leak potentially sensitive analysis results or user-derived content without consent.
Report content is sent through a push mechanism without any user approval, notice, or safety interstitial. Because the report may contain generated recommendations, market views, or environment-specific content, automatic transmission creates a privacy and data-governance risk and could be abused by a malicious or misconfigured pusher backend.
The module docstring and user-facing messages indicate the skill forces Chinese-language interaction/documentation. Under the policy, language constraints should either be optional for the user or clearly documented as a justified regional limitation.
The Feishu integration performs external network transmission of report content to a webhook URL, which is a genuine data egress point. In context, the feature is expected behavior for a push module, but it still becomes security-relevant because sensitive analytical output can be sent outside the local trust boundary if the webhook is compromised, misdirected, or enabled without sufficient user awareness.
}
}
response = requests.post(webhook, json=card, timeout=10)
if response.status_code == 200:
print("✅ 飞书推送成功")
This code sends report contents to a configured Feishu webhook without any explicit user-facing notice, confirmation, or data classification check at send time. Because reports may contain sensitive trading research, account-related context, or proprietary analysis, silent transmission to an external SaaS endpoint creates a real confidentiality and privacy risk if users are unaware or the webhook is misconfigured.
The DingTalk integration also transmits report content over the network to an external webhook, creating a clear exfiltration path outside the local environment. Although this appears intended rather than malicious, the stock-analysis context makes the transmitted content potentially commercially sensitive, increasing the confidentiality impact of accidental or unauthorized delivery.
}
}
response = requests.post(webhook, json=data, timeout=10)
if response.status_code == 200:
print("✅ 钉钉推送成功")
This code posts report contents to a DingTalk webhook without any user-visible warning that analysis output is being transmitted to an external messaging service. In a stock-analysis skill, reports may include sensitive investment signals or proprietary screening results, so undisclosed external delivery can lead to unintended data exposure.
No suspicious patterns detected.