Back to skill

Security audit

Capital Market Report

Security checks across malware telemetry and agentic risk

Overview

This market-report skill is not clearly malicious, but it should be reviewed because it runs local and cross-skill scripts, writes and deletes report history, and overstates some financial-data safeguards.

Install only if you are comfortable with a skill that fetches live financial/news data, runs other local OpenClaw skills by path, stores report/cache files, and may delete prior report history. Review or modify the retention command, remove shell=True subprocess calls, pin or vendor the external helper scripts, and do not rely on the advertised 24-hour and anti-hallucination guarantees until they are implemented and tested.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Output HandlingUnvalidated Output Injection, Cross-Context Output, Unbounded Output
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
Findings (16)

subprocess module call

Medium
Category
Dangerous Code Execution
Content
cmd = f"uv run {script_path} {' '.join(all_codes)}"
    
    try:
        result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=30)
        # 解析输出 - 按顺序匹配
        lines = result.stdout.strip().split('\n')[2:]  # 跳过表头
        data = {}
Confidence
95% confidence
Finding
result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=30)

subprocess module call

Medium
Category
Dangerous Code Execution
Content
cmd = f"uv run {script_path} {symbol}"
    
    try:
        result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=30)
        # 解析: "Bitcoin (BTC): $67,947.09"
        line = result.stdout.strip()
        if "$" in line:
Confidence
94% confidence
Finding
result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=30)

Lp3

Medium
Category
MCP Least Privilege
Confidence
96% confidence
Finding
The skill instructs use of file reads, file writes, network access, and shell execution, but no permissions are declared. That creates a transparency and policy-enforcement gap: an operator may approve or run the skill without understanding that it can persist data, execute local scripts, and reach external sources. In this context, the capability set is broader than a simple reporting prompt and should be explicitly surfaced.

Tp4

High
Category
MCP Tool Poisoning
Confidence
91% confidence
Finding
The documented behavior does not fully match what the skill actually directs the agent to do, including persistence of report files, retention management, and invocation of additional local scripts/data sources. Description-behavior mismatches are dangerous because users and policy systems rely on the manifest to assess risk; hidden or underdescribed behaviors can bypass informed consent and review.

Description-Behavior Mismatch

Medium
Confidence
95% confidence
Finding
The skill instructs deletion of prior report files as part of normal operation, expanding from report generation into destructive retention management. Even though the text says to keep only the last 24 hours, a mistaken path, glob, or execution context could remove more data than intended, and the user is not prompted before deletion.

Context-Inappropriate Capability

Medium
Confidence
83% confidence
Finding
The skill requires execution of external hot/rumor scanner scripts that are not clearly justified by the declared scope and data-source description. Invoking additional local scripts broadens the trusted computing base and can introduce unreviewed code paths, unexpected network access, or unsafe processing beyond the stated reporting function.

Context-Inappropriate Capability

Medium
Confidence
83% confidence
Finding
The report generator invokes an unrelated cryptocurrency skill from a different workspace path, expanding the trust boundary beyond the declared capital-market reporting functionality. This creates supply-chain and capability-creep risk: a modified external skill can influence output or execute unintended behavior under this skill's authority.

Description-Behavior Mismatch

Medium
Confidence
98% confidence
Finding
The script repeatedly claims it returns only news from the last 24 hours, computes a cutoff timestamp, but never compares article times against that cutoff. In a market-monitoring skill, this can silently mix stale items into time-sensitive reports and mislead downstream analysis or trading decisions.

Intent-Code Divergence

Medium
Confidence
97% confidence
Finding
The user-facing output and comments assert strict 24-hour recency even though no such enforcement exists. This is dangerous because it creates false assurance for operators and downstream agents that may treat the output as temporally verified market intelligence.

Description-Behavior Mismatch

Medium
Confidence
95% confidence
Finding
The skill metadata promises a strict, market-focused media whitelist, but the code pulls from additional unrelated foreign sources such as TechCrunch and Ars Technica and replaces a named Chinese outlet category with Eastmoney announcements. In a market-analysis skill, this is dangerous because it undermines trust boundaries and can introduce irrelevant or lower-assurance content into downstream reports while violating the operator's stated sourcing controls.

Description-Behavior Mismatch

Medium
Confidence
93% confidence
Finding
The manifest advertises Brave web_search, diversity quotas, temporal verification, anti-hallucination guardrails, leading-signal scanning, and market-isolation logic, but the implementation only fetches feeds, applies naive keyword sentiment, and emits a raw report. In this context, the mismatch is security-relevant because consumers may rely on absent controls to make market decisions, creating integrity and trust risks from misleading capability claims.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The skill contains a destructive delete instruction without any user-facing warning or confirmation step. In agent environments, silent deletion is risky because execution may be automated and the user may not realize the skill is altering stored history rather than only producing a report.

Unvalidated Output Injection

High
Category
Output Handling
Content
cmd = f"uv run {script_path} {' '.join(all_codes)}"
    
    try:
        result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=30)
        # 解析输出 - 按顺序匹配
        lines = result.stdout.strip().split('\n')[2:]  # 跳过表头
        data = {}
Confidence
87% confidence
Finding
subprocess.run(cmd, shell=True, capture_output

Unvalidated Output Injection

High
Category
Output Handling
Content
cmd = f"uv run {script_path} {symbol}"
    
    try:
        result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=30)
        # 解析: "Bitcoin (BTC): $67,947.09"
        line = result.stdout.strip()
        if "$" in line:
Confidence
85% confidence
Finding
subprocess.run(cmd, shell=True, capture_output

Tool Parameter Abuse

High
Category
Tool Misuse
Content
cmd = f"uv run {script_path} {' '.join(all_codes)}"
    
    try:
        result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=30)
        # 解析输出 - 按顺序匹配
        lines = result.stdout.strip().split('\n')[2:]  # 跳过表头
        data = {}
Confidence
93% confidence
Finding
subprocess.run(cmd, shell=True

Tool Parameter Abuse

High
Category
Tool Misuse
Content
cmd = f"uv run {script_path} {symbol}"
    
    try:
        result = subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=30)
        # 解析: "Bitcoin (BTC): $67,947.09"
        line = result.stdout.strip()
        if "$" in line:
Confidence
92% confidence
Finding
subprocess.run(cmd, shell=True

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

No suspicious patterns detected.