Back to skill

Security audit

Child Poor Posture (Hunchback / Head Tilt) Real-Time Reminder | 儿童坐姿不良(驼背/歪头)实时提醒

Security checks across malware telemetry and agentic risk

Overview

This skill is a disclosed cloud-based child posture analysis tool, but it silently creates or reuses an identity and stores authentication tokens while handling sensitive child video/report data.

Install only if you are comfortable sending child posture videos or video URLs to the listed cloud service and having results tied to a persistent local/remote identity. Confirm guardian consent, retention/deletion practices, and report-link access controls before using this with minors.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
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
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
92% confidence
Finding
The skill declares no permissions while its documentation instructs use of environment access, local file read/write, shell execution, and network calls. This creates a transparency and review gap: a user or platform may approve a seemingly simple posture-analysis skill without realizing it can store child videos locally, invoke scripts, and send data to remote services.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding
The stated purpose is narrow real-time posture detection, but the documented behavior includes remote account creation/login, token storage, historical report retrieval, and export-link generation from a cloud backend. This mismatch is dangerous because it hides materially broader data processing and identity-management behavior, especially involving minors' video-derived health-related data.

Description-Behavior Mismatch

Medium
Confidence
89% confidence
Finding
The documentation broadens the skill from live posture reminders to cloud-based historical report access and parent-facing report delivery. That expansion increases the sensitivity and persistence of collected child data, creating additional privacy and abuse risks beyond the user's likely expectation of transient local analysis.

Context-Inappropriate Capability

Medium
Confidence
90% confidence
Finding
The skill mandates automatic cloud API queries for historical reports even though the advertised function is posture detection and reminders. Unnecessary remote retrieval expands data exposure and creates a larger attack surface, particularly where records concern a child's monitored behavior over time.

Context-Inappropriate Capability

High
Confidence
96% confidence
Finding
Automatic creation or reuse of a local default identity is an unjustified account-management function for a posture-analysis skill. It can silently link sessions, accumulate records, and associate sensitive child monitoring data with an account without explicit user awareness or authorization.

Description-Behavior Mismatch

Medium
Confidence
89% confidence
Finding
The skill exposes a history-listing function via `show_analyze_list(open_id, ...)` that is not described in the manifest’s stated real-time posture detection purpose. In a child-monitoring context, analysis history can contain sensitive behavioral or health-related records, and surfacing it as an extra capability increases privacy and data-exposure risk, especially when tied to an internal identifier.

Description-Behavior Mismatch

Low
Confidence
81% confidence
Finding
The CLI accepts arbitrary `--url` network sources even though the skill description implies analysis of a local trusted camera feed. Allowing arbitrary URLs broadens the attack surface by enabling retrieval of untrusted remote content, potentially causing privacy issues, misuse of backend fetch functionality, or unexpected processing of attacker-controlled media.

Context-Inappropriate Capability

Medium
Confidence
94% confidence
Finding
The script initializes and uses an internal `open_id` identity flow despite the skill being framed as posture analysis. Introducing hidden identity linkage without clear necessity creates a privacy risk because child posture-analysis results may become associated with a persistent user identifier and used for history retrieval or tracking beyond the stated purpose.

Description-Behavior Mismatch

Medium
Confidence
89% confidence
Finding
The skill accepts arbitrary HTTP/HTTPS video URLs and forwards them to the backend analysis service, even though the manifest describes camera-based local posture monitoring. This creates a scope mismatch that can enable unintended ingestion of third-party or attacker-controlled remote content, potentially bypassing user expectations and any local capture-only trust boundary.

Description-Behavior Mismatch

Medium
Confidence
84% confidence
Finding
The skill exposes report listing and export-link generation features that are not described in the manifest's stated real-time posture detection/reminder behavior. Undisclosed report retrieval capabilities expand access to previously analyzed results and may expose sensitive child video-analysis outputs or metadata beyond what users would reasonably expect.

Context-Inappropriate Capability

