Back to skill

Security audit

Query paginated port trade data for a company — retrieve port-level trade statistics with counts,amounts, and percentages for logistics analysis. Supports paginated port queries, companytrade port details, import-export port analysis and trade logistics drill-down acrossglobal customs data.

Security checks across malware telemetry and agentic risk

Overview

This is a coherent paid UpKuaJing API skill, with disclosed credential and billing support, but users should be comfortable with local API-key storage and provider network calls.

Install this only if you intend to use UpKuaJing's paid API. Prefer setting UPKUAJING_API_KEY through your normal secret-management path, keep ~/.upkuajing/.env private, and require a separate explicit confirmation before any fee-incurring query or top-up flow. Be aware the skill contacts UpKuaJing for queries and daily version checks.

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
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (15)

Lp3

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding
The skill declares only environment requirements in metadata, but the documentation clearly instructs reading and writing `~/.upkuajing/.env`, invoking scripts that perform network requests, and handling account/payment flows. This creates a capability gap that can mislead reviewers and users about the true trust boundary of the skill, increasing the chance of unauthorized credential handling or paid actions.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding
The stated purpose is a port-trade query skill, but the content also includes API key creation, credential persistence, account inspection, recharge order creation, and pricing queries. That mismatch is dangerous because a user invoking a data lookup skill may unknowingly trigger account or billing operations outside the expected scope.

Context-Inappropriate Capability

Medium
Confidence
89% confidence
Finding
The documentation instructs the agent to perform account-management and billing tasks that are not necessary for the core company port query. Even if framed as user support, embedding these flows in the skill broadens the operational scope and can lead to unintended paid transactions or credential lifecycle changes during a simple data request.

Description-Behavior Mismatch

High
Confidence
95% confidence
Finding
This file implements authentication lifecycle, account lookup, pricing, and recharge behavior that is unrelated to the declared purpose of a company port-trade analytics skill. Scope expansion like this increases attack surface and can enable unauthorized account management or monetization flows through a skill that users would reasonably expect to only query trade data.

Context-Inappropriate Capability

High
Confidence
93% confidence
Finding
Creating recharge/payment orders is financially sensitive functionality and is not justified by a read-oriented logistics analysis skill. Embedding billing operations in this context can surprise users, create abuse opportunities, and expose payment endpoints through a component that should not need them.

Context-Inappropriate Capability

Medium
Confidence
90% confidence
Finding
The code can request a new platform API key and persist it locally, which exceeds the expected behavior of a paginated port query skill. Unnecessary credential issuance and storage broadens credential exposure and may allow an analyst-facing data skill to become a credential-management surface.

Description-Behavior Mismatch

Medium
Confidence
88% confidence
Finding
This module performs outbound network version checks and emits upgrade notices even though the declared skill purpose is customs/port trade analysis. That unrelated behavior creates an unnecessary external communication path, enabling metadata leakage about installed skills and introducing a supply-chain or tracking surface that users may not expect from this skill.

Context-Inappropriate Capability

Medium
Confidence
84% confidence
Finding
The cache and telemetry-related functions persist version-check state under the user's home directory and support recurring remote check behavior unrelated to logistics analysis. While not overtly malicious, this creates hidden state and a mechanism for routine tracking of skill usage/install presence that exceeds the skill's stated function.

Missing User Warnings

Medium
Confidence
78% confidence
Finding
The optional logging helpers persist full request parameters and response bodies to local log files under the user's home directory. If enabled, sensitive trade data, API responses, or operational metadata could be written in plaintext without masking, creating unintended local data exposure to other local users, backups, or support bundles.

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
95% 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
82% 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

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

Unpinned Dependencies

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