Back to skill

Security audit

Pregnancy Emotion Soothing | 孕妇情绪波动舒缓

Security checks across malware telemetry and agentic risk

Overview

This skill has a coherent purpose, but it handles very sensitive pregnancy-related home or clinic audio-video, cloud uploads, spouse/emergency notifications, and silent local identity token storage without enough user control.

Review this carefully before installing. It should only be used where the pregnant person has explicitly opted in, camera/microphone capture is clearly posted, cloud upload and report retention are acceptable, notification recipients are user-chosen, and local token storage is acceptable on the machine running the skill.

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
81% confidence
Finding
Here, filter keys come from the caller-supplied filters dict and are passed directly into getattr(self.__model__, key). Although SQLAlchemy prevents raw SQL injection here, an untrusted caller can probe or access unintended model fields, trigger exceptions for invalid attributes, and bypass intended business restrictions by filtering on sensitive/internal columns such as del_flag, token, or source_id. In a skill handling highly sensitive pregnancy-related monitoring data, loose query-field exposure increases privacy and abuse risk.

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
80% confidence
Finding
The count() method has the same unrestricted dynamic field selection pattern as list(), allowing caller-controlled filter keys to target arbitrary model attributes. This can leak metadata about sensitive records by counting matches on internal fields and can facilitate unauthorized inference about user presence or token/state values.

Lp3

Medium
Category
MCP Least Privilege
Confidence
94% confidence
Finding
The skill declares no permissions while its documented operation implies shell execution, network access, and local file read/write for scripts, token persistence, and report handling. This mismatch is dangerous because it hides the real trust boundary from reviewers and users, especially for a skill processing intimate audio/video of a pregnant woman in home or clinic settings.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding
The documented purpose is emotion monitoring and soothing, but the behavior includes hidden account creation/login, token storage, local database persistence, cloud history retrieval, and generic remote AI API use without implementing the claimed intervention logic. This is dangerous because users may consent to wellness analysis while the skill actually performs broader identity and data-management actions on highly sensitive surveillance data.

Context-Inappropriate Capability

Medium
Confidence
89% confidence
Finding
Automatic cloud history querying and report-link retrieval expand the data exposure surface beyond the stated real-time soothing purpose. In a pregnancy-monitoring context, historical emotional-event records are especially sensitive and could reveal mental health patterns, routines, and relationship details if misused or overexposed.

Context-Inappropriate Capability

Medium
Confidence
92% confidence
Finding
Automatically creating or reusing a local default identity introduces hidden account-management behavior unrelated to the core analysis task. This is dangerous because it can silently bind highly sensitive pregnancy surveillance records to a persistent identity without informed consent or clear user visibility.

Description-Behavior Mismatch

Medium
Confidence
87% confidence
Finding
The documented Level 4 escalation to emergency contacts and medical/psychological referrals exceeds the manifest's stated intervention scope. Scope expansion is risky because it can trigger sensitive notifications or quasi-clinical escalation based on error-prone behavioral inference from cameras and microphones.

Description-Behavior Mismatch

Medium
Confidence
86% confidence
Finding
Daily summaries and 7-day escalation represent ongoing monitoring and longitudinal profiling beyond the core real-time soothing description. In this context, that broadens surveillance from momentary assistance to sustained behavioral tracking, increasing privacy and misuse risk.

Description-Behavior Mismatch

Medium
Confidence
93% confidence
Finding
The code accepts arbitrary http/https video URLs and forwards them for analysis, which expands the data source beyond the fixed local camera use described in the skill metadata. This can enable unexpected ingestion of third-party or attacker-controlled content, create privacy/compliance issues, and potentially facilitate SSRF-style behavior depending on how the downstream analysis service fetches URLs.

Description-Behavior Mismatch

Low
Confidence
82% confidence
Finding
The skill generates report export image links and exposes report-listing behavior that are not described in the manifest. Undocumented data access features increase the attack surface and may leak sensitive analysis outputs or identifiers to users or integrators who were not expecting retrieval/export capabilities.

Description-Behavior Mismatch

Medium
Confidence
93% confidence
Finding
This module implements a generic DAO over a shared workspace database and includes broad CRUD operations for a sys_user table, which is outside the stated scope of emotion analysis and soothing actions. In a privacy-sensitive skill involving home cameras and microphones for pregnant women, unrelated shared user-data management materially expands the attack surface and creates risk of cross-skill data access, unintended persistence, and misuse of personal information.

Context-Inappropriate Capability

Medium
Confidence
95% confidence
Finding
The User model stores identity attributes plus token and open_token fields without a clear need tied to the described soothing/emotion-detection workflow. Retaining authentication-style tokens in a local SQLite database increases the blast radius of compromise and is especially concerning given the skill's handling of intimate health-adjacent household surveillance data.

Description-Behavior Mismatch

