Back to skill

Security audit

Elderly TV Watching & Sedentary Reminder | 老年人电视观看时长与久坐关联

Security checks across malware telemetry and agentic risk

Overview

This skill provides the advertised elderly TV sedentary analysis, but it also uploads or fetches sensitive in-home video, links results to automatic identities, queries cloud history, and stores tokens with limited user control.

Install only if you trust the publisher and the remote lifeemergence service, have clear consent from the monitored person or caregiver, and are comfortable with video-derived reports being uploaded, stored, linked to an internal identity, and later queried/exported from the cloud. Administrators should verify retention, access control, report sharing, and token storage before deployment.

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

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
79% 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
91% confidence
Finding
The skill advertises no explicit permissions, yet its instructions clearly require shell execution, network access, local file reads/writes, and environment-backed identity handling. This mismatch weakens reviewability and user/admin understanding of what the skill can do, increasing the chance of over-privileged deployment and unnoticed data handling.

Context-Inappropriate Capability

Medium
Confidence
94% confidence
Finding
The skill expands from real-time sedentary analysis into cloud history retrieval and report-link exposure, which is a broader data-access function than the stated purpose suggests. That scope expansion can enable access to historical behavioral records and remote resources without sufficiently clear user expectation or tight purpose limitation.

Context-Inappropriate Capability

Medium
Confidence
95% confidence
Finding
The skill instructs the system to auto-create and reuse internal identities, effectively introducing account association and persistence unrelated to simple video posture analysis. In a privacy-sensitive elderly-monitoring context, silent identity creation can link reports across sessions and users, increasing risk of unauthorized correlation, misattribution, or access to another person's records.

Context-Inappropriate Capability

Medium
Confidence
93% confidence
Finding
The script performs hidden identity resolution via OpenIdUtil.resolve_current_open_id() and allows listing analysis records by open_id even though the stated purpose is local/video sedentary-posture analysis. In a privacy-sensitive elderly-monitoring context, tying behavioral surveillance data to an internal identifier without clear user disclosure or strict authorization expands data access beyond the apparent function and can enable unauthorized retrieval of viewing/activity history.

Description-Behavior Mismatch

Medium
Confidence
92% confidence
Finding
The code exposes a generic video analysis/history client (`skill.get_output_analysis` and `skill.get_output_analysis_list`) rather than enforcing the narrowly declared sedentary-TV reminder behavior in the manifest. This capability mismatch is dangerous because a platform or reviewer may grant the skill access based on a health-reminder use case, while the implementation can process arbitrary videos or enumerate analysis history, expanding surveillance and data-processing scope beyond what users expect.

Intent-Code Divergence

Low
Confidence
87% confidence
Finding
The CLI descriptions and user-facing text present this as a generic 'video analysis tool,' which contradicts the manifest's specialized elderly sedentary-TV monitoring claim. While not an exploit primitive by itself, this misrepresentation increases the risk of deceptive consent, misuse of camera/video data for broader analysis, and reviewer/operator misunderstanding about what the skill really does.

Context-Inappropriate Capability

Medium
Confidence
93% confidence
Finding
This file exposes a broad, generic API wrapper with arbitrary HTTP GET/POST/PUT/DELETE plus CRUD-style helpers that are not narrowly scoped to sedentary-TV posture analysis. In the context of a camera-based elderly-monitoring skill, this excessive capability increases the attack surface and makes it easier for other parts of the skill to transmit data or invoke unrelated backend actions, violating least privilege and enabling misuse if upstream inputs are attacker-controlled.

Description-Behavior Mismatch

Medium
Confidence
91% confidence
Finding
This shared DAO persists, updates, and deletes user/account records even though the stated skill purpose is analyzing an elderly person's seated TV-watching duration from a camera feed. That capability expansion increases privacy and abuse risk by collecting and mutating identity-linked data outside the declared use case, which is especially problematic in a monitoring skill for a vulnerable population.

Context-Inappropriate Capability

