Back to skill

Security audit

Query company customs trade statistics by HS code dimension — analyze HS code distribution,trade volume breakdown, and monthly trade trends. Provides trade HS code analysis, companyproduct category breakdown, import-export classification analysis and global trade codeintelligence for comprehensive trade pattern understanding.

Security checks across malware telemetry and agentic risk

Overview

This is a real paid customs-data integration, but it deserves Review because it handles API keys, account top-up flows, plaintext local credential storage, and an automatic version check/cache.

Install only if you are comfortable giving the skill access to an UpKuaJing API key and paid account workflows. Keep the API key out of shared logs, restrict permissions on ~/.upkuajing/.env, confirm every paid query or top-up action separately, and be aware the scripts perform a once-daily version check against the service.

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
93% confidence
Finding
The skill uses environment variables, reads and writes local files under the user's home directory, and performs networked operations, but those capabilities are not explicitly declared as permissions. This creates a transparency and consent gap: users may invoke a seemingly simple analytics skill without understanding it can access credentials, modify local configuration, and make paid remote calls.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding
The declared purpose is a trade-statistics query skill, but the documented behavior also includes account creation, credential provisioning/storage, balance checks, payment order generation, pricing retrieval, and remote version checks. That mismatch is dangerous because it expands the trust boundary far beyond passive querying into account and billing actions the user may not expect, increasing the risk of unintended charges, credential handling, and privacy leakage.

Description-Behavior Mismatch

High
Confidence
97% confidence
Finding
The file implements API key issuance, account lookup, pricing, and recharge-order creation, which materially exceeds the declared HS-code trade-statistics purpose of the skill. This kind of scope mismatch is dangerous because users may invoke a data-analysis skill without realizing it can manage credentials and billing state, increasing the chance of unauthorized account actions or surprise financial operations.

Context-Inappropriate Capability

Medium
Confidence
91% confidence
Finding
Creating recharge orders is unrelated to HS-code statistics analysis and introduces a payment-capable action into a data-query skill. In context, this makes the skill more dangerous because an operator expecting analytics could trigger account-funding workflows they did not intend to authorize.

Description-Behavior Mismatch

Medium
Confidence
94% confidence
Finding
This module performs outbound network access to a remote version endpoint and writes persistent state under the user's home directory, despite the skill being described only as HS-code trade-statistics analysis. That creates undeclared telemetry and persistence behavior, which expands the attack surface and can leak usage metadata or enable externally influenced behavior unrelated to the skill's business purpose.

Context-Inappropriate Capability

Medium
Confidence
92% confidence
Finding
The code implements a self-update/version telemetry mechanism by sending the skill name to an external API and comparing returned versions, which is not justified by the stated analytics purpose of the skill. Even if not overtly malicious, hidden update signaling can track deployment/use and normalizes behavior that could later be extended into more dangerous remote control paths.

Missing User Warnings

Medium
Confidence
88% confidence
Finding
The code writes a newly issued API key directly into a local .env file without an explicit pre-action warning or consent flow about credential persistence. Storing secrets by default can expose them to other local users, accidental check-ins, backups, or tooling that loads or reveals environment files.

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
91% 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
90% 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
78% 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
93% confidence
Finding
.env

Unpinned Dependencies

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