Back to skill

Security audit

Hydroponic Nutrient Concentration Visual Assessment | 水培植物营养液浓度视觉评估

Security checks across malware telemetry and agentic risk

Overview

The skill is a plausible cloud-based hydroponic image analysis tool, but it silently creates or reuses an identity, stores tokens locally, and sends files or report queries to external APIs.

Install only if you are comfortable with cloud processing of plant media, automatic account association, local credential/token storage, and cloud history-report retrieval. Prefer a version that explicitly discloses destinations, retention, authentication behavior, and gives the user control before uploads or report-history queries.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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
Findings (26)

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
76% 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
76% confidence
Finding
query = query.filter(getattr(self.__model__, key) == value)

Lp3

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding
The skill advertises significant capabilities—shell execution, file read/write, environment access, and network access—without declaring permissions or clearly constraining their use. This creates a transparency and least-privilege failure: a user invoking a seemingly simple image-analysis skill may unknowingly trigger local command execution and outbound data transfer.

Description-Behavior Mismatch

Medium
Confidence
89% confidence
Finding
The manifest presents the skill as a visual nutrient-concentration assessor, but the body also implements cloud historical-report retrieval and report-link generation. This mismatch can mislead users and downstream systems about the skill's true behavior, increasing the risk of unintended data access and external communications.

Context-Inappropriate Capability

Medium
Confidence
92% confidence
Finding
The skill adds automatic cloud API querying for historical reports, which exceeds the narrowly stated purpose of analyzing submitted plant images. This broadens the data-access surface and could expose prior user reports or metadata without sufficiently clear user intent or consent.

Context-Inappropriate Capability

Medium
Confidence
94% confidence
Finding
Automatically creating and reusing a local default user identity introduces implicit account binding and cross-session data association unrelated to simple image analysis. This can cause one user's reports or history to be exposed in another context and makes identity handling opaque to the operator.

Description-Behavior Mismatch

Medium
Confidence
95% confidence
Finding
The script includes a hidden record-listing mode unrelated to the advertised purpose of nutrient assessment. It retrieves prior analysis data keyed to an internal user identity, which creates an unnecessary data-access surface and could expose historical records if invoked by unauthorized users or in the wrong execution context.

Context-Inappropriate Capability

Medium
Confidence
94% confidence
Finding
The code resolves an internal open_id even though the tool is presented as a simple local/image URL analysis utility, and the identity parameter is hidden from normal help output. Hidden identity handling increases the risk of confused-deputy behavior, unintended account scoping, or silent access to user-associated backend data without clear operator awareness or consent.

Context-Inappropriate Capability

Medium
Confidence
91% confidence
Finding
The skill accepts arbitrary http/https URLs and forwards them for analysis without any allowlist, origin restriction, or safety gate. In skill context, the stated purpose is fixed-camera hydroponic assessment, so arbitrary remote URL ingestion is unnecessary and increases risk of SSRF-like behavior, unexpected external fetching, privacy leaks, or abuse of backend network access if the downstream service dereferences attacker-controlled URLs.

Description-Behavior Mismatch

High
Confidence
92% confidence
Finding
The implementation materially diverges from the stated skill purpose: a hydroponic image-based nutrient assessment skill instead exposes generic video analysis and history-listing behavior. This kind of capability mismatch is dangerous because it can mislead users, reviewers, and policy enforcement systems about what data the skill processes and what backend actions it performs, enabling unauthorized collection or analysis of unrelated media.

Intent-Code Divergence

Medium
Confidence
88% confidence
Finding
The CLI help text and function descriptions repeatedly present this as a generic video analysis tool, contradicting the manifest's narrowly scoped hydroponic image-analysis purpose. Misleading operational documentation increases the risk of misuse and hidden functionality, especially where users may submit broader media content than intended and where security reviewers rely on the declared scope to assess data exposure.

Description-Behavior Mismatch

Medium
Confidence
92% confidence
Finding
This module exposes broad generic request helpers and CRUD-style wrappers that are not constrained to the hydroponic image-analysis purpose described in the manifest. In an agent skill context, arbitrary outbound HTTP capabilities materially expand the attack surface and can enable unintended data access, exfiltration, or interaction with unrelated internal or external services if other parts of the skill can influence the URL or payloads.

Context-Inappropriate Capability

