Back to skill

Security audit

Elderly Hand Resting-Tremor Detection | 老年人手部震颤(静止性)识别

Security checks for vulnerabilities and agentic risk

Overview

This skill may be useful, but it sends sensitive health media to a cloud service and silently reuses/stores local identities and tokens, which can mix report history in shared workspaces.

Install only if you trust the Life Emergence cloud endpoints and can ensure informed consent for the elderly subject. Avoid using this in shared or multi-user workspaces unless identity isolation is fixed, because report history and tokens may be tied to a reused default local account. Review retention/deletion expectations and protect or clear the workspace data directory that stores the SQLite database and tokens.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/smyx_elderly_hand_tremor_detection_analysis.py:59
Finding

Shared fallback identity permits cross-user access to health-analysis reports

Content
View full analysis

Vulnerability Details

File Location: scripts/smyx_elderly_hand_tremor_detection_analysis.py:59, skills/smyx_common/scripts/util.py:428-470, and skills/smyx_common/scripts/dao.py:486-498
Vulnerability Type: Improper identity isolation and shared fallback authentication
Risk Level: High

Complete Code Snippets

scripts/smyx_elderly_hand_tremor_detection_analysis.py:59:

python
OpenIdUtil.resolve_current_open_id(
    args.open_id,
    use_current=bool(args.open_id)
)

skills/smyx_common/scripts/util.py:455-470:

python
@classmethod
def resolve_current_open_id(cls, open_id=None, use_current=True):
    resolved_open_id = (open_id or "").strip() if isinstance(open_id, str) else open_id
    if not resolved_open_id and use_current:
        resolved_open_id = ConstantEnum.CURRENT__OPEN_ID or ConstantEnum.CURRENT__USER_NAME
    if not resolved_open_id:
        resolved_open_id = cls.get_api_key_file_open_id()
    if not resolved_open_id:
        resolved_open_id = cls.get_or_create_default_open_id()

    ConstantEnum.CURRENT__OPEN_ID = resolved_open_id
    if not ConstantEnum.CURRENT__USER_NAME:
        ConstantEnum.CURRENT__USER_NAME = resolved_open_id
    return resolved_open_id

skills/smyx_common/scripts/util.py:428-450:

python
@classmethod
def get_or_create_default_open_id(cls):
    from .dao import UserDao, User
    import uuid

    user_dao = UserDao()
    user = user_dao.get_first_default_user(
        cls.DEFAULT_PREFIX,
        cls.DEFAULT_USERNAME_LENGTH
    )
    if user and user.username:
        return user.username

    for _ in range(10):
        username = cls.generate_default_open_id()
        if user_dao.get_by_username(username):
            continue
        now = datetime.now()
        user = User(
            id=uuid.uuid4().hex,
            username=username,
            realname=username,
            s
...[truncated 3676 chars]
Remediation
View remediation

Remediation Suggestions

  1. Preserve the authenticated upstream identity by resolving it unconditionally:

    python
    OpenIdUtil.resolve_current_open_id(
        args.open_id,
        use_current=True
    )
    
  2. In multi-user deployments, reject analysis and history requests when no trustworthy per-user identity is available instead of silently assigning a shared account.

  3. Do not use a workspace-wide fallback identity for access to health data. If an anonymous mode is required, create an isolated identity scoped to the invoking principal or session and prohibit history queries for anonymous identities.

  4. Partition locally persisted users and credentials by authenticated upstream principal. Avoid selecting the first default user solely by a common username prefix.

  5. Enforce authorization server-side. Report-list and report-detail endpoints should derive the principal from validated authentication tokens and verify ownership of every returned record rather than trusting client-supplied usernames.

  6. Separate Agent workspace data directories where multiple users cannot be assigned reliable distinct identities.

  7. Add integration tests with two upstream identities and verify that:

    • Each identity receives distinct credentials.
    • An analysis submitted by one identity never appears in the other identity's history.
    • Missing identity context causes a safe rejection in multi-user mode.
    • A client-supplied username cannot override token-based report ownership.
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
  • YARA SignaturesMalware Match, Webshell Match, Cryptominer Match
Findings (61)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The finding describes outbound HTTP requests, identity creation/resolution, local file/database access, authentication, and token persistence with no corresponding tremor-analysis implementation. In a health setting, this combination is dangerous because it can collect, link, and persist sensitive personal and health-related data under a misleading narrow-purpose label.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The finding describes outbound HTTP requests, identity creation/resolution, local file/database access, authentication, and token persistence with no corresponding tremor-analysis implementation. In a health setting, this combination is dangerous because it can collect, link, and persist sensitive personal and health-related data under a misleading narrow-purpose label.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The finding describes outbound HTTP requests, identity creation/resolution, local file/database access, authentication, and token persistence with no corresponding tremor-analysis implementation. In a health setting, this combination is dangerous because it can collect, link, and persist sensitive personal and health-related data under a misleading narrow-purpose label.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The finding describes outbound HTTP requests, identity creation/resolution, local file/database access, authentication, and token persistence with no corresponding tremor-analysis implementation. In a health setting, this combination is dangerous because it can collect, link, and persist sensitive personal and health-related data under a misleading narrow-purpose label.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The finding describes outbound HTTP requests, identity creation/resolution, local file/database access, authentication, and token persistence with no corresponding tremor-analysis implementation. In a health setting, this combination is dangerous because it can collect, link, and persist sensitive personal and health-related data under a misleading narrow-purpose label.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The finding describes outbound HTTP requests, identity creation/resolution, local file/database access, authentication, and token persistence with no corresponding tremor-analysis implementation. In a health setting, this combination is dangerous because it can collect, link, and persist sensitive personal and health-related data under a misleading narrow-purpose label.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The finding describes outbound HTTP requests, identity creation/resolution, local file/database access, authentication, and token persistence with no corresponding tremor-analysis implementation. In a health setting, this combination is dangerous because it can collect, link, and persist sensitive personal and health-related data under a misleading narrow-purpose label.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The finding describes outbound HTTP requests, identity creation/resolution, local file/database access, authentication, and token persistence with no corresponding tremor-analysis implementation. In a health setting, this combination is dangerous because it can collect, link, and persist sensitive personal and health-related data under a misleading narrow-purpose label.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The finding describes outbound HTTP requests, identity creation/resolution, local file/database access, authentication, and token persistence with no corresponding tremor-analysis implementation. In a health setting, this combination is dangerous because it can collect, link, and persist sensitive personal and health-related data under a misleading narrow-purpose label.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The finding describes outbound HTTP requests, identity creation/resolution, local file/database access, authentication, and token persistence with no corresponding tremor-analysis implementation. In a health setting, this combination is dangerous because it can collect, link, and persist sensitive personal and health-related data under a misleading narrow-purpose label.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The finding describes outbound HTTP requests, identity creation/resolution, local file/database access, authentication, and token persistence with no corresponding tremor-analysis implementation. In a health setting, this combination is dangerous because it can collect, link, and persist sensitive personal and health-related data under a misleading narrow-purpose label.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The finding describes outbound HTTP requests, identity creation/resolution, local file/database access, authentication, and token persistence with no corresponding tremor-analysis implementation. In a health setting, this combination is dangerous because it can collect, link, and persist sensitive personal and health-related data under a misleading narrow-purpose label.

Content

No source excerpt is available for this finding.

YARA rule 'agent_skill_mcp_tool_poisoning_metadata': MCP/tool metadata poisoning indicators in tool schemas or skill manifests [agent_skills]

High
Category
YARA Match
Confidence
80% confidence
Finding

YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).

