Back to skill

Security audit

Query paginated national trade list data — retrieve country-level trade breakdowns with annual, quarterly, and monthly trade volumes for comprehensive market analysis. Enables multi-dimensional country comparison with detailed trade volume decomposition across time periods. Designed for export teams, market researchers and trade analysts who need to compare import-export volumes across countries, analyze market penetration and identify growth opportunities through structured country trade data across 220+ countries and territories.

Security checks across malware telemetry and agentic risk

Overview

This paid trade-data skill is not clearly malicious, but it handles API keys and top-up orders beyond a simple read-only query and stores secrets in a plaintext local file.

Install only if you trust UpKuaJing and are comfortable with the agent reading and writing `~/.upkuajing/.env`, sending your API key to the UpKuaJing API, and helping create payment/top-up orders. Prefer setting the API key through a managed secret mechanism or a tightly permissioned file, and require a separate explicit confirmation before any billed query or top-up action.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • 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
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (9)

Lp3

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding
The skill uses environment access, local file reads/writes, and networked helper flows without declaring those capabilities up front. That weakens transparency and consent, making it easier for a user or host system to invoke behavior involving credential files and remote billing/account operations that are broader than a simple trade-data query.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding
The documented purpose is a paginated trade-list query, but the skill also includes account enrollment, credential storage, balance checks, payment order creation, pricing retrieval, and local caching/version behaviors. This mismatch is dangerous because it expands the attack surface beyond user expectations and can lead to credential handling and fee-incurring operations under the guise of a data-query skill.

Description-Behavior Mismatch

High
Confidence
95% confidence
Finding
This file implements API key issuance, account lookup, pricing, and recharge-order creation for a skill whose declared purpose is read-only trade list querying. That mismatch expands the skill’s capability into credential and billing operations, increasing the attack surface and creating an unjustified path to obtain secrets or trigger financial/account actions from a seemingly data-query skill.

Context-Inappropriate Capability

Medium
Confidence
92% confidence
Finding
Creating recharge/payment orders is unrelated to the stated trade-overview query function and introduces an account-affecting financial capability into a read-oriented skill. Even if intended for convenience, it can be abused for unauthorized billing flows, phishing-style payment redirection, or confusing users about the skill’s true scope.

Credential Access

High
Category
Privilege Escalation
Content
### **API Key Not Set**
First check if the `~/.upkuajing/.env` file has UPKUAJING_API_KEY;
If UPKUAJING_API_KEY is not set, prompt the user to choose:
1. User has one: User provides it (manually add to ~/.upkuajing/.env file)
2. User doesn't have one: You can apply using the interface (`auth.py --new_key`), the new key will be automatically saved to ~/.upkuajing/.env
Wait for user selection;
Confidence
95% confidence
Finding
.env

Credential Access

High
Category
Privilege Escalation
Content
First check if the `~/.upkuajing/.env` file has UPKUAJING_API_KEY;
If UPKUAJING_API_KEY is not set, prompt the user to choose:
1. User has one: User provides it (manually add to ~/.upkuajing/.env file)
2. User doesn't have one: You can apply using the interface (`auth.py --new_key`), the new key will be automatically saved to ~/.upkuajing/.env
Wait for user selection;

### **Account Top-up**
Confidence
94% confidence
Finding
.env

Credential Access

High
Category
Privilege Escalation
Content
"envFilePath": str(env_file)
        }

    # 保存到 .env 文件
    try:
        with open(env_file, 'w', encoding='utf-8') as f:
            f.write(f"{API_KEY_ENV}={api_key}\n")
Confidence
84% confidence
Finding
.env

Credential Access

High
Category
Privilege Escalation
Content
except IOError as e:
        return {
            "success": False,
            "message": f"API密钥申请成功,但保存到 .env 文件失败:{str(e)}。\n请手动设置环境变量 {API_KEY_ENV}。",
            "envFilePath": str(env_file)
        }
Confidence
78% confidence
Finding
.env

Unpinned Dependencies

Low
Category
Supply Chain
Content
httpx>=0.23.0
Confidence
95% confidence
Finding
httpx>=0.23.0

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

Detected: suspicious.exposed_secret_literal

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
scripts/common.py:196

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
SKILL.md:58