High
Confidence
95% confidence
Finding
The add/edit/delete methods and raw http_post/http_put/http_delete wrappers provide unjustified capability to modify arbitrary remote resources without visible authorization, destination restriction, or business-scope checks. In a skill that should primarily analyze plant imagery and return nutrient recommendations, these write-capable network primitives could be abused to perform unauthorized state changes on external systems or to act as a proxy for harmful API operations.

Description-Behavior Mismatch

High
Confidence
97% confidence
Finding
The file implements generic user-account persistence, identity lookup, and default-user selection logic that does not align with the stated hydroponic image-analysis function. Capability mismatch is dangerous because it introduces hidden data-handling behavior, expands the attack surface, and may enable collection or persistence of user identity data users would not expect from this skill.

Context-Inappropriate Capability

High
Confidence
98% confidence
Finding
The User model stores token and open_token fields along with profile data, yet the skill description does not justify authentication-token handling. Retaining tokens in a local SQLite database increases the risk of credential theft, lateral movement, and privacy violations if the workspace or database file is accessed by other components or users.

Context-Inappropriate Capability

High
Confidence
98% confidence
Finding
The utility establishes and persists user identity outside the stated hydroponic image-analysis purpose by reading a workspace credential file, falling back to local database records, and auto-generating identities. It also supports creating and storing user records for later reuse, which expands data collection and account linkage without clear necessity or user disclosure, increasing privacy and account abuse risk.

Description-Behavior Mismatch

High
Confidence
99% confidence
Finding
The request helper can perform arbitrary authenticated HTTP GET/POST/PUT/DELETE operations, injects stored tokens into headers, and triggers user login/registration flows. That capability is far broader than the manifest's claimed camera/image nutrient assessment behavior, so the skill could act as a general authenticated API client and transmit user-linked data to external services without clear functional justification.

Vague Triggers

Medium
Confidence
83% confidence
Finding
The default trigger is broad enough to auto-activate the skill for general hydroponic image-analysis requests, potentially invoking networked processing and report features without clear boundaries. Overbroad triggering increases the chance of accidental execution, unintended data handling, and confusing tool-selection behavior.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The skill does not clearly warn users that uploaded images/videos and report queries may be sent to external API services. This undermines informed consent and can lead to unintentional disclosure of sensitive imagery, URLs, or historical report metadata to third parties.

Missing User Warnings

Medium
Confidence
83% confidence
Finding
The code reads the entire local file into memory and transmits it to an analysis API without any user-facing notice in this file about upload, retention, or destination. For a skill processing potentially sensitive plant imagery or facility footage, silent transmission can create privacy, compliance, and data-handling risks, especially if operators assume analysis is local.

Missing User Warnings

Medium
Confidence
68% confidence
Finding
This code performs automatic schema migration on persisted user data at startup without any approval, backup, or integrity safeguards. In a shared agent workspace, silent mutation of user-related tables can cause data corruption, unauthorized retention expansion, or operational surprises that weaken security governance around personal data.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
Debug mode enables low-level HTTPConnection and urllib3 logging, which can expose request URLs, parameters, payloads, response bodies, and potentially authentication material in logs. Because this skill also handles tokens and user identity, verbose transport logging materially increases the chance of credential and sensitive data leakage.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The code silently reads an identity value from workspace data/smyx-api-key.txt and uses it as an internal open-id. This creates undisclosed identity reuse across runs and potentially across agents, which is unnecessary for a plant-image assessment skill and can lead to unauthorized account association or privacy leakage.

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
96% confidence
Finding
requests.post(_url, json=

Hidden Instructions

High
Category
Prompt Injection
Content
|---|---|
| 📚 文档读取 | 仅在需要时读取参考文档,保持上下文简洁 |
| 📁 格式支持 | 输入要求:支持 jpg/png 图像或 mp4/avi/mov 视频,最大 10MB;建议根部与叶部分别拍摄 |
| 🧑‍⚖️ 结果性质 | 评估结果仅供水培养护参考,严重过浓/严重过稀建议立即换液并观察 24 小时 |
| 🚫 脚本限制 | 禁止临时生成脚本,只能用技能本身的脚本 |
| 🌐 网络地址 | 传入的网络地址参数,不需要下载本地,默认地址都是公网地址,api 服务会自动下载 |
| 📜 报告输出 | 当显示历史分析报告清单的时候,从接口返回 json 数据中提取字段  作为超链接地址,且自动转化为如下 Markdown |
Confidence
90% confidence
Finding

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