Back to skill

Security audit

Farrowing/Hatching Monitoring

Security checks across malware telemetry and agentic risk

Overview

The skill’s video monitoring purpose is plausible, but it also performs under-disclosed cloud identity, credential-file, token storage, and account-provisioning behavior that needs review before installation.

Install only if you are comfortable with this skill uploading or referencing monitoring footage to external Smyx/LifeEmergence services, automatically resolving or creating an account identity, reading a workspace API-key file if present, and storing local user/token data. Ask the publisher for clear endpoint, retention, credential-handling, and opt-out documentation before approving it in a sensitive farm or hatchery environment.

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

Lp3

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding
The skill manifest declares no explicit permissions, yet the content instructs use of shell execution, local file handling, environment-dependent identity behavior, and network/API access. This creates a capability/permission mismatch that can mislead a host agent or reviewer into granting broader powers than are transparently declared, increasing the chance of unsafe execution or data exposure.

Context-Inappropriate Capability

Low
Confidence
74% confidence
Finding
The history-listing feature retrieves analysis records based on an open_id, but this file shows no local authorization, scoping, or user-consent checks before invoking the backend query. In a video-analysis context, historical results may contain sensitive operational data, so exposing account-linked history beyond the stated animal-monitoring purpose increases privacy and data-access risk.

Description-Behavior Mismatch

Medium
Confidence
87% confidence
Finding
The file defines generic user-account persistence for usernames and related identity records, which is not justified by a skill whose stated purpose is monitoring animal farrowing and hatching events from video. Scope creep of identity management expands the attack surface, introduces unnecessary sensitive data handling, and creates opportunities for misuse beyond the skill's declared function.

Context-Inappropriate Capability

High
Confidence
97% confidence
Finding
The User model stores identity and authentication-related data including username, realname, email, token, and open_token, which is highly sensitive and unrelated to livestock/poultry event detection. If the local SQLite file is accessed by another component or exposed through logs, backups, or workspace sharing, these secrets and personal identifiers could be compromised.

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
This utility code performs identity resolution, token acquisition, local token caching, and external account provisioning that are unrelated to the stated farrowing/hatching video monitoring purpose. That mismatch increases the chance of covert data handling: the skill can establish backend identities and transmit user-linked data to remote services without a clear, purpose-bound justification.

Context-Inappropriate Capability

High
Confidence
99% confidence
Finding
The code reads workspace identity material from data/smyx-api-key.txt, falls back to current global identity fields, and auto-creates persistent backend users when no identity is present. For a livestock/poultry monitoring skill, this is a strong overreach in privilege and persistence: it can silently bind the skill to a user identity and create long-lived records outside the user's expectations.

Context-Inappropriate Capability

Medium
Confidence
88% confidence
Finding
The code returns billing and skill-install instructions when a remote API responds with status 402, including guidance to install another payment skill. This behavior is unrelated to the declared monitoring function and can be used to steer users into additional installations or payment actions through runtime error handling rather than transparent product flow.

Vague Triggers

Medium
Confidence
87% confidence
Finding
The historical-report trigger terms are broad enough that ordinary user requests such as asking to view reports or records could automatically invoke a cloud API call. This can cause unintended access to potentially sensitive report metadata and unexpected network actions without sufficiently precise user confirmation.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The script resolves an internal user identity implicitly and without clear user disclosure before performing actions and listing history. In the context of a monitoring/reporting skill, hidden identity binding can cause actions or history retrieval to occur under the wrong account, creating privacy leakage, unauthorized data access, or confusing attribution if the current environment is shared or misconfigured.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill sends either a local video file's full contents or a remote video URL to an external analysis service, but this file contains no user-facing notice, consent check, or data-handling warning before transmission. Because the input is continuous monitoring footage from farrowing pens or hatching areas, the data may be operationally sensitive and could expose farm layouts, processes, or other private information if users are unaware it is being uploaded.

Missing User Warnings

Medium
Confidence
84% confidence
Finding
The script accepts a hidden --api-key parameter while suppressing it from help output, which reduces transparency around credential use and handling. Hidden credential inputs can lead users or integrators to pass secrets without understanding where they are sent or how they are protected, increasing the chance of accidental exposure or insecure operational use.

Missing User Warnings

Medium
Confidence
87% confidence
Finding
The analysis function forwards a local file path or remote URL into skill.get_output_analysis, implying user-supplied video content may be transmitted to an external service without explicit warning. In this skill context, uploaded farm or hatchery video can reveal sensitive operational, location, or proprietary husbandry information, so undisclosed network transfer materially raises privacy and confidentiality risk.

Natural-Language Policy Violations

Low
Confidence
93% confidence
Finding
This configuration hard-codes test environment endpoints, including one plain HTTP URL, with debug mode enabled. In a production-deployed skill, that can route data to non-production services, weaken transport security, and increase the chance of data leakage, misconfiguration, or reliance on less-hardened infrastructure.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The function silently reads a sensitive workspace file, data/smyx-api-key.txt, and uses its contents as an identity value. Even if intended for convenience, accessing local secret material without explicit disclosure or consent creates a privacy and credential-handling risk, especially in a skill whose stated purpose does not require such access.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
This code assembles identity-bearing payload fields such as openId, mobile, source, and later sends token-bearing headers in outbound requests. Without clear user-facing disclosure, it can transmit identifiers and authentication material to external services in ways that exceed the stated animal-event monitoring purpose.

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
94% 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