High
Confidence
95% confidence
Finding
The User model stores authentication-like artifacts such as token and open_token alongside identity fields, yet the advertised skill is a living-room camera reminder system. Retaining credential-related data in a skill with no justified auth purpose materially increases the consequences of compromise, misuse, or overcollection, and creates a high-impact privacy/security mismatch.

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
The utility code performs remote authentication, token handling, and even silent account creation/login flows that are unrelated to a local elderly TV-sedentary reminder skill. This creates hidden network-side effects and identity provisioning behavior that expand the skill's capabilities far beyond its stated purpose, increasing privacy and supply-chain risk if invoked implicitly.

Context-Inappropriate Capability

Medium
Confidence
90% confidence
Finding
This code inspects environment variables and workspace layout to derive agent context and locate per-agent data directories, which is broader access than needed for a TV posture reminder. In this skill context, harvesting workspace and identity context is suspicious because the declared function is local camera analysis, not agent-environment discovery or identity management.

Context-Inappropriate Capability

High
Confidence
98% confidence
Finding
When no open-id is provided, the code can read local state, reuse an existing identity, or silently generate and persist a new default user identity. For a camera-based reminder skill, automatic identity creation and persistence are unjustified and dangerous because they enable hidden account linkage, background registration, and durable tracking without an explicit user action.

Vague Triggers

Medium
Confidence
88% confidence
Finding
The trigger phrases for historical-report access are broad enough that ordinary conversation about reports or elderly health could automatically invoke cloud queries. Ambiguous auto-triggering raises the risk of unintended remote data access and disclosure of sensitive history in response to loosely phrased requests.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
The skill says uploaded attachments or media files are automatically saved locally, but does not provide a clear user-facing warning, retention rule, or storage boundary. For living-room videos of elderly people, silent local persistence creates avoidable privacy and data-handling risk if files are retained, exposed, or reused unexpectedly.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill mandates cloud API queries for historical reports and instructs the system to return report links, yet it does not present a prominent warning that sensitive behavioral/video-derived data will be transmitted or fetched remotely. In this elderly-care surveillance context, undisclosed remote transfer materially increases privacy and compliance risk.

Missing User Warnings

Medium
Confidence
88% confidence
Finding
The document describes continuous in-home camera monitoring of an elderly person, collection of behavior metrics, and reminder outputs, but it does not pair these sensitive surveillance features with any explicit privacy, consent, retention, or access-control requirements. In this context, the omission is dangerous because implementers may deploy invasive monitoring and handling of highly sensitive behavioral data without safeguards, increasing the risk of unauthorized surveillance, misuse, or noncompliant processing.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The API documentation exposes a complete report export endpoint for health-analysis results without any warning about the sensitivity of exported data or restrictions on who may export it. Because the skill concerns elderly in-home monitoring and behavioral history, exported reports could contain highly sensitive personal and health-adjacent information, making unauthorized export or oversharing particularly harmful.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The code handles internal identity and history listing through suppressed CLI arguments and non-obvious initialization, giving operators no clear notice that identity-linked data access is occurring. For elderly camera analytics, this lack of transparency is risky because it can conceal collection or retrieval of sensitive behavioral data and make misuse harder for users to detect.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The skill accepts either a local video file or a remote video URL and forwards that content to an external analysis API, but this code provides no user-facing disclosure, consent gate, or data-handling warning. In this skill's context, the input is living-room camera footage of an elderly person, which is highly sensitive behavioral and biometric data, so silent transmission materially increases privacy and compliance risk.

Missing User Warnings

Medium
Confidence
72% confidence
Finding
The delete() method performs hard deletion with no authorization, soft-delete guardrail, audit logging, or confirmation hook in the DAO layer. If reachable from a broader skill surface, this can permanently remove user records and undermine accountability, which is more dangerous here because the file stores identity and token-related data unrelated to the skill's narrow stated purpose.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The HTTP request wrapper automatically injects usernames, tenant metadata, API keys, access tokens, and authorization headers into outbound requests, with no evident user-facing disclosure in this code path. In the context of an elderly monitoring/reminder skill, transmitting identity and authentication material off-device materially increases privacy and misuse risk, especially because it is implemented in shared utility code that may run implicitly.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The code reads an internal identity value from `data/smyx-api-key.txt` and uses it as an open-id source without any visible notice or consent flow. For a skill that should only analyze sitting posture and viewing orientation, silently pulling identity from workspace credentials is an unjustified privacy risk and can couple local use to hidden backend identity.

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=

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