Back to skill

Security audit

Query top N suppliers or buyers by trade volume — retrieve ranked lists of suppliers or buyers for a given country pair and year, with cursor-based pagination for seamless browsing. Enables comprehensive supplier and buyer ranking analysis to identify key trade partners and assess market concentration. Designed for sourcing agents, export teams and trade analysts who need to identify top trading counterparts, evaluate supplier market share and analyze buyer concentration for strategic procurement and sales planning across global customs data.

Security checks across malware telemetry and agentic risk

Overview

This is a paid trade-data query skill, but it needs review because it handles API keys, account top-ups, and an automatic version check with persistent local writes.

Install only if you are comfortable with this skill using a paid UpKuaJing account, storing an API key in a local plaintext file, creating top-up payment URLs when you ask it to, and making an automatic version-check request during API use. Do not share terminal output that may include `~/.upkuajing/.env`, and review charges before confirming any query or top-up action.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
Findings (12)

Lp3

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding
The skill declares no permissions while its documented behavior requires reading environment variables, accessing local files, writing to ~/.upkuajing/.env, and making network requests. This mismatch weakens user consent and security review because the actual capability surface is broader than the declared one.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding
The skill is presented as a trade-ranking query tool, but the documented workflow also includes API key issuance, credential storage, account inspection, recharge order creation, payment URL generation, and local caching/version-check behavior. That hidden expansion of functionality increases attack surface and can lead users to authorize sensitive account or payment actions they did not expect from a simple query skill.

Description-Behavior Mismatch

High
Confidence
96% confidence
Finding
This file implements API key provisioning, account inspection, and recharge/payment-order creation, which are materially unrelated to a skill whose stated purpose is querying top-N customs suppliers/buyers. Such out-of-scope account-management functionality expands the attack surface and can be abused to create or manipulate paid accounts and billing state if the skill is invoked in an unexpected context.

Context-Inappropriate Capability

High
Confidence
95% confidence
Finding
The exposed CLI operations `--new_rec_order` and `--price_info`, together with account functions nearby, add billing and platform-account capabilities that are unjustified by the declared top-N customs overview use case. In a skill context, hidden or unrelated monetization/account actions are risky because they can trigger financial operations or leak commercial account metadata outside the user’s expected workflow.

Description-Behavior Mismatch

High
Confidence
96% confidence
Finding
This module performs outbound network access and persistent filesystem writes that are unrelated to the stated trade-ranking purpose of the skill. In a skill context, hidden side-effect behavior expands the trust boundary, creates unnecessary data exposure, and can enable unexpected communications with remote infrastructure whenever the skill is used.

Context-Inappropriate Capability

Medium
Confidence
91% confidence
Finding
A self-update or remote version-check capability is not justified by the business function of a customs trade overview skill and introduces unnecessary external dependency and communication. Even without active exploitation, this increases attack surface because compromise of the remote endpoint or configuration could influence user behavior or future execution paths.

Missing User Warnings

Low
Confidence
88% confidence
Finding
The code sends the skill name to a remote API without any user-facing notice, which is an undisclosed telemetry behavior. While the transmitted data is limited, silent outbound reporting can violate user expectations and becomes more sensitive in environments where installed skill names reveal internal workflows or interests.

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

Unpinned Dependencies

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

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