Back to skill

Security audit

Openclaw Skill Money Idea Generator

Security checks for vulnerabilities and agentic risk

Overview

This skill appears to be a disclosed money-idea generator that fetches public trend data and stores generated ideas locally, with caveats around dependency pinning and exact network/CLI disclosure.

Before installing, expect the skill to contact external trend sources and to store generated ideas and tracking data under your OpenClaw memory directory. Use a virtual environment, pin dependencies, avoid setting GITHUB_TOKEN unless you need higher GitHub rate limits, and review or disable the unofficial trending endpoint and bird CLI integration if those trust boundaries are not acceptable.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T08 · Insecure Dependencies

Warning
Location
README.md:33
Finding

Unpinned Third-Party Dependency Installation

Content
View full analysis

Vulnerability Details

File Location: README.md:33-35
Vulnerability Type: Unpinned Python dependency and non-reproducible installation
Risk Level: Medium

Vulnerable Code:

bash
# Install dependencies
pip install requests

Technical Analysis

The documented installation command retrieves the latest version of requests and its transitive dependencies without enforcing reviewed versions or package integrity hashes. Consequently, the code installed by this command may change over time even when the skill package itself remains unchanged.

Because Python packages and their installation components execute with the privileges of the user running pip, a compromised package release, compromised transitive dependency, or unexpected incompatible update could introduce arbitrary code into the skill's runtime environment. The repository does not provide a locked dependency manifest or hashes that would allow installers to verify that they received the versions reviewed by the project maintainer.

This finding does not establish that the current requests package is malicious. It identifies an avoidable supply-chain exposure caused by unconstrained dependency resolution.

Attack Path

  1. An attacker compromises a future release of requests or one of its transitive dependencies, or otherwise causes a malicious package version to be selected from the configured Python package index.
  2. A user follows the installation instructions and runs pip install requests.
  3. Pip resolves and downloads the attacker-controlled version because no version or integrity constraint is present.
  4. Malicious installation or runtime code executes under the installing user's account.
  5. That code can access resources available to the user, including project files, environment variables, local application data, and outbound network connections.

Impact Assessment

Successful exploitation could provide arbitrary cod ...[truncated 388 chars]

Remediation
View remediation

Remediation Suggestions

  1. Add a reviewed dependency manifest that pins requests and every transitive dependency to exact versions.
  2. Generate and retain cryptographic hashes for all approved distributions.
  3. Install dependencies using hash verification, for example:
    bash
    python3 -m pip install --require-hashes -r requirements.txt
    
  4. Use a lock-file workflow such as pip-tools, Poetry, or an equivalent reproducible dependency manager.
  5. Configure automated dependency vulnerability scanning and review updates before regenerating the lock file.
  6. Recommend installation in a dedicated virtual environment rather than the system Python environment.
  7. Avoid running pip with administrator or root privileges.
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
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (21)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The declared description emphasizes automatic discovery of monetization opportunities and multi-platform monitoring, implying collection/analysis of external content to generate business ideas. The supplied code does none of that. It only provides CRUD-style local state management for ideas, execution records, and revenue records, all persisted to local JSON files. While this could support a broader money-idea workflow, it is not the described generator/discovery component. Therefore the code’s primary behavior materially differs from the declared purpose.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
91% confidence
Finding

The declared description emphasizes a generator that automatically finds AI monetization opportunities across several platforms. In contrast, the supplied code only sets configuration values: GitHub search categories, star thresholds, exclusion keywords, scoring rules, monetization idea templates, and user preferences. The only external resource referenced is a GitHub token. There is no code for accessing or monitoring Douyin, Bilibili, Xiaohongshu, Twitter, or even executing GitHub queries in this chunk. While a config file can be a supporting part of a larger system, based on this supplied code alone the described multi-platform monitoring capability is not represented, making the description materially broader than the observed behavior.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding

The code chunk is narrowly focused on GitHub repository discovery and metadata retrieval. It searches GitHub for recently created AI-related repositories with star thresholds, fetches trending repositories from a third-party API, and can retrieve repository details. There is no logic here for generating赚钱灵感/商业灵感, scoring monetization opportunities, synthesizing actionable business ideas, or monitoring the other declared platforms (抖音、B站、小红书、Twitter). While GitHub monitoring could be a supporting component of a broader money-idea system, this specific code materially underdelivers relative to the declared description and exposes a more limited, different behavior.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The description promises automatic discovery of AI monetization opportunities across multiple external platforms, implying collection/monitoring from GitHub and several social platforms. However, this code only analyzes an input project dictionary and generates/ranks monetization ideas using heuristic scoring and templates. There is no code for fetching, scraping, monitoring, API access, scheduling, or handling content from Douyin, Bilibili, Xiaohongshu, Twitter, or even GitHub. The implemented functionality partially matches the 'generate赚钱灵感' portion, but materially misses the advertised automatic multi-platform discovery capability, so this is a description-behavior mismatch.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The invocation examples use broad natural-language phrases such as '给我生成一个赚钱灵感' and '最近有什么赚钱机会?' that are likely to overlap with ordinary conversation. In an agent platform, this can cause unintended skill activation, making the agent pull external data or produce monetization-oriented outputs when the user did not explicitly intend to invoke this skill.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
84% confidence
Finding

