Back to skill

Security audit

Pet Behavior Recognition Skill | 宠物行为识别技能

Security checks across malware telemetry and agentic risk

Overview

This skill does pet video analysis, but it also uploads media, silently creates or reuses an identity, queries cloud history, and stores account tokens in ways users should review first.

Install only if you are comfortable sending pet videos or URLs and identity-linked report data to this provider. Review the automatic identity creation/login behavior, local token storage, cloud history lookup, and the HTTP/private-network default configuration before use.

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 (33)

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
Here, filter keys come from the caller and are passed into getattr(self.__model__, key) without validation. While SQLAlchemy prevents classic SQL injection in the value comparison, an attacker or untrusted caller can trigger access to unintended model attributes or cause exceptions/logic abuse by selecting unexpected field names, especially on a generic DAO reused across contexts.

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
This count() path has the same issue as list(): untrusted filter keys are used in getattr(self.__model__, key) with no allowlist. The result is not direct SQL injection, but it can still enable unauthorized querying patterns, exception-based denial of service, or misuse of sensitive model fields in a generic persistence layer.

Lp3

Medium
Category
MCP Least Privilege
Confidence
85% confidence
Finding
The skill instructs the agent to use local files, shell commands, network access, and scripts, yet no explicit permissions are declared. This creates a transparency and governance gap: an agent may process local data and contact remote services without the user or platform having a clear permission model for those actions.

Intent-Code Divergence

Medium
Confidence
90% confidence
Finding
The skill is presented as pet behavior recognition, but the body expands into health diagnosis, disease symptom detection, and medical advice. This scope drift is dangerous because users may consent to behavior analysis while unknowingly triggering medical inference and cloud processing of more sensitive biological data.

Description-Behavior Mismatch

High
Confidence
95% confidence
Finding
The documented functionality materially exceeds the stated purpose by moving from abnormal behavior detection into disease risk detection and medical advice. This is a serious trust and safety issue because it can cause undisclosed collection, transmission, and inference on sensitive pet-health data under a narrower behavioral pretext.

Description-Behavior Mismatch

Medium
Confidence
89% confidence
Finding
The skill exposes a history/listing function via `show_analyze_list(open_id)` that goes beyond the manifest's stated purpose of analyzing pet behavior from a provided video. Any extra ability to enumerate prior analyses can expose metadata or prior results tied to a user identity, creating unnecessary access to potentially sensitive activity history.

Context-Inappropriate Capability

Medium
Confidence
93% confidence
Finding
The code initializes and relies on internal OpenID handling even though pet-behavior video analysis does not inherently require identity resolution. This expands the data collected and links analysis operations to user identity, increasing privacy risk and enabling access to account-scoped data such as analysis history without a clear need in the declared functionality.

Description-Behavior Mismatch

Medium
Confidence
89% confidence
Finding
The skill accepts arbitrary http/https URLs and forwards them to the backend analysis service, which expands the capability beyond a simple local pet-video analysis tool into a generic remote-content fetcher. This can create privacy, scope, and abuse risks because users may unknowingly cause the backend to retrieve third-party content, and the feature is not clearly constrained to trusted sources or the declared skill purpose.

Context-Inappropriate Capability

Medium
Confidence
92% confidence
Finding
The skill exposes report-listing and export-link generation functions that go beyond the stated purpose of analyzing a pet behavior video. Those capabilities can reveal prior analysis records and direct export URLs, increasing the chance of unintended data exposure if access control is weak elsewhere or callers are not properly scoped.

Context-Inappropriate Capability

Low
Confidence
83% confidence
Finding
The history-listing feature exposes prior analysis records via `skill.get_output_analysis_list(open_id=open_id)` even though this capability is not necessary for the stated task of analyzing a supplied pet video. Unnecessary data-access functionality increases privacy risk and can expose prior user activity or analysis metadata if `open_id` resolution or downstream authorization is weak.

Description-Behavior Mismatch

High
Confidence
94% confidence
Finding
This file exposes a broad, reusable API client surface including generic add/edit/delete and arbitrary HTTP verb wrappers that are not narrowly tied to pet-behavior analysis. In the context of a skill whose stated purpose is behavior detection, this unjustified capability expansion increases the risk that the skill can interact with unrelated remote services, move data off-platform, or be repurposed for unauthorized actions.

Context-Inappropriate Capability