Content

Scanner excerpt · SKILL.md (reported line 3)May include surrounding context.

md
---
name: "smyx-elderly-hand-tremor-detection-analysis"
description: "Using a fixed home camera to record video of an elderly person's hand at rest (placed on a table or armrest with no voluntary movement), AI video-motion analysis detects periodic shaking, extracts tremor frequency (Hz) and amplitude (pixel displacement), and identifies the presence of resting tremor (commonly associated with Parkinson's disease and other neurological conditions). | 通过家庭固定摄像头拍摄老年人手部(置于桌面或自然静止)的视频,利用AI视频分析技术检测手部在静止状态下的周期性抖动频率(Hz)和幅度(像素�

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

This utility provides broad remote API request handling, token attachment, retry behavior, and platform integration far beyond the stated tremor-analysis purpose. In the context of a home-camera medical skill, such generalized network and auth capabilities materially increase the chance of covert data exfiltration, unauthorized service interaction, and misuse of user identity.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

This code auto-registers or retrieves remote user accounts and persists authentication tokens, which is unrelated to a hand-tremor video analysis skill. That hidden identity bootstrapping can cause unauthorized account creation, silent user impersonation, and transmission of personal identifiers to external services without clear necessity or consent.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding

The skill declares no explicit tool permissions even though the documented behavior and referenced implementation imply shell execution, network access, local file read/write, and environment usage. In an agent setting, missing scope declarations make it harder to constrain execution and can enable over-privileged operation beyond what users would reasonably expect.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest frames the skill as objective tremor analysis, while the documentation adds cloud history lookup and report-link generation as core behavior. This undisclosed expansion matters because it changes the data lifecycle from one-time analysis to remote storage and retrieval of sensitive health-related records.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill discusses cloud-based history lookup and report links but does not clearly warn that sensitive health-related analysis results may be stored and queried remotely. This weakens informed consent and increases privacy/compliance risk, especially for elderly subjects and potentially caregiver-mediated uploads.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The phrase 'when the elderly is resting' is ambiguous and could justify passive or opportunistic triggering in home-monitoring contexts. In a surveillance-adjacent health skill, vague activation criteria increase the risk of continuous or unexpected analysis of sensitive personal data.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The documentation says not to provide diagnosis or clinical advice, yet other sections mention suggestions and diagnosis-report queries. In a medical context, this inconsistency can blur the line between screening support and diagnosis, increasing the risk of overreliance, misrepresentation, and inappropriate handling of medical records.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The default trigger is broad enough to auto-run analysis whenever a relevant elderly hand-rest video is provided, without strong user intent boundaries. For sensitive health media, over-broad triggering can cause unintentional processing, remote upload, and record creation without sufficiently explicit consent.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

This code returns a fixed Chinese-language heading string for analysis output. Because the file provides no user opt-in, language selection, or documented region-specific justification, it violates the language/locale policy criteria for natural-language policy issues.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The manifest describes analysis of an elderly person's resting hand tremor, yet the implementation accepts a 'pet_type' parameter and CLI choices 'cat', 'dog', and 'other', then mutates a DEFAULT__PET_TYPE setting. That behavior is semantically unrelated to hand-tremor detection and indicates the code is not aligned with the stated skill purpose.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This code presents the tool description, argument help text, and operational messages only in Chinese. Because the file offers no language selection, fallback, or opt-in mechanism, it imposes a specific language/locale on all users, which matches the policy-violation category for language constraints.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The comment states '不要求用户输入,也不在帮助信息中展示' and implies automatic initialization of the current internal user identity. However, the call passes use_current=bool(args.open_id), which is false when no open-id is supplied, contradicting the documented intent of automatic current-user resolution.

Content

No source excerpt is available for this finding.

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