The skill declares required binaries (python3, curl) and its static analysis indicates access to environment, filesystem, network, and shell capabilities, but it does not declare any explicit tool scope or permissions. That creates an unnecessary trust gap: a user or platform cannot easily tell what the skill may access, increasing the chance of over-privileged execution and unintended data/network exposure.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger phrases are broad common-language requests such as asking for money-making ideas or opportunities, which can cause the skill to activate in contexts where the user did not intend to invoke it. In agent ecosystems, ambiguous activation can lead to unplanned network calls, file access, or shell execution by a skill that appears to require those capabilities.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The usage examples are phrased as ordinary brainstorming questions rather than explicit tool-invocation commands, which increases the risk of accidental or overly broad activation. Because the skill advertises monitoring, analysis, and asset-pool management, ambiguous invocation could trigger unintended external access or data persistence in otherwise harmless conversations.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The manifest describes a 'Money Idea Generator' focused on discovering monetization opportunities and generating actionable ideas across multiple platforms. This file implements a local persistence layer for storing ideas, tracking execution progress, and recording revenue statistics, which is materially broader than idea generation itself.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This Python file contains user-facing natural-language content exclusively in Chinese, starting with the module description "赚钱灵感生成器 - 配置文件". Under the policy, language constraints should not be forced without user opt-in or a documented justification, and no such choice or justification appears here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

This code contains natural-language descriptions and user-facing strings in Chinese, including the module docstring and function documentation, with no indication that the skill is region-specific or that users can opt into another language. That creates a language/locale policy issue because it effectively forces a specific language without user choice.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
84% confidence
Finding

The code sends requests to a third-party, unofficial API endpoint (api.gitterapp.com) to retrieve trending repositories. Even though no obvious sensitive payload is sent beyond query parameters, this creates an external data flow to a non-official service, increasing privacy, integrity, and supply-chain risk because results can be manipulated, service behavior may change unexpectedly, and network metadata may be exposed.

Content

Scanner excerpt · scripts/github_monitor.py (reported line 93)May include surrounding context.

python
项目列表
        """
        # 使用非官方 API
        url = f'https://api.gitterapp.com/repositories'
        params = {
            'language': language,
            'since': since,

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The file’s natural-language title and description are entirely in Chinese and present the skill as a Chinese-language analyzer without offering any language choice. Under the policy, forcing a specific language is a locale/language constraint that should be opt-in or explicitly justified.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The module title and class docstring are written entirely in Chinese, and all user-facing console output is also Chinese, indicating the skill is effectively fixed to a single language. There is no indication that users can choose their preferred language or that the locale restriction is documented as intentional and justified.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · scripts/multi_source_monitor.py (reported line 104)May include surrounding context.

python
# B站科技区热门
            import requests
            
            url = 'https://api.bilibili.com/x/web-interface/ranking/v2'
            params = {'rid': 36, 'type': 'all'}  # 36 = 科技区
            headers = {
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The code performs an outbound HTTP request to Bilibili without any clear notice to the user that external network access occurs. While the request itself is not exfiltrating sensitive data, silent network activity in an agent skill can violate user expectations and create privacy, policy, or compliance concerns.

Content

No source excerpt is available for this finding.

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/multi_source_monitor.py (reported line 156)May include surrounding context.

python
try:
            # 使用 bird CLI 搜索
            result = subprocess.run(
                ['bird', 'search', 'AI trending', '--limit', '10'],
                capture_output=True,
                text=True,

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The manifest describes a money-idea generator that monitors multiple platforms for trends, which reasonably implies network fetching and content aggregation. However, invoking an external bird executable introduces local command-execution capability that is broader than necessary for this purpose and is not declared in the manifest description.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill launches an external CLI that may perform network access without any user-facing disclosure or consent mechanism. In agent environments, undisclosed subprocess and outbound access can surprise users, bypass expectations, and enlarge the trusted computing base through an unvetted binary.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

The natural-language instructions and usage examples are entirely Chinese, but the file does not state that the skill is Chinese-only or offer an opt-in language choice. This may conflict with organizational language/locale policies that prohibit forcing a specific language without user choice.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The file’s title and user-facing strings consistently prescribe Chinese-language behavior, such as the generator name and all printed output, without any indication that users can select another language. This can violate a language/locale policy when a skill imposes a specific language by default rather than offering opt-in or choice.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.