Back to skill

Security audit

Jukan Investment Strategy/Jukan投资策略

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches its stated investment-analysis purpose, but it includes risky optional guidance to store reusable X.com session cookies in plaintext and uses an unpinned Python dependency.

Install only if you are comfortable with an assistant performing web searches for financial research and producing non-advisory investment-style reports. Avoid exporting or storing X.com cookies for this skill; if authenticated scraping is needed, use a dedicated low-privilege account and secure temporary credential storage. Use a virtual environment and pin dependencies before enabling Word report generation.

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

T08 · Insecure Dependencies

Warning
Location
README_en.md:87
Finding

Unpinned Third-Party Dependency Installation

Content
View full analysis

Vulnerability Details

File Location: README_en.md:87-90
Vulnerability Type: Unpinned and unverified third-party dependency
Risk Level: Medium

Vulnerable Code

markdown
### Python Dependencies (for generating Word reports)
```bash
pip install python-docx
text

### Technical Analysis

The installation command resolves and installs the latest available version of `python-docx`. The project does not provide a version constraint, dependency lockfile, package hash, or trusted-environment requirement.

Because package resolution is mutable, the code installed by users can differ from the version reviewed by the project author. Python package installation may execute package build or installation logic with the privileges of the invoking user. If the package, one of its transitive dependencies, or the configured package index is compromised, following the documented command could execute unauthorized code.

No evidence indicates that `python-docx` is currently malicious. The vulnerability is the absence of controls that ensure users receive a known, reviewed dependency artifact.

### Attack Path

1. An attacker compromises a future dependency release, transitive dependency, or package distribution channel.
2. A user follows the documented `pip install python-docx` command.
3. `pip` resolves the compromised or unexpectedly changed package version.
4. Malicious build, installation, or imported runtime code executes locally.
5. The payload operates with the permissions of the user who installed or ran the package.

### Impact Assessment

Successful exploitation could permit arbitrary code execution under the installing user's account. Depending on that user's privileges, the attacker could access user-readable files, modify project files, steal environment credentials, tamper with generated reports, or establish persistence outside this project.

The affected scope is the environment where the depend
...[truncated 129 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin python-docx to a specifically reviewed version.
  2. Provide a dependency lockfile containing resolved transitive dependencies.
  3. Publish verified hashes and require hash checking during installation, for example with pip install --require-hashes -r requirements.txt.
  4. Recommend installation in a dedicated virtual environment rather than the system Python environment.
  5. Use a trusted package index and document the expected package source.
  6. Add automated dependency vulnerability and integrity scanning to the release process.
  7. Review and deliberately update the pinned dependency instead of automatically accepting the latest release.

T09 · Insecure Skill Coding Practices

Warning
Location
README_en.md:126
Finding

Plaintext Storage Guidance for Reusable X.com Session Cookies

Content
View full analysis

Vulnerability Details

File Location: README_en.md:126-130
Vulnerability Type: Insecure storage of authentication material
Risk Level: Medium

Vulnerable Code

markdown
### 6. Cookie Expiration (if scraping latest tweets)
- X.com cookies typically valid for **2-3 months**
- After expiration, re-export and update `jukan05_data/x_cookies.json`
- Refer to `x-scraper-cookie` Skill's cookie management process

Technical Analysis

X.com session cookies are reusable authentication credentials. The documentation directs users to export and store them at the predictable plaintext path jukan05_data/x_cookies.json, but does not require encryption, owner-only file permissions, use of an operating-system credential store, or exclusion from version control.

A plaintext cookie file can be exposed through accidental repository commits, permissive filesystem permissions, backups, support archives, development tooling, or another process running under an account with access to the file. An attacker who acquires a still-valid authentication cookie may be able to replay it without knowing the account password.

The audited scripts/analyze.py file does not access this cookie file, and no cookie exfiltration code was identified. The risk arises from the documented credential-handling practice and any external scraping Skill that follows it.

Attack Path

  1. A user exports active X.com cookies as instructed.
  2. The cookies are saved in plaintext as jukan05_data/x_cookies.json.
  3. The file is accidentally committed, included in an archive or backup, exposed through permissive permissions, or read by another local process.
  4. An attacker obtains the cookie values before they expire or are revoked.
  5. The attacker imports or replays the cookies against X.com.
  6. If the service accepts the session, the attacker gains the authenticated capabilities associated with that session.

Impact Assessment

E ...[truncated 575 chars]

Remediation
View remediation

Remediation Suggestions

  1. Avoid exporting or persistently storing session cookies whenever possible.
  2. Prefer official APIs and narrowly scoped, revocable authentication tokens.
  3. If cookies must be retained, store them in an operating-system credential manager or encrypted secret store rather than a repository file.
  4. Enforce owner-only filesystem permissions on any temporary credential file.
  5. Add jukan05_data/x_cookies.json and equivalent credential patterns to .gitignore.
  6. Add automated secret scanning to prevent cookie files from entering version control.
  7. Document cookie rotation, revocation, and incident-response procedures.
  8. Ensure logs, generated reports, backups, and error messages never contain cookie values.
  9. Delete stored cookies promptly after use and use a dedicated low-privilege account where feasible.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (19)

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
80% confidence
Finding

The README describes the AI as automatically executing the analysis workflow, including external search and data gathering, without emphasizing user confirmation checkpoints. Autonomous execution is risky because it can trigger network access, third-party data transmission, or downstream actions based on ambiguous prompts without the user realizing those steps will occur.

Content

Scanner excerpt · README_en.md (reported line 40)May include surrounding context.

md
## Parameters

This Skill is a **methodology instruction set** with no command-line parameters. The AI automatically executes analysis according to the detailed instructions in `SKILL.md`.

### Supported Target Types
| Type | Examples | Handling |

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The README instructs the skill to perform real-time web search and optionally scrape tweet data using X.com cookies, but it does not clearly warn users that prompts, targets, and possibly authenticated browsing data may be transmitted to external services. In an agent setting, this can expose sensitive research interests, account-linked session artifacts, or violate user expectations around privacy and third-party data access.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The trigger phrases are broad, natural-language prompts that could overlap with ordinary conversation about a stock, industry, or market. In an agent system that auto-invokes skills based on prompt matching, this can cause unintended activation, leading the agent to perform web searches, load reference material, and generate authoritative-sounding financial analysis without the user explicitly requesting this skill.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The README states that requesting a report or document will generate a Word file, but it does not clearly warn that this results in a local filesystem write. In agent environments, implicit file creation can surprise users, create unwanted artifacts, or be chained with other behaviors to persist sensitive analysis output on disk without informed consent.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The manifest description is written to require reproducing the target analyst's style and presents the skill entirely in Chinese, with no indication that users may opt into another language. This creates a language/locale constraint in the skill's natural-language behavior without documented user choice or justification.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This markdown file contains instructional content exclusively in Chinese, and there is no natural-language indication that users may choose another language or that the framework is intentionally limited to a Chinese-speaking audience. Under the language/locale policy, forcing a specific language without user opt-in is a policy concern.

Content

No source excerpt is available for this finding.

Ae4

Medium
Category
analysis-evasion
Confidence
80% confidence
Finding

Suspicious Unicode normalization or mixed-script content

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The title includes Chinese text ('历史观点') while the rest of the document is primarily in English, indicating a mixed-language presentation without any note about intended audience, locale scope, or user language choice. Under the policy, forcing a specific language or locale without opt-in is a reportable natural-language violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The module docstring specifies the skill in Chinese, including fixed Chinese-language input/output behavior, while the generated report content is largely English. This reflects a locale/language constraint in natural-language instructions without offering the user a language choice or documenting a justified region-specific requirement.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
86% confidence
Finding

The README says the skill can generate a Word document by calling a script, but it does not clearly tell users that a local .docx file will be created. In agent environments, silent file creation can surprise users, overwrite existing artifacts, or leave sensitive analysis persisted on disk unintentionally.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

SQP-3 applies to all file types and covers language or locale policy violations. This report presents all user-facing content in Chinese only, with no indication that the user can choose another language or that the Chinese-only format is justified by a region-specific purpose.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
79% confidence
Finding

The heading uses Chinese-only wording ("知识库索引") and the document provides no indication that the language choice is optional or region-specific. Under the policy rules, fixed locale or language presentation without opt-in can be a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
80% confidence
Finding

The title includes Chinese text ('历史观点') alongside English, indicating a mixed-language presentation without any note that language choice is optional or audience-specific. Under the policy, forcing a specific language or locale without user opt-in can be a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
96% confidence
Finding

The title combines English with Chinese text ("历史观点"), indicating a specific language/locale presentation choice. The file does not state that the content is intended for Chinese-speaking users only, nor does it offer any language option or opt-in, which can conflict with a language/locale policy requiring user choice or clear justification.

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 begins with a Chinese title ("历史观点") and mixes Chinese-language content throughout, which can amount to a language/locale constraint for users consuming the skill content. The file does not indicate that the language choice is optional, user-selected, or justified as region-specific.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

The heading mixes English with Chinese and specifically labels the content as '历史观点', indicating a Chinese-language framing without any note that language can be selected or changed. Under the stated policy, forcing a specific language or locale without user opt-in is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

The document title is in Chinese at L001, most entries are in English, and at least one entry is in Korean at L026. This mixes languages in a way that can effectively force specific languages on readers without any stated user opt-in or justification for a multilingual-only presentation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
80% confidence
Finding

The heading includes Chinese text ('历史观点') and the file provides content in a fixed language presentation without any indication that users may choose another language or that the locale is required for a region-specific purpose. Under the policy, forcing a specific language without opt-in can be a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

This markdown file begins with a Chinese title and contains substantial English content throughout, but does not indicate whether the user can choose a preferred language or that the mixed-language format is intentional. Under the language/locale policy, forcing or assuming a language presentation without opt-in can be a policy concern.

Content

No source excerpt is available for this finding.