Low
Confidence
82% confidence
Finding
The history-list feature exposes prior analysis records via `show_analyze_list(open_id)` even though the advertised function is current posture analysis. In a child-video context, retaining and exposing prior analysis history can increase privacy risk and broaden access to sensitive behavioral data if authorization or data-minimization controls are weak in the backend.

Context-Inappropriate Capability

Medium
Confidence
90% confidence
Finding
This file exposes generic network-capable CRUD wrappers (`http_post`, `http_put`, `http_get`, `http_delete`, plus `add/edit/delete/list/page`) that can send requests to caller-supplied URLs with arbitrary arguments. In a child-posture analysis skill, such broad reusable outbound request capability is unrelated to the narrowly described function and increases the risk of data exfiltration, unauthorized backend access, or repurposing the skill as a proxy if untrusted inputs can reach these methods.

Description-Behavior Mismatch

Medium
Confidence
91% confidence
Finding
This file implements generic user/account persistence, including a reusable default-user lookup, which materially exceeds the declared behavior of a child posture-detection skill. Unscoped identity management code increases the attack surface, creates unjustified data collection risk, and suggests the skill may process or retain unrelated user records.

Description-Behavior Mismatch

Low
Confidence
86% confidence
Finding
The DAO initializes and mutates a local SQLite database even though persistent storage is not described in the manifest. Undocumented storage is risky in a camera-based child-monitoring context because it can silently retain operational or personal data beyond user expectations.

Context-Inappropriate Capability

High
Confidence
98% confidence
Finding
The User model stores identity and authentication-like data including username, realname, email, token, and open_token, none of which is justified by a child posture-analysis feature. In this context, collecting and retaining such data is especially dangerous because the skill deals with children and camera-derived behavior, raising privacy, compliance, and account-compromise concerns if the database is exposed.

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
The utility performs remote account creation/login and local token persistence that are unrelated to the declared child-posture analysis function. In a camera-based child monitoring skill, hidden identity bootstrap and authentication flows materially expand data-handling scope and can cause undisclosed transmission of identifiers and tokens to external services.

Context-Inappropriate Capability

High
Confidence
97% confidence
Finding
The code reads a workspace identity file, reuses local identities, and generates default user identities without any clear connection to posture detection. This creates hidden identity state and enables the skill to act under a persistent account context without transparent user authorization, which is especially sensitive for a child-focused camera skill.

Context-Inappropriate Capability

Medium
Confidence
83% confidence
Finding
The workspace/environment inspection logic enumerates agent roots, data directories, and filesystem layout beyond what is needed for local posture detection. While it may be framework utility code, it increases the skill's reach into host context and can facilitate access to other workspace resources if reused by higher-risk code.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The skill describes ongoing monitoring of children's video, report generation, and parent delivery without a prominent upfront warning about surveillance and cloud handling. In the context of minors, insufficient notice materially increases privacy, consent, and compliance risk.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The workflow says uploaded image/video attachments are automatically saved locally, but it does not clearly warn users that sensitive child footage will be stored on disk. Local persistence of minors' data increases the risk of unauthorized access, accidental retention, or later misuse.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill states that cloud APIs will be queried directly and that remote video URLs are automatically fetched by the API service, but it does not clearly tell users that their media or URLs will be transmitted to an external service. This hidden transfer is particularly sensitive because it involves children's video and potentially health-adjacent posture assessments.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The API documentation explicitly includes complete report export and snapshot URLs for a child posture-monitoring system, but provides no privacy, access-control, retention, or consent requirements for handling highly sensitive child images and behavioral data. In this context, the omission is especially dangerous because the skill processes minors' camera feeds and posture history, so weakly specified downstream implementations can easily expose personal data, enable unauthorized report export, or leak identifiable snapshots.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The code resolves a current internal user identity implicitly and hides the related CLI option from help output. Hidden identity initialization is particularly sensitive in a child-monitoring skill because it can silently associate health/posture observations with a user account without transparent notice, undermining informed consent and increasing privacy/compliance risk.

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