Back to skill

Security audit

Query HS code detail information for analysis reports — retrieve Chinese and English descriptions for a given HS (Harmonized System) code from customs data. Provides comprehensive product classification details to help trade professionals, analysts and import-export practitioners understand what products a specific HS code represents. Essential for tariff code lookup, product classification verification, customs code interpretation and trade data analysis preparation across global customs trade data.

Security checks across malware telemetry and agentic risk

Overview

The skill can do the advertised HS-code lookup, but it also handles local API keys, account billing flows, and undisclosed version-check persistence that users should review before installing.

Install only if you are comfortable with a paid UpKuaJing workflow where the agent may manage an API key in a local plaintext .env file, check account and balance information, create top-up payment links after confirmation, and perform a same-service version check that writes local cache state. Prefer providing an existing API key through a managed secret mechanism and avoid displaying the .env file contents in chat or logs.

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
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
Findings (17)

Lp3

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding
The skill declares itself as a simple HS-code lookup tool, but the content shows capabilities to read environment variables, access local files such as ~/.upkuajing/.env, write credentials, and make network requests. Undeclared sensitive capabilities reduce transparency and can mislead users or orchestrators about the real trust boundary, which is risky even if the behavior is partly documented later in the file.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding
The declared purpose is a narrow read-only HS code description lookup, but the documented behavior expands into account creation, credential storage, balance retrieval, payment order creation, pricing queries, and version-checking with local caching. This mismatch is dangerous because users may invoke the skill expecting a harmless lookup while it can drive billing, persist secrets locally, and perform broader networked account operations.

Description-Behavior Mismatch

High
Confidence
95% confidence
Finding
The file is an authentication and billing management script embedded in a skill advertised as a simple HS code detail lookup tool. That scope mismatch is dangerous because it enables account creation, account inspection, and payment-related operations that users would not reasonably expect from this skill, increasing the chance of unauthorized credential provisioning and billing abuse.

Context-Inappropriate Capability

High
Confidence
98% confidence
Finding
Creating recharge orders is unrelated to HS code description retrieval and introduces unnecessary financial functionality into the skill. If exposed through agent workflows, it could be abused to trigger unwanted payment flows, social-engineer users into payments, or expand the blast radius of compromise beyond data access into billing operations.

Context-Inappropriate Capability

Medium
Confidence
96% confidence
Finding
The script can request a new API key and persist it locally even though the skill is presented as a simple lookup utility. That hidden credential lifecycle behavior is risky because it expands the trust boundary, stores secrets on disk, and may provision credentials without the user's informed understanding of what the skill does.

Description-Behavior Mismatch

Low
Confidence
89% confidence
Finding
The code can persist full API request parameters and response bodies to local log files under ~/.upkuajing/logs. Even though logging is disabled by default, enabling it would silently store user lookup data and potentially sensitive API-returned content without minimization, retention controls, or user disclosure.

Context-Inappropriate Capability

Medium
Confidence
90% confidence
Finding
The module performs an outbound HTTP request to a remote version-check endpoint that is unrelated to the stated HS-code description functionality. Even if intended for maintenance, this creates unnecessary data flow and network side effects, can leak local skill usage metadata such as the skill name and timing of execution, and expands the trust boundary to an external service.

Context-Inappropriate Capability

Medium
Confidence
84% confidence
Finding
The code creates and uses a persistent cache file under the user's home directory for version-tracking state, which is unrelated to the declared HS-code lookup purpose. This introduces undeclared persistence, leaves execution artifacts on disk, and can expose usage patterns or create compliance/privacy concerns in environments expecting a stateless lookup skill.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The request/response logging functions write transmitted data to disk with no user-facing notice at the write sites and no redaction. If enabled, this creates a quiet local data retention channel for user queries and API responses that exceeds the narrow lookup expectation for the skill.

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

Credential Access

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

    if env_file.exists():
Confidence
87% 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
96% confidence
Finding
.env

Unpinned Dependencies

Low
Category
Supply Chain
Content
httpx>=0.23.0
Confidence
95% 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
91% 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
91% 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