Back to skill

Security audit

Query import/export trade trends analysis — retrieve monthly import and export trend data for a specified HS code over recent months. Returns both export and import data with monthly breakdowns including trade counts, quantities, weights, amounts, buyer counts and seller counts. Designed for trade analysts, supply chain managers and market researchers who need to analyze trade trends for specific products over time, understand seasonal patterns, compare export versus import activity and monitor market dynamics across global customs data covering 220+ countries and territories.

Security checks across malware telemetry and agentic risk

Overview

This is a disclosed paid API helper for customs trade trend queries, with expected account and API-key setup features but some plaintext credential and automatic version-check risks users should understand.

Install only if you are comfortable with this skill contacting UpKuaJing, using a metered API key, and storing that key in ~/.upkuajing/.env. Confirm any fee-incurring query or top-up flow explicitly, and consider using environment-variable injection or tighter file permissions for the API key file.

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
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (16)

Lp3

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding
The skill advertises executable capabilities that include environment access, file reads/writes, and network use, but does not declare corresponding permissions or boundaries. That makes it harder for users or the platform to understand the true trust surface and can enable unexpected access to local secrets and persistent state during normal use.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding
The stated purpose is a trade-trends query skill, but the documented behavior also includes credential enrollment, reading and persisting API keys, account/balance inspection, payment order creation, pricing queries, and version-check/network cache behavior. This scope expansion increases the attack surface and can surprise users into allowing account-affecting or secret-handling actions unrelated to the core analytics task.

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
This file implements account administration, API-key issuance, balance lookup, pricing, and recharge-order creation, which are materially unrelated to a skill advertised as read-only customs trade trend analysis. Such scope expansion increases attack surface and can enable unauthorized account, billing, or credential workflows through a skill that users would not reasonably expect to perform financial or identity-management actions.

Context-Inappropriate Capability

High
Confidence
99% confidence
Finding
The code can create recharge/payment orders via '/agent/auth/pay/url', which is an unexpected financial capability for a customs trend analysis skill. In the skill context, this is especially dangerous because users invoking analytical functionality may not anticipate billing side effects, making abuse or social engineering easier.

Context-Inappropriate Capability

Medium
Confidence
94% confidence
Finding
The script can request new API keys and persist them locally in a .env file, which is outside the declared purpose of querying trade trends. This creates unnecessary credential lifecycle functionality in the skill, increasing the chance of secret exposure, misuse, or unauthorized provisioning.

Description-Behavior Mismatch

High
Confidence
93% confidence
Finding
This module performs outbound network communication and local stateful update-management behavior that is unrelated to the declared customs trade-trends purpose. Even if intended as convenience telemetry, it expands the skill’s trust boundary, leaks skill usage metadata to a remote endpoint, and creates an unexpected control path that could be abused or become a supply-chain foothold if the server or configuration is compromised.

Context-Inappropriate Capability

Medium
Confidence
89% confidence
Finding
The code adds a hidden update-check capability that is not justified by the skill’s stated functionality and would run during normal use. In a trade analysis skill, this is suspicious because users expect data-query behavior, not background communication to a version service; such mismatches are common in covert telemetry and supply-chain staging patterns.

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
97% 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
97% confidence
Finding
.env

Credential Access

High
Category
Privilege Escalation
Content
"""
    申请新的 API 密钥。
    """
    # 检查是否已存在 .env 文件和 API key
    env_file = UPKUAJING_ENV_FILE

    if env_file.exists():
Confidence
88% confidence
Finding
.env

Credential Access

High
Category
Privilege Escalation
Content
env_file = UPKUAJING_ENV_FILE

    if env_file.exists():
        # 读取现有的 .env 文件
        try:
            with open(env_file, 'r', encoding='utf-8') as f:
                content = f.read()
Confidence
90% 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
97% 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
76% confidence
Finding
.env

Unpinned Dependencies

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

Unsafe Defaults

Medium
Category
Tool Misuse
Content
pass  # 如果读取失败,继续执行

    # 不需要认证申请新密钥
    response = make_request('/agent/auth/create', {}, require_auth=False)

    # 检查是否申请成功
    if response.get('code') != 0:
Confidence
86% confidence
Finding
auth=False

Unsafe Defaults

Medium
Category
Tool Misuse
Content
pass  # 如果读取失败,继续执行

    # 不需要认证申请新密钥
    response = make_request('/agent/auth/create', {}, require_auth=False)

    # 检查是否申请成功
    if response.get('code') != 0:
Confidence
86% confidence
Finding
require_auth=False

VirusTotal

65/65 vendors flagged this skill as clean.

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