Back to skill

Security audit

Financial Risk Scanner for Listed Companies

Security checks for vulnerabilities and agentic risk

Overview

The skill fits its advertised Chinese A-share financial risk purpose, but it has review-worthy issues around unpinned dependencies, unsafe report filenames, and reports that can treat missing checks as no risk.

Review carefully before installing. Use a dedicated virtual environment, consider pinning dependency versions yourself, keep the TUSHARE_TOKEN limited to this use, and verify generated reports against annual reports and filings rather than relying on the score alone. Avoid running it in shared workspaces with sensitive files until report filename sanitization and missing-data handling are fixed.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (3)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:18
Finding

Unpinned Third-Party Dependencies Create a Supply-Chain Execution Risk

Content
View full analysis
=3.8" - packages: "tushare>=1.2.0, pandas>=1.3.0" ``` ```bash pip install tushare pandas ``` ```json "dependencies": { "python": ">=3.8", "packages": [ "tushare>=1.2.0", "pandas>=1.3.0" ] } ``` ### Technical Analysis The dependency declarations use open-ended minimum-version constraints, while the installation instructions install the latest versions available from the configured Python package index. No lock file, package hashes, exact versions, or trusted-index restrictions are provided. This is especially significant for `tushare` because the package is initialized with the sensitive `TUSHARE_TOKEN`. Imported Python packages execute module-level code with the privileges of the process. A compromised, replaced, or unexpectedly incompatible dependency could therefore access the token, local files available to the user, and the network. The audit found no evidence that the currently referenced packages are malicious. The vulnerability is the absence of controls that ensure users install the same reviewed artifacts. ### Attack Path 1. An attacker compromises a future dependency release, its publisher account, or a package index used by the victim. 2. A user follows the documented `pip install tushare pandas` command. 3. The package manager resolves a newer, unreviewed version because no exact version or hash is required. 4. Malicious installation or import-time code executes under the user account. 5. When the Skill runs, the dependency can read `TUSHARE_TOKEN`, inspect accessible local data, and initiate arbitrary network requests. ### Impact Assessment A compromised dependency could obtain arbitrary code execution with the privileges of the user running the Skill. Its scope ...[truncated 382 chars]
Remediation
View remediation
pandas== numpy== ``` 2. Generate a lock file containing cryptographic hashes, such as a hash-locked `requirements.txt`. 3. Install with hash verification: ```bash pip install --require-hashes -r requirements.txt ``` 4. Explicitly declare all direct runtime dependencies, including `numpy`, rather than relying on transitive installation. 5. Use a dedicated virtual environment with minimal filesystem and environment access. 6. Restrict installation to an approved package index and disable unintended additional indexes. 7. Review and test dependency updates before changing locked versions. 8. Avoid exposing `TUSHARE_TOKEN` to unrelated build or installation processes. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/report_generator.py:99
Finding

Remote Company Name Is Used as an Unsanitized Report Path Component

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/risk_calculator.py:129
Finding

Missing and Failed Risk Checks Are Misclassified as No Risk

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (10)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This code file contains natural-language instructions and descriptions that assume a single language locale. Under the policy, forcing a specific language without user opt-in is a violation unless the locale restriction is explicitly justified, which is not present here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This code file contains natural-language module documentation entirely in Chinese, and the rest of the user-facing strings and comments also assume Chinese output. Under the policy, forcing a specific language without user opt-in can be a language/locale policy violation unless the restriction is clearly documented and justified.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This Python file contains natural-language docstrings and console/log messages entirely in Chinese, including the module description and later user-visible output. Under the language/locale policy, forcing a specific language without opt-in or justification is a policy concern because users who do not read Chinese may be unable to safely understand the tool's behavior and results.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The script emits many logger.info/logger.warning messages and print statements in Chinese, such as initialization messages, calculation progress, warnings, and summary output. Because these strings are the primary way users observe what the code is doing, hard-coding them to one language creates a locale-policy violation unless the tool clearly limits itself to a Chinese-only audience.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The manifest explicitly sets the skill language to "Chinese". Under the policy rules, forcing a specific language is a violation unless the skill offers a user choice or clearly documents a justified locale constraint; the A-share market limitation is documented, but the language requirement itself is not framed as an opt-in or justified necessity.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill explicitly documents that it writes generated reports to a persistent workspace path, but it does not clearly warn users about this side effect in a security/privacy context. Even though the write location appears local and expected for a reporting skill, undisclosed file creation can expose sensitive analysis results, surprise users, or leave persistent artifacts in shared environments.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

This markdown file is entirely written in Chinese and does not indicate that language selection is optional or configurable. Under the policy for natural-language violations, forcing a specific language without user opt-in can be a locale policy issue.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

This markdown reference repeatedly embeds Chinese-language indicator names and field glosses alongside English content, but does not state that the skill is China-specific or give users a language/locale choice. Under the policy, forcing or assuming a specific language/locale without opt-in can be a natural-language policy issue.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

The module docstring and all user-facing CLI descriptions are written only in Chinese, and the script's runtime output is also predominantly Chinese. This creates a language/locale constraint in the skill's natural-language interface without any opt-in or alternative language selection.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

This code file contains user-facing natural language that effectively assumes a Chinese-speaking user in the docstring and many console messages, while some output is also in English. Under the policy for language/locale handling, forcing a specific language without user opt-in can be a natural-language policy issue.

Content

No source excerpt is available for this finding.