Medium
Confidence
95% confidence
Finding
The get_user_by_username method enables user-account lookup, which is unrelated to pet-behavior detection and suggests access to identity data beyond the skill's stated purpose. Even if intended for convenience, this creates unnecessary privacy and account-enumeration risk if exposed or misused.

Context-Inappropriate Capability

High
Confidence
97% confidence
Finding
The http_post/http_put/http_get/http_delete wrappers accept arbitrary URLs and arguments, providing general-purpose outbound network access from within the skill. In a pet-behavior analysis skill, this is disproportionate capability that could be abused for data exfiltration, unreviewed third-party communication, or performing remote actions outside the declared feature set.

Description-Behavior Mismatch

Medium
Confidence
88% confidence
Finding
This file defines generic user-account persistence in a skill described as pet behavior detection, which is a notable scope mismatch. Such unnecessary identity storage expands the attack surface and increases the chance of collecting or mutating user data unrelated to the stated function, making misuse or accidental exposure more dangerous in this context.

Context-Inappropriate Capability

Medium
Confidence
92% confidence
Finding
The model stores tokens, open tokens, email, birthday, age, and real name without any visible encryption, retention limits, or justification tied to pet-behavior analysis. In a low-trust local SQLite database, this creates meaningful confidentiality risk if the file is accessed, copied, or reused by unrelated components.

Description-Behavior Mismatch

High
Confidence
93% confidence
Finding
The file defines a generic `ai_chat` interface and `AgentSkill` wrapper that are unrelated to the advertised pet-behavior-detection purpose, which expands the skill's effective capability beyond its declared scope. In agent ecosystems, hidden or overbroad LLM/agent interfaces increase the attack surface for prompt injection, data exfiltration, and unauthorized downstream actions because the host may expose this skill in contexts where only narrow domain logic was expected.

Description-Behavior Mismatch

High
Confidence
97% confidence
Finding
This utility module contains broad agent workspace discovery, directory management, identity resolution, token handling, and remote account/login plumbing that are unrelated to pet behavior analysis. In the context of a narrowly described pet behavior skill, this excess capability materially increases attack surface and enables filesystem and account-affecting behavior beyond user expectations.

Context-Inappropriate Capability

High
Confidence
98% confidence
Finding
The code creates or reuses local user identities, reads identity material from a workspace file, persists generated usernames, and sets global current identity state. For a pet behavior analysis skill, covert identity provisioning is unnecessary and dangerous because it can silently associate activity with locally derived accounts and create persistent state the user did not request.

Context-Inappropriate Capability

High
Confidence
96% confidence
Finding
The module detects agent workspaces, locates or creates data/skills directories, and is designed to support skill installation into agent environments. Those capabilities are unrelated to pet behavior detection and could be abused to modify workspace state or influence the agent's operational environment outside the skill's stated purpose.

Intent-Code Divergence

Medium
Confidence
94% confidence
Finding
The code reads a file named like an API key file and treats its contents as an internal identity/open-id. This overloading of secrets and identity material is error-prone, can cause accidental credential misuse, and makes it easier for local files intended for one trust purpose to be silently repurposed for another.

Vague Triggers

Medium
Confidence
88% confidence
Finding
The auto-trigger rules for history-report queries use broad natural-language phrases, increasing the chance that ordinary conversation will invoke cloud lookups unintentionally. In this skill's context, that could expose report metadata or cause remote access tied to an internal identity association without sufficiently specific user intent.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The skill accepts local files and URLs and later states that data is sent to a cloud API, but this transmission is not clearly disclosed up front in the main description. Users may provide local recordings believing analysis is local, which undermines informed consent and increases privacy risk.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The code reads the entire local file and uploads it to an external analysis API without any visible user-facing notice, consent, or minimization in this file. That creates a real privacy and data-handling risk because users may believe analysis is local or may not understand that potentially sensitive video content is transmitted off-device.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
The hidden `--api-key` parameter is suppressed from help output, which reduces transparency around credential handling and makes it harder for users and reviewers to understand how secrets may be supplied. Hidden secret-bearing inputs often lead to insecure operational practices, accidental exposure in shell history/process listings, and reduced auditability.

Missing User Warnings

Medium
Confidence
87% confidence
Finding
The script sends local file paths or remote video URLs to a backend analysis routine without clear user-facing disclosure that video data or references may be transmitted off-device. For a skill framed as pet behavior detection, undisclosed network transmission of user media creates privacy and data-handling risk, especially if videos contain homes, people, or location-identifying details.

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