Back to skill

Security audit

stock-valuation-monitor

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed stock and ETF valuation helper that fetches public market data, with privacy and dependency-hygiene notes but no evidence of hidden persistence, credential use, account access, or destructive behavior.

Install only if you are comfortable with stock or ETF symbols being queried through external finance data services. Treat the outputs as research aids, not financial advice, and prefer a locked or reviewed dependency set in managed or enterprise environments.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (9)

Lp3

Medium
Category
MCP Least Privilege
Confidence
82% confidence
Finding
The skill declares external market data sources and Python dependencies such as requests and akshare, which implies network access, but no permissions are declared. Undeclared network capability weakens transparency and policy enforcement because the host cannot clearly constrain or review outbound data access behavior.

Missing User Warnings

Medium
Confidence
83% confidence
Finding
The skill makes outbound requests to multiple third-party market-data providers based on user-supplied stock codes, but the handler contract does not clearly disclose that user queries will be sent to external services. This can expose user interest patterns and query contents to third parties, which is a privacy and data-governance risk, especially in enterprise or regulated environments.

Vague Triggers

Medium
Confidence
91% confidence
Finding
The trigger list contains broad finance phrases such as investment opportunity and risk assessment alongside regex-like stock-code patterns, which can cause the skill to activate on ordinary financial discussion rather than a clear user request for this tool. In a finance skill, unintended invocation is more concerning because it may insert analysis or investment-oriented output into general conversation and increase the chance of inappropriate or misleading assistance.

Unpinned Dependencies

Low
Category
Supply Chain
Content
requests>=2.28.0
pandas>=1.5.0
numpy>=1.21.0
akshare>=1.10.0  # 可选,用于历史数据
Confidence
95% confidence
Finding
Using an open-ended version specifier for requests allows installation of different versions over time, including versions later found to be vulnerable or incompatible with the skill's assumptions. In a dependency file, this creates supply-chain risk and reduces reproducibility, making it easier for known library flaws to enter deployments unnoticed.

Unpinned Dependencies

Low
Category
Supply Chain
Content
requests>=2.28.0
pandas>=1.5.0
numpy>=1.21.0
akshare>=1.10.0  # 可选,用于历史数据
openpyxl>=3.0.0  # 可选,用于Excel导出
Confidence
95% confidence
Finding
Using pandas>=1.5.0 without an upper bound or lock file means the installed version may drift to unreviewed releases, undermining reproducible builds and exposing the project to future vulnerable versions. This is a common software supply-chain weakness even when no exploit is directly visible in this file.

Unpinned Dependencies

Low
Category
Supply Chain
Content
requests>=2.28.0
pandas>=1.5.0
numpy>=1.21.0
akshare>=1.10.0  # 可选,用于历史数据
openpyxl>=3.0.0  # 可选,用于Excel导出
Confidence
95% confidence
Finding
The unpinned numpy dependency allows arbitrary newer versions to be resolved during installation, which can introduce security regressions or unstable behavior. Because numerical libraries are widely depended on, version drift can also complicate transitive dependency security review.

Known Vulnerable Dependency: requests — 10 advisory(ies): CVE-2014-1830 (Exposure of Sensitive Information to an Unauthorized Actor in Requests); CVE-2024-47081 (Requests vulnerable to .netrc credentials leak via malicious URLs); CVE-2024-35195 (Requests `Session` object does not verify requests after making first request wi) +7 more

High
Category
Supply Chain
Confidence
93% confidence
Finding
The requirement allows requests versions affected by published advisories, and because it is only lower-bounded, vulnerable releases remain eligible depending on the environment's resolver and mirror state. In a tool likely to fetch remote market data, HTTP client flaws can expose credentials, weaken TLS/session guarantees, or mishandle malicious URLs.

Known Vulnerable Dependency: numpy — 10 advisory(ies): CVE-2014-1859 (Numpy arbitrary file write via symlink attack); CVE-2021-41495 (NumPy NULL Pointer Dereference); CVE-2021-33430 (NumPy Buffer Overflow (Disputed)) +7 more

Critical
Category
Supply Chain
Confidence
84% confidence
Finding
The numpy requirement is broad enough to permit versions associated with multiple published advisories, though several listed issues are old, disputed, or context-dependent. Still, allowing potentially affected builds in an analytics tool creates avoidable risk, especially if the package is used in file-processing or native-extension-heavy workflows.

Known Vulnerable Dependency: openpyxl — 2 advisory(ies): CVE-2017-5992 (Improper Restriction of XML External Entity Reference in Openpyxl); CVE-2017-5992 (Openpyxl 2.4.1 resolves external entities by default, which allows remote attack)

High
Category
Supply Chain
Confidence
90% confidence
Finding
openpyxl has had XXE-related issues, and the current requirement allows older vulnerable versions because it only specifies a very low minimum. Since this skill may export or potentially later process Excel files, retaining eligibility for affected versions could expose systems to XML entity expansion or external resource access if untrusted workbooks are handled.

Static analysis

No suspicious patterns detected.