Medium
Confidence
95% confidence
Finding
This utility code performs remote account/login flows, silently registers or logs in users, retrieves tokens, and persists user records locally. That behavior materially exceeds the stated purpose of emotion analysis and soothing, creating an unnecessary identity, credential, and data-handling surface that could enable undisclosed account creation, tracking, or backend access.

Context-Inappropriate Capability

Medium
Confidence
92% confidence
Finding
The code reads identity-like data from workspace files and inspects the agent workspace/environment to derive operational context. For a pregnancy emotion-soothing skill, this is unrelated privileged context access and can expose local environment structure and implicit identities, increasing the chance of unauthorized cross-skill data use or tracking.

Missing User Warnings

High
Confidence
98% confidence
Finding
The skill proposes continuous camera/microphone monitoring of a pregnant woman and automatic notifications to a spouse without clear, front-and-center consent and data-sharing warnings. This is especially dangerous because it involves intimate health-adjacent inferences, home/clinic surveillance, and third-party disclosure that could enable coercion, stalking, or domestic abuse.

Vague Triggers

Medium
Confidence
84% confidence
Finding
A broad default trigger can cause the skill to activate whenever users provide related audio/video, even if they did not intend intimate emotional surveillance. In a highly sensitive pregnancy context, accidental invocation may result in unnecessary cloud transfer, analysis, or report generation on private footage.

Natural-Language Policy Violations

Medium
Confidence
90% confidence
Finding
Hard-coding notifications to the husband removes the monitored person's agency and can disclose emotional-state inferences to an inappropriate or unsafe recipient. In domestic settings, this is particularly risky because relationship assumptions may be wrong and disclosure could escalate control or abuse.

Natural-Language Policy Violations

Medium
Confidence
90% confidence
Finding
Embedding husband-specific escalation in the AI role instructions reinforces a non-optional disclosure path for sensitive emotional inferences. This increases risk by normalizing third-party sharing as part of operation rather than as a separately consented user preference.

Natural-Language Policy Violations

Low
Confidence
82% confidence
Finding
Listing husband APP push as a built-in feature further codifies relationship-specific disclosure and may influence implementations toward non-consensual default sharing. While less direct than operational logic, it still contributes to unsafe design in a sensitive monitoring system.

Missing User Warnings

High
Confidence
95% confidence
Finding
This script solicits and processes extremely sensitive audio/video from a pregnant woman's home or prenatal waiting room, including inferred emotional state and conversation tone, without any explicit privacy notice, consent flow, or disclosure of handling practices. In this context, silent collection or processing of intimate home/medical data materially increases the risk of unlawful surveillance, privacy harm, and misuse of highly sensitive personal information.

Missing User Warnings

Medium
Confidence
84% confidence
Finding
The code reads arbitrary local file contents into memory and transmits them to the analysis backend without any user-facing notice or confirmation in this file. In a skill handling highly sensitive pregnancy-related video/audio, silent upload of local recordings materially raises privacy and consent risks, especially if the caller can point the skill at unintended files.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
When debug mode is enabled, HTTPConnection and urllib3 debug logging can emit full request/response metadata, which may include sensitive emotional-analysis data, tokens, user identifiers, or family conversation-derived content. In this skill context, the monitored subject is a pregnant woman in private spaces, so leakage of transmitted data is especially privacy-sensitive.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The request helper automatically injects identifying fields and credential headers, performs authenticated requests, and may transmit user-linked data without any evidence of contextual consent or minimization. Given the skill's intimate monitoring context, undisclosed network transmission of identifiers, tokens, and emotional-state-related data significantly increases privacy and abuse risk.

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
This code sends a remote POST containing openId/mobile/source values to an external login endpoint. Even if intended for service bootstrap, it is an external transmission of user-identifying data unrelated to the manifest's narrow soothing purpose, and in this context it can silently link monitored individuals to backend accounts.

Hidden Instructions

High
Category
Prompt Injection
Content
| 🔎 使用提醒 | **4 级舒缓策略递进**(mild → moderate → strong → urgent/Level 4),3 分钟未平复自动升级 |
| 🔎 使用提醒 | 单日动作上限:mild × 8 / moderate × 5 / strong × 3 / Level 4 不设上限(紧急优先) |
| 🔎 使用提醒 | 红线约束 |
| 🧑‍⚖️ 结果性质 | **禁止**对孕妇做"产前抑郁症 / 焦虑障碍 / 心境障碍"等医学诊断 |
| 🔏 隐私合规 | **禁止**长期存储孕妇隐私音视频(≤ 7 天,仅入库情绪波动事件片段) |
| 🔎 使用提醒 | **禁止**用于商业广告 / AI 训练;禁第三方共享 |
| 🔎 使用提醒 | **禁止**冷白光(≥ 4000K)或亮度 > 30 lux 的环境灯(避免刺激) |
Confidence
78% confidence
Finding
The hidden/invisible instruction indicator suggests the document may contain obfuscated content intended to influence tooling or reviewers without being plainly visible. In a security-sensitive skill manifest, hidden text is dangerous because it can conceal policy overrides, misleading constraints, or adversarial prompt content.

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