Back to skill

Security audit

Query analysis report overview data — retrieve supplier and buyer counts grouped by country for a specified HS code with cursor-based pagination. Provides aggregated trade activity distribution data to help trade analysts, market researchers and import-export professionals understand which countries are most active in trading a specific product, compare supplier versus buyer market presence and identify key target markets. Designed for comprehensive trade overview analysis, country-level trade activity assessment and strategic market entry planning across 220+ countries and territories.

Security checks across malware telemetry and agentic risk

Overview

This skill can query a paid customs-data API, but it also handles API keys, account billing actions, and automatic version checks that users should review before installing.

Install only if you are comfortable letting the skill contact UpKuaJing, use or create an UPKUAJING_API_KEY, store that key in a plaintext ~/.upkuajing/.env file, check account balances, create top-up payment URLs, and perform a daily provider version check. Confirm any paid query or top-up action before proceeding, and consider managing the API key through your own secret-storage process instead of the skill-created .env file.

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 (13)

Lp3

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding
The skill exercises sensitive capabilities—network access, environment-variable use, and reading/writing local files—without declaring equivalent permissions or clearly constraining those actions. That undermines least-privilege and reviewability, making it easier for a user or platform to authorize a seemingly narrow reporting skill that can also access credentials and persist data locally.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding
The stated purpose is a read-only overview query, but the documented behavior includes account provisioning, credential storage, balance inspection, top-up order creation, pricing queries, and local state caching. This mismatch is dangerous because users may consent to a simple data lookup while the skill also performs credential and billing-related operations with broader security and financial implications.

Description-Behavior Mismatch

High
Confidence
97% confidence
Finding
The file implements API key issuance, account lookup, recharge order creation, and pricing queries, which do not align with the declared skill purpose of analysis-overview country statistics. Capability mismatch is dangerous because it can hide credential and billing operations inside a seemingly harmless analytics skill, increasing the chance a user or host agent grants it unnecessary trust or permissions.

Context-Inappropriate Capability

High
Confidence
98% confidence
Finding
The script contains credential-management and payment-related operations unjustified by the stated analytics use case, including API key creation, balance retrieval, recharge order generation, and pricing access. In context, this broadens the attack surface beyond read-only analytics and could expose users to unauthorized account actions or social engineering under the guise of a reporting tool.

Description-Behavior Mismatch

High
Confidence
96% confidence
Finding
This module performs unrelated side effects for a data-query skill: it writes to a hidden local cache directory and makes outbound network requests to a remote version endpoint. That mismatch increases supply-chain and privacy risk because the skill can communicate externally and persist state without being necessary for its declared customs-analysis function.

Context-Inappropriate Capability

Medium
Confidence
94% confidence
Finding
The skill contains self-update checking behavior that is not justified by its stated purpose of querying report overview statistics. Unnecessary update logic expands attack surface by introducing remote dependency trust, hidden execution paths, and persistent state changes that users would not expect from an analysis-only skill.

Missing User Warnings

Low
Confidence
83% confidence
Finding
The code sends the skill name to a remote API during version checking without any user-facing disclosure in this file. While the data sent is limited, it still creates an undisclosed outbound telemetry channel that may reveal installed capabilities or usage context.

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
93% 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
93% 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
86% 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
90% 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
91% 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