Back to skill

Security audit

Package Detection Skill | 包裹检测技能

Security checks across malware telemetry and agentic risk

Overview

This package-detection skill sends surveillance media and report queries to remote services while automatically creating and reusing local identity state, with several under-disclosed or mismatched behaviors users should review first.

Review before installing. Use this only if you are comfortable with surveillance images/videos and report history going to the configured remote service, automatic local identity creation, token storage in the workspace data directory, and possible payment prompts. The publisher should add explicit privacy/permissions disclosure, remove dev/private HTTP endpoints from the published config, and require user confirmation for history retrieval and account provisioning.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (18)

Dynamic attribute access via getattr()

Low
Category
Dangerous Code Execution
Content
if filters:
                for key, value in filters.items():
                    query = query.filter(getattr(self.__model__, key) == value)

            if offset:
                query = query.offset(offset)
Confidence
84% confidence
Finding
query = query.filter(getattr(self.__model__, key) == value)

Dynamic attribute access via getattr()

Low
Category
Dangerous Code Execution
Content
if filters:
                for key, value in filters.items():
                    query = query.filter(getattr(self.__model__, key) == value)

            return query.scalar()
        finally:
Confidence
84% confidence
Finding
query = query.filter(getattr(self.__model__, key) == value)

Lp3

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding
The skill instructs execution of local Python scripts, file handling, network access, and shell commands, yet declares no permissions or equivalent capability disclosures. This mismatch weakens security review and user awareness, increasing the chance that sensitive files, environment-derived identity data, or remote resources are accessed without informed approval.

Intent-Code Divergence

Medium
Confidence
88% confidence
Finding
The overview text abruptly describes chronic-disease patient monitoring instead of package detection, indicating possible copy-paste contamination or hidden scope drift. In a security context, contradictory documentation can conceal unexpected sensitive-data processing, especially health-related inference, and can cause reviewers or users to authorize a skill under false assumptions.

Context-Inappropriate Capability

Medium
Confidence
90% confidence
Finding
The CLI exposes a history/listing function through `--list` and implicit `open-id` resolution even though the skill’s declared purpose is only to detect package presence in supplied media. That creates an unnecessary data-access surface that could reveal prior analysis records or tenant/user-associated results, especially because the open-id handling is intentionally hidden from normal help output, reducing transparency and making misuse harder to notice.

Description-Behavior Mismatch

Medium
Confidence
95% confidence
Finding
The implementation is a generic media-analysis and report-retrieval wrapper, not a narrowly scoped package-detection skill as advertised. This mismatch is dangerous because users may grant access expecting a limited package-detection function, while the skill can submit arbitrary videos or files for broader analysis and return generic reports, increasing the chance of overcollection and misuse.

Context-Inappropriate Capability

Medium
Confidence
93% confidence
Finding
The skill exposes report listing and export URL generation for arbitrary prior analyses, which is broader than the stated package-detection purpose. If access control is weak upstream, this can enable unauthorized discovery of historical analyses and retrieval of report artifacts, expanding the blast radius from a single analysis request to bulk data exposure.

Context-Inappropriate Capability

Medium
Confidence
96% confidence
Finding
This file exposes generic HTTP wrapper methods (GET/POST/PUT/DELETE) that can send requests to arbitrary URLs, which is broader than the declared package-detection purpose. In an agent skill context, such unrestricted network capability can be repurposed for unintended data exfiltration, internal service access, or command-and-control style communication if other parts of the skill can influence the URL or payload.

Context-Inappropriate Capability

Medium
Confidence
92% confidence
Finding
The presence of generic add/edit/delete operations indicates the skill can perform broad state-changing API actions unrelated to a detection-only surveillance function. In this context, unnecessary mutation capabilities expand the attack surface and could be abused to alter remote records, trigger unauthorized actions, or serve as a general-purpose API client under the guise of a package-detection skill.

Context-Inappropriate Capability

High
Confidence
98% confidence
Finding
This code auto-provisions or logs into remote user accounts, retrieves tokens, and persists token state locally as part of generic request handling, which is unrelated to the stated package-detection purpose. Because it silently creates identities and authenticates against external services, it expands the skill's privileges and data flows without clear user consent, creating account abuse, privacy, and unauthorized outbound access risks.

Context-Inappropriate Capability

Medium
Confidence
95% confidence
Finding
The code injects a payment/recharge workflow into HTTP error handling, directing users to install another skill and recharge an account. That behavior is outside the declared package-detection scope and can pressure users into unrelated purchases or installations, especially when embedded in a common utility layer.

Vague Triggers

Medium
Confidence
82% confidence
Finding
The history-report trigger phrases are broad enough to cause automatic cloud report queries based on casual user wording, which can lead to unintended disclosure of report metadata or retrieval of sensitive surveillance history. This is made more dangerous by the skill's rule to auto-associate reports with an internal identity and query the cloud directly without a clear confirmation step.

Missing User Warnings

High
Confidence
97% confidence
Finding
The skill omits an explicit warning that uploaded images/videos, URLs, and history queries may be transmitted to and stored by a cloud API. Because the content involves surveillance footage and internally linked report history, users may unknowingly expose personal, location, or operationally sensitive information to remote services without informed consent.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
For local paths, the code reads the entire file and uploads its contents to a remote analysis service without any visible user-facing notice, consent, or data-minimization control in this component. In a surveillance/video context, that can transfer sensitive footage or unrelated local media off-device, creating confidentiality and privacy risk if users assume processing is local or narrowly scoped.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The utility reads an identity value from `data/smyx-api-key.txt` and uses it as an internal open-id fallback without any notice in this code path. Silent consumption of local identity material can surprise users, unintentionally link activity to a stored account, and cause unauthorized use of local credentials.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
This code creates default user identities and writes persistent local user records when no explicit open-id is provided, without warning in the execution path. Silent persistence of identities can create hidden state, misattribute actions, and make later authenticated requests occur under accounts the user did not knowingly establish.

Missing User Warnings

Medium
Confidence
98% confidence
Finding
The request utility transmits usernames, open IDs, API tokens, and related account data over the network as part of ordinary request processing, with no user-facing disclosure in this path. In a package-detection skill, this hidden identity-bearing network activity is especially concerning because it exceeds the expected scope of local vision or inventory functionality.

External Transmission

Medium
Category
Data Exfiltration
Content
"source": ConstantEnum.DEFAULT__SKILL_HUB_NAME
            }
            try:
                _response = requests.post(_url, json=_data)
                if _response.status_code == 200:
                    _response_json = _response.json()
                    if _response_json and _response_json.get("success"):
Confidence
95% confidence
Finding
requests.post(_url, json=

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

Detected: suspicious.install_untrusted_source

Install source points to URL shortener or raw IP.

Warn
Code
suspicious.install_untrusted_source
Location
skills/smyx_common/scripts/config-dev.yaml:2