Back to skill

Security audit

Retrieve overseas corporate employee records and internal staff rosters via targeted company ID lookup queries. Pull employee names, job titles, senioritylevels and department profiles from global enterprise databases. Recruiters, sales teams and B2B lead generation specialists streamline contact enrichment andjob position data validation workflows. Streamline talent mapping, competitor organizational chart analysis and decision-maker targeting for lead qualification.Quickly pinpoint procurement and technical core stakeholders to streamline headhunting recruitment and B2B sales lead development.

Security checks across malware telemetry and agentic risk

Overview

The skill mostly matches its stated purpose, but it needs review because it handles paid employee-data lookups while storing API keys in plaintext and performing some under-disclosed network/persistence behavior.

Review before installing if you are comfortable with a paid third-party employee-data service storing its API key in ~/.upkuajing/.env and contacting UpKuaJing during use. Avoid printing the .env file, confirm fees before each query, and do not submit raw personal, business-sensitive, or secret data in error reports.

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
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (19)

Lp3

Medium
Category
MCP Least Privilege
Confidence
96% confidence
Finding
The skill invokes Python scripts, reads environment variables, accesses files under the user's home directory, and makes network/API calls, yet it declares no explicit permissions or capability boundaries. This creates a transparency and consent problem: the platform and user may not understand that the skill can read local secrets, persist credentials, and contact external services.

Description-Behavior Mismatch

High
Confidence
97% confidence
Finding
This skill is described as an employee-profile lookup tool, but the file implements account provisioning, balance retrieval, recharge-order creation, and pricing operations. Those capabilities materially exceed the declared purpose and increase the attack surface, enabling unintended financial/account actions if the skill is invoked in broader agent workflows.

Context-Inappropriate Capability

High
Confidence
96% confidence
Finding
Recharge-order creation and API pricing lookup are unrelated to retrieving employee profiles and can trigger financial or administrative side effects. In the context of a lead-generation/employee-search skill, these hidden extra capabilities are especially risky because callers may not expect the skill to initiate billing-related workflows.

Context-Inappropriate Capability

Medium
Confidence
88% confidence
Finding
Automatic API key application and local credential storage are not necessary for a simple employee-lookup skill and introduce sensitive secret-handling behavior. Even if intended for convenience, bundling credential lifecycle management into a data-retrieval skill increases the chance of secret exposure, misuse, or unexpected account creation.

Description-Behavior Mismatch

Medium
Confidence
83% confidence
Finding
The module can persist full API request and response bodies to local log files, which may include employee profile data, company lookup parameters, and possibly sensitive business intelligence. Even though logging is disabled by default, the capability broadens data handling beyond simple retrieval and creates a risk of unintended local data retention and disclosure if enabled.

Description-Behavior Mismatch

Medium
Confidence
78% confidence
Finding
The task-management helpers store per-task metadata and results on disk, which means retrieved employee data may persist locally after use. In a skill focused on profile retrieval, this expanded persistence increases exposure surface and could leak personal or competitive intelligence data to other local users or later processes.

Description-Behavior Mismatch

High
Confidence
94% confidence
Finding
This module performs outbound network communication and writes to a local cache file even though the skill’s declared purpose is overseas employee/profile lookup. That mismatch increases supply-chain and privacy risk because the skill can contact a remote service and persist state without any obvious relation to the user-requested function, creating hidden behavior that could be abused if the endpoint or distribution channel is compromised.

Context-Inappropriate Capability

Medium
Confidence
89% confidence
Finding
The file implements self-version tracking logic unrelated to the recruiting/B2B lead-generation function of the skill. While not inherently malicious, unnecessary update telemetry and local state management enlarge the attack surface and create a stealthy mechanism for remote interaction that users may not expect from this type of skill.

Vague Triggers

Medium
Confidence
85% confidence
Finding
The trigger phrases are broad enough to match common business or recruiting queries such as competitor analysis, lead qualification, or finding decision-makers. That can cause the skill to activate in contexts where the user did not intend an external people-data lookup, leading to unexpected disclosure of user intent to a third party and unnecessary paid API usage.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill is explicitly designed to retrieve employee profiles for recruitment, competitor analysis, and B2B lead generation, but it provides no meaningful privacy, acceptable-use, or legal-compliance warning. In this context, the absence of safeguards increases the risk of misuse of personal/work-profile data, especially for profiling decision-makers or conducting unsolicited outreach.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The API documentation instructs callers to transmit request parameters, response payloads, and exception context to a central error-reporting endpoint. Although it says sensitive fields will be automatically desensitized, it does not clearly define what is redacted or require client-side minimization, so personal data, internal identifiers, tokens, or business-sensitive content may still be exposed through logs and telemetry. In this skill’s context—employee profile lookup and lead-generation data—those fields may contain personal or commercially sensitive information, making such collection more dangerous than in a low-sensitivity utility skill.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The script forwards a caller-provided 'context' field to a remote '/agent/skill/error/report' endpoint with no filtering, redaction, size limit, or consent notice in this file. Error context often contains stack traces, identifiers, request payloads, or personal data, so this can leak sensitive information from failed runs to an external service.

Missing User Warnings

Low
Confidence
86% confidence
Finding
The code sends the skill name to a remote API during version checks without any user-facing notice, consent, or visible control in this module. Although the transmitted field is limited, undisclosed outbound metadata transfer is still a transparency and privacy issue, especially in a skill whose stated purpose is unrelated to update telemetry.

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
92% confidence
Finding
The skill instructs reading `~/.upkuajing/.env` to inspect API key presence and tells users to manually place secrets there, which normalizes local secret-file access by the skill. A skill with file-read capability touching home-directory secret stores can expose credentials if mishandled, over-broaden file access, or encourage unsafe secret-management practices.

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
The follow-on instruction to check whether `UPKUAJING_API_KEY` is set by inspecting `~/.upkuajing/.env`, combined with automatic key creation and saving, expands the credential-handling surface without clear access controls. In a skill already capable of file I/O and network access, this makes credential exposure or misuse more likely if the workflow is abused or implemented loosely.

Credential Access

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

    if env_file.exists():
Confidence
93% confidence
Finding
The code explicitly manages API credentials via a local .env file path, signaling plaintext secret handling in the skill runtime. Secret storage in predictable local files can expose credentials to other local users, logs, backups, or accidental disclosure through tooling.

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
95% confidence
Finding
The script reads an existing .env file and parses out the API key, which is direct credential access behavior. In a skill whose stated purpose is employee-profile retrieval, this broad access to local secrets is more dangerous because it is unexpected and could expose or normalize insecure secret handling.

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
97% confidence
Finding
Writing the newly issued API key directly into a .env file stores a live credential in plaintext on disk. If the host is shared, backed up, indexed, or otherwise accessible, the credential can be stolen and used for unauthorized API activity or account abuse.

Unpinned Dependencies

Low
Category
Supply Chain
Content
httpx>=0.23.0
Confidence
92% confidence
Finding
The dependency is specified with a lower-bound version only, which allows installation of any newer release of httpx, including versions that may introduce breaking changes or newly disclosed vulnerabilities. This creates supply-chain and reproducibility risk because builds can resolve differently over time and may silently pull unsafe versions.

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:60