Back to skill

Security audit

uwillberich

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches its finance-analysis purpose, but its one-line remote installer and optional background polling need user review before installation.

Use the manual copy install from a reviewed checkout or pinned release, not the one-line git clone && ./install_skill.sh command. Configure EM_API_KEY only if you trust the Eastmoney/MX integration, expect recurring external network calls, and enable launchd/nohup polling only when you intentionally want a background local service writing state under ~/.uwillberich.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • 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)

T03 · Remote Payload Retrieval and Execution

Error
Location
README.md:94
Finding

Unpinned Remote Repository Is Cloned and Immediately Executed

Content
View full analysis
Remediation
View remediation
``` The full commit hash should be published through a trusted release channel. 3. **Publish signed, versioned releases.** Prefer a tagged release whose Git tag or commit is cryptographically signed and whose signer identity is documented. 4. **Publish and verify checksums.** If distributing an archive, provide a SHA-256 digest through a separately protected channel and require verification before extraction or execution. 5. **Require installer inspection.** Document commands such as: ```bash sed -n '1,240p' install_skill.sh ``` Only execute the script after verification. 6. **Prefer a non-executable installation path.** Since the audited Skill consists of text resources and standard-library Python scripts, provide explicit copy commands from a verified local checkout rather than relying on an installer. 7. **Minimize installer permissions.** The installer should: - Never invoke `sudo`. - Write only to the selected Skill directory. - Avoid modifying shell startup files or unrelated agent configuration. - Avoid reading credentials. - Fail before making changes if destination paths are unexpected. 8. **Add release provenance.** Use a reproducible release process and publish build provenance or attestations so users can establish that the distributed artifact corresponds to the reviewed source. 9. **Document uninstall and changed files.** Clearly enumerate every path created or modified by installation so users can review and reverse the operation. ]]>
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (86)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

Local credential management, environment loading from multiple locations, API-key write/update commands, and creation of local runtime directories are materially more sensitive than the narrow analytical description suggests. This is dangerous because skills that read and write credential files can mishandle secrets, overwrite user configuration, or encourage broad environment access without clear scoping and review.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

Local credential management, environment loading from multiple locations, API-key write/update commands, and creation of local runtime directories are materially more sensitive than the narrow analytical description suggests. This is dangerous because skills that read and write credential files can mishandle secrets, overwrite user configuration, or encourage broad environment access without clear scoping and review.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

Local credential management, environment loading from multiple locations, API-key write/update commands, and creation of local runtime directories are materially more sensitive than the narrow analytical description suggests. This is dangerous because skills that read and write credential files can mishandle secrets, overwrite user configuration, or encourage broad environment access without clear scoping and review.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

Local credential management, environment loading from multiple locations, API-key write/update commands, and creation of local runtime directories are materially more sensitive than the narrow analytical description suggests. This is dangerous because skills that read and write credential files can mishandle secrets, overwrite user configuration, or encourage broad environment access without clear scoping and review.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

Local credential management, environment loading from multiple locations, API-key write/update commands, and creation of local runtime directories are materially more sensitive than the narrow analytical description suggests. This is dangerous because skills that read and write credential files can mishandle secrets, overwrite user configuration, or encourage broad environment access without clear scoping and review.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Local credential management, environment loading from multiple locations, API-key write/update commands, and creation of local runtime directories are materially more sensitive than the narrow analytical description suggests. This is dangerous because skills that read and write credential files can mishandle secrets, overwrite user configuration, or encourage broad environment access without clear scoping and review.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
90% confidence
Finding

Local credential management, environment loading from multiple locations, API-key write/update commands, and creation of local runtime directories are materially more sensitive than the narrow analytical description suggests. This is dangerous because skills that read and write credential files can mishandle secrets, overwrite user configuration, or encourage broad environment access without clear scoping and review.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

Local credential management, environment loading from multiple locations, API-key write/update commands, and creation of local runtime directories are materially more sensitive than the narrow analytical description suggests. This is dangerous because skills that read and write credential files can mishandle secrets, overwrite user configuration, or encourage broad environment access without clear scoping and review.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

Local credential management, environment loading from multiple locations, API-key write/update commands, and creation of local runtime directories are materially more sensitive than the narrow analytical description suggests. This is dangerous because skills that read and write credential files can mishandle secrets, overwrite user configuration, or encourage broad environment access without clear scoping and review.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

Local credential management, environment loading from multiple locations, API-key write/update commands, and creation of local runtime directories are materially more sensitive than the narrow analytical description suggests. This is dangerous because skills that read and write credential files can mishandle secrets, overwrite user configuration, or encourage broad environment access without clear scoping and review.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Local credential management, environment loading from multiple locations, API-key write/update commands, and creation of local runtime directories are materially more sensitive than the narrow analytical description suggests. This is dangerous because skills that read and write credential files can mishandle secrets, overwrite user configuration, or encourage broad environment access without clear scoping and review.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/runtime_config.py (reported line 63)May include surrounding context.

python
custom = os.environ.get(env_var)
        if custom:
            paths.append(Path(custom).expanduser())
    paths.extend([DEFAULT_ENV_PATH, LEGACY_ENV_PATH, ROOT / ".env.local", ROOT / ".env"])

    deduped: list[Path] = []
    seen: set[str] = set()

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · scripts/runtime_config.py (reported line 63)May include surrounding context.

python
custom = os.environ.get(env_var)
        if custom:
            paths.append(Path(custom).expanduser())
    paths.extend([DEFAULT_ENV_PATH, LEGACY_ENV_PATH, ROOT / ".env.local", ROOT / ".env"])

    deduped: list[Path] = []
    seen: set[str] = set()

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill advertises continuous news watching and scheduled background polling, which can create ongoing network activity, local state collection, and periodic writes without an upfront warning about system impact or privacy implications. In an agent-skill context, background behavior is more sensitive because users may not expect a documentation-described workflow to include long-running monitoring components.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
84% confidence
Finding

The README includes a launchd installer for scheduled polling, which establishes persistence on the local machine. While this appears intended for convenience, persistence mechanisms are security-relevant because they can continue running after the initial session, generate background traffic, and maintain state without continuous user attention.

Content

Scanner excerpt · README.md (reported line 76)May include surrounding context.

md
- `scripts/mx_api.py`: Meixiang / Eastmoney API wrapper for live finance queries
- `scripts/mx_toolkit.py`: CLI wrapper for real news search, stock screen, structured data queries, and desk presets
- `scripts/benchmark_sources.py`: source latency / availability benchmark
- `scripts/install_news_iterator_launchd.py`: macOS launchd installer for scheduled polling
- `scripts/smoke_test.py`: local smoke test for the bundled scripts

## Agent Install

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
85% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

Scanner excerpt · README.md (reported line 90)May include surrounding context.

bash
git clone https://github.com/huangrichao2020/uwillberich.git
mkdir -p ~/.codex/skills
cp -R uwillberich/skill/uwillberich ~/.codex/skills/uwillberich

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · README.md (reported line 90)May include surrounding context.

bash
git clone https://github.com/huangrichao2020/uwillberich.git
mkdir -p ~/.codex/skills
cp -R uwillberich/skill/uwillberich ~/.codex/skills/uwillberich

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · README.md (reported line 126)May include surrounding context.

md
Without `EM_API_KEY`, the scripts will exit and print the application URL plus setup command.

- GitHub read access: only if the repo is private and an agent must clone it
- GitHub write access: only if an agent should push changes back
- Model-provider API keys: may be required by the host agent environment, but not by this skill itself

## Local Smoke Test

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill advertises and documents scripts that require shell, network, environment-variable access, and local file reads/writes, yet it declares no explicit tool scope or permissions boundary. That mismatch increases the chance an agent executes broader capabilities than a reviewer or user would expect, especially because the skill also handles credentials and remote API calls.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill enables implicit invocation without any visible trigger constraints, so the agent may auto-select this skill in broader contexts than intended. While this file does not show direct prompt injection or code execution risk, ambiguous activation can cause unintended use of market-analysis logic, increasing the chance of irrelevant or misleading financial guidance being surfaced to users.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The oil/gas theme uses broad trigger terms such as 'gas', 'shipping', and geopolitical country names that can match many unrelated market narratives. In this skill, those matches can incorrectly activate a conflict-sensitive theme and distort sector/game-plan outputs, making the agent over-weight war or energy interpretations from weak evidence.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The IDC/power theme includes generic triggers like 'power', 'electricity', and 'data center', which are common across many financial and non-financial discussions. In a pre-open A-share planning skill, this ambiguity can spuriously route analysis into the wrong theme and produce misleading sector-strength or cost-shock conclusions.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

Multiple Google News feed URLs explicitly force the locale and region to hl=en-US, gl=US, and ceid=US:en. This imposes a specific language/locale policy in configuration without any indication of user opt-in or a documented region-specific requirement.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The document describes a persistent RSS polling and local storage system, which materially expands the skill from a next-session A-share planning aid into an autonomous background data-ingestion component. That creates additional attack surface and operational risk because users may enable unattended collection, retention, and downstream decision inputs without that behavior being clearly bounded by the skill's stated purpose.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

Automatically converting alerts into event-driven stock pools moves the skill from passive analysis support into autonomous signal generation that can influence trading decisions without manual review. In context, this is dangerous because noisy or manipulated public headlines could be transformed directly into watchlists, increasing the risk of unintended or low-quality outputs being treated as actionable.

Content

No source excerpt is available for this finding.