Back to skill

Security audit

Pet Poop Auto-Clean Trigger (Robot Vacuum Integration) | 宠物排便自动清理触发(联动扫地机)

Security checks for vulnerabilities and agentic risk

Overview

This skill appears to analyze pet-waste videos through a cloud service, but its silent account handling and shared local identity storage create a real privacy review concern.

Install only if you are comfortable sending pet-area videos or URLs to the configured lifeemergence.com cloud service and allowing the skill to create/reuse a local service identity. Avoid using it in shared agent workspaces unless identities and report history are isolated per user, because the current fallback identity design may let one workspace user see another user's report records or links.

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_poop_clean_trigger_analysis.py:57
Finding

Shared fallback identity permits cross-user report access in multi-user workspaces

Content
View full analysis

Vulnerability Details

File Location: scripts/smyx_poop_clean_trigger_analysis.py:57-65; skills/smyx_common/scripts/util.py:455-470
Vulnerability Type: Improper identity binding and cross-user data isolation
Risk Level: High

Complete Code Snippet

scripts/smyx_poop_clean_trigger_analysis.py:57-65:

python
try:
    # Initialize the internal user identity without requesting or displaying it.
    OpenIdUtil.resolve_current_open_id(args.open_id, use_current=bool(args.open_id))

    # Check required parameters
    if args.list:
        open_id = ConstantEnum.CURRENT__OPEN_ID
        result = show_analyze_list(open_id)
        print(result)
        exit(0)

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

python
@classmethod
def resolve_current_open_id(cls, open_id=None, use_current=True):
    """Resolve and initialize the current open-id, returning the final value."""
    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

Technical Analysis

The entry point sets use_current to bool(args.open_id). In the documented normal workflow, the hidden --open-id option is omitted, making use_current=False. Consequently, resolve_current_open_id does not use an identity already supplied through the Agent environment in ConstantEnum.CURRENT__OPEN_ID or ConstantEnum.CURRENT__USER_NAME.

Identity resolution instead falls back to a wo ...[truncated 2897 chars]

Remediation
View remediation

Remediation Suggestions

  1. Always prefer the authenticated upstream Agent identity when resolving the current user:

    python
    OpenIdUtil.resolve_current_open_id(args.open_id, use_current=True)
    
  2. Do not use a workspace-global fallback identity in multi-user deployments. Store fallback identities in a user-scoped location or disable fallback behavior when no authenticated user identity is available.

  3. Bind tokens and report records server-side to a verified upstream identity. Do not rely solely on caller-provided openId, pnaUserName, or hidden CLI arguments for authorization.

  4. If --open-id remains supported, verify that the requested identity is cryptographically associated with the authenticated caller. Reject arbitrary identity selection.

  5. Add explicit tenant and owner checks to report-list and report-detail endpoints so possession of a report identifier or shared local token cannot expose another user’s records.

  6. Separate locally cached tokens by authenticated user and tenant rather than storing all identities in a workspace-shared database without access partitioning.

  7. Add multi-user isolation tests covering two distinct upstream identities performing uploads, list queries, and report-detail access from the same workspace.

  8. Migrate reports created under existing shared fallback identities into properly separated user accounts where ownership can be established.

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
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (50)

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

External API communication, token management, local data directory access, and database-backed identity persistence are all sensitive capabilities that materially exceed the user-facing description of a pet-waste vision tool. In this context, the mismatch is more dangerous because the skill invites upload of private in-home pet videos, so undeclared identity and persistence features can create significant privacy and trust harms.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

External API communication, token management, local data directory access, and database-backed identity persistence are all sensitive capabilities that materially exceed the user-facing description of a pet-waste vision tool. In this context, the mismatch is more dangerous because the skill invites upload of private in-home pet videos, so undeclared identity and persistence features can create significant privacy and trust harms.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

External API communication, token management, local data directory access, and database-backed identity persistence are all sensitive capabilities that materially exceed the user-facing description of a pet-waste vision tool. In this context, the mismatch is more dangerous because the skill invites upload of private in-home pet videos, so undeclared identity and persistence features can create significant privacy and trust harms.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

External API communication, token management, local data directory access, and database-backed identity persistence are all sensitive capabilities that materially exceed the user-facing description of a pet-waste vision tool. In this context, the mismatch is more dangerous because the skill invites upload of private in-home pet videos, so undeclared identity and persistence features can create significant privacy and trust harms.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

External API communication, token management, local data directory access, and database-backed identity persistence are all sensitive capabilities that materially exceed the user-facing description of a pet-waste vision tool. In this context, the mismatch is more dangerous because the skill invites upload of private in-home pet videos, so undeclared identity and persistence features can create significant privacy and trust harms.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

External API communication, token management, local data directory access, and database-backed identity persistence are all sensitive capabilities that materially exceed the user-facing description of a pet-waste vision tool. In this context, the mismatch is more dangerous because the skill invites upload of private in-home pet videos, so undeclared identity and persistence features can create significant privacy and trust harms.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

External API communication, token management, local data directory access, and database-backed identity persistence are all sensitive capabilities that materially exceed the user-facing description of a pet-waste vision tool. In this context, the mismatch is more dangerous because the skill invites upload of private in-home pet videos, so undeclared identity and persistence features can create significant privacy and trust harms.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

External API communication, token management, local data directory access, and database-backed identity persistence are all sensitive capabilities that materially exceed the user-facing description of a pet-waste vision tool. In this context, the mismatch is more dangerous because the skill invites upload of private in-home pet videos, so undeclared identity and persistence features can create significant privacy and trust harms.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

External API communication, token management, local data directory access, and database-backed identity persistence are all sensitive capabilities that materially exceed the user-facing description of a pet-waste vision tool. In this context, the mismatch is more dangerous because the skill invites upload of private in-home pet videos, so undeclared identity and persistence features can create significant privacy and trust harms.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

External API communication, token management, local data directory access, and database-backed identity persistence are all sensitive capabilities that materially exceed the user-facing description of a pet-waste vision tool. In this context, the mismatch is more dangerous because the skill invites upload of private in-home pet videos, so undeclared identity and persistence features can create significant privacy and trust harms.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

External API communication, token management, local data directory access, and database-backed identity persistence are all sensitive capabilities that materially exceed the user-facing description of a pet-waste vision tool. In this context, the mismatch is more dangerous because the skill invites upload of private in-home pet videos, so undeclared identity and persistence features can create significant privacy and trust harms.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

The User model stores identity and authentication-like fields including username, realname, email, token, and open_token, despite the skill claiming only visual event detection and cleanup triggering. In this context, collecting and persisting tokens is particularly dangerous because compromise of the local SQLite database or misuse by adjacent code could expose credentials or enable account abuse far beyond the pet-monitoring function.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The code reads identity-like material from workspace files and local databases, then falls back to creating a synthetic default user if none exists. For a vision event-detection skill, harvesting or inferring local identity state is unnecessary and expands access to sensitive local context without transparent user awareness.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

This utility code goes far beyond the stated pet-waste video analysis function: it resolves identities, restores tokens from local storage, and can silently auto-register/login a remote user via /sys/phoneLogin. That creates undisclosed account-provisioning and credential-handling behavior, enabling the skill to act under a user identity and transmit authentication material to backend services unrelated to the declared purpose.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The HTTP helper attaches tokens, API keys, open tokens, and username-derived identity fields to outbound requests, and may first restore or create those credentials from local state. This is dangerous because it enables hidden transmission of authentication and identity data to external services under the guise of a pet-video analysis skill, materially exceeding user expectations and increasing account/privacy risk.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding

The skill advertises and instructs use of shell execution, local file handling, network access, environment usage, and file writes, but does not declare any corresponding tool scope or permissions boundary. This creates an under-specified trust boundary where a host may grant broader capabilities than reviewers or users expect, increasing the risk of unsafe file, shell, or network operations being executed implicitly.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The manifest says the skill only outputs vision-based event detection results, but the documented behavior also performs cloud history retrieval and returns report links. This is dangerous because it misrepresents both data flows and outputs, which can mislead users about what remote queries occur and what additional report metadata may be exposed.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill states that uploaded attachments are automatically saved locally, but the description does not clearly warn users about this persistence behavior. Because the content involves in-home video/images, undisclosed local storage increases privacy risk, retention uncertainty, and the chance of later unauthorized access from the host environment.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill auto-queries cloud APIs and retrieves report data without a clear privacy warning in the description. In a context involving home-monitoring pet videos and identity-linked report history, undisclosed outbound queries can expose sensitive metadata and undermine user expectations about local-only versus remote processing.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The documented endpoints go beyond the skill’s stated purpose of simple pet-waste event detection and include broader 'health-analysis', historical report pagination, and full report export capabilities. This creates a scope mismatch that can expose unrelated sensitive data or enable misuse of privileged backend functionality, especially if an agent or integrator assumes all listed endpoints are in-bounds for this skill.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The script exposes a hidden --list mode that retrieves historical analysis reports via skill.get_output_analysis_list(open_id=...), which goes beyond the documented purpose of analyzing a provided video and emitting a cleaning trigger. Undocumented data-access functionality increases the attack surface and can enable unauthorized report enumeration or privacy leakage, especially because it is tied to internal identity resolution rather than explicit user-scoped authorization.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The user-facing argparse description, option help text, and runtime status/error messages are presented only in Chinese. This creates a language/locale policy issue because the skill does not offer an opt-in language choice or document that it is intentionally limited to a Chinese-speaking context.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The code initializes and uses an internal user identity through OpenIdUtil.resolve_current_open_id(...) and then uses ConstantEnum.CURRENT__OPEN_ID to fetch reports, despite the skill’s stated function being video analysis rather than account-based report access. Binding hidden identity resolution to report retrieval without clear authorization boundaries risks exposing another user's analysis history or enabling confused-deputy behavior in multi-user environments.

Content

No source excerpt is available for this finding.

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

Scanner excerpt · skills/smyx_analysis/scripts/skill.py (reported line 28)May include surrounding context.

python
result_json = JsonUtil.parse(result_json_pure_text, result_json_pure_text)

        result_json_common_ai_response = result_json.get("commonAiResponse") if isinstance(result_json,
                                                                                           dict) else result_json
        if result_json_common_ai_response:
            result_json = result_json_common_ai_response

Whitespace Padding

Medium
Category
Prompt Injection
Confidence
70% confidence
Finding

Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Content

Scanner excerpt · skills/smyx_analysis/scripts/skill.py (reported line 33)May include surrounding context.

python
result_json = JsonUtil.parse(result_json_pure_text, result_json_pure_text)

        result_json_common_ai_response = result_json.get("commonAiResponse") if isinstance(result_json,
                                                                                           dict) else result_json
        if result_json_common_ai_response:
            result_json = result_json_common_ai_response

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