Back to skill

Security audit

Pet Climbing Frame / Cat Tree Activity Heatmap | 宠物爬架/猫树活动热力图

Security checks for vulnerabilities and agentic risk

Overview

This pet video analysis skill has a coherent cloud-analysis purpose, but it silently creates or reuses cloud identities and stores service tokens, so it needs careful review before installation.

Install only if you are comfortable sending cat-tree video files or URLs, which may show private home areas, to the configured LifeEmergence cloud APIs and having cloud reports associated with a locally persisted identity. The publisher should replace the hidden caller-controlled identity flow with an authenticated, user-approved login flow and provide clear consent, token storage, and report-retention controls.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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)

T05 · Unauthorized Access and Privilege Escalation

Error
Location
scripts/smyx_pet_climbing_frame_heatmap_analysis.py:45
Finding

Caller-Controlled Identity Can Enable Cloud Account Impersonation

Content
View full analysis

Vulnerability Details

File Location: scripts/smyx_pet_climbing_frame_heatmap_analysis.py:45,55; skills/smyx_common/scripts/util.py:548-562,580-599,610-623
Vulnerability Type: Improper authentication and trust of a caller-supplied identity
Risk Level: High

Relevant Code

The command-line entry point accepts a hidden but directly callable identity parameter and uses it to initialize the current identity without authenticating ownership:

python
parser.add_argument("--open-id", required=False, help=argparse.SUPPRESS)
python
# Initialize the internal user identity.
OpenIdUtil.resolve_current_open_id(args.open_id, use_current=bool(args.open_id))

The resolved identity is subsequently used as both the openId and mobile value in a silent login or registration request:

python
def _get_or_create_user(username):
    _url = ApiEnum.BASE_URL_HEALTH + "/sys/phoneLogin"
    open_id = username
    _data = {
        "silent": 1,
        "register": 1,
        "openId": open_id,
        "mobile": username,
        "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"):
                return _response_json and _response_json.get("result")
    except Exception as _e:
        CommonUtil.trace_exception_stack(_e)
    return {}

Tokens returned for that asserted identity are stored and attached to subsequent API calls:

python
if not ApiEnum.TOKEN or not ApiEnum.OPEN_TOKEN:
    new_current_user = _get_or_create_user(current__user_name)
    if new_current_user:
        ApiEnum.TOKEN = new_current_user.get("token")
        ApiEnum.OPEN_TOKEN = new_current_user.get("openToken")

        current_user_info = new_current_user.get("userInfo")
  
...[truncated 3715 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove --open-id from the public command-line entry point. Hiding an argument from help output does not prevent unauthorized use.
  2. Accept identity only from a trusted integration channel, not from ordinary CLI arguments, files, or other caller-controlled values.
  3. Require a signed identity assertion containing an issuer, audience, subject, expiration time, and nonce. Validate all fields before initializing the current identity.
  4. Change the server authentication flow so that knowledge of an openId or mobile identifier is never sufficient to obtain tokens. Require proof of account ownership or a pre-authenticated upstream session.
  5. Separate registration from login and prohibit silent registration or login for arbitrary caller-selected identifiers.
  6. Bind cached tokens to the authenticated principal and trusted issuer. Do not reuse a token merely because a local username matches an asserted identifier.
  7. Reject identity changes after a process has established its authenticated principal.
  8. Add authorization tests proving that one caller cannot retrieve another user’s reports by supplying that user’s identifier.
  9. Invalidate any tokens previously issued through an identity-only silent-login flow and review stored account mappings for unauthorized associations.
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 (46)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill appears to automate user identity creation, backend login, token acquisition/reuse, workspace discovery, and arbitrary API calling while presenting itself as a cat-video analysis tool. Hidden authentication and token-handling logic are especially dangerous because they can create unauthorized persistence, unexpected account linkage, and broad backend reach under misleading pretenses.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill appears to automate user identity creation, backend login, token acquisition/reuse, workspace discovery, and arbitrary API calling while presenting itself as a cat-video analysis tool. Hidden authentication and token-handling logic are especially dangerous because they can create unauthorized persistence, unexpected account linkage, and broad backend reach under misleading pretenses.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill appears to automate user identity creation, backend login, token acquisition/reuse, workspace discovery, and arbitrary API calling while presenting itself as a cat-video analysis tool. Hidden authentication and token-handling logic are especially dangerous because they can create unauthorized persistence, unexpected account linkage, and broad backend reach under misleading pretenses.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill appears to automate user identity creation, backend login, token acquisition/reuse, workspace discovery, and arbitrary API calling while presenting itself as a cat-video analysis tool. Hidden authentication and token-handling logic are especially dangerous because they can create unauthorized persistence, unexpected account linkage, and broad backend reach under misleading pretenses.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill appears to automate user identity creation, backend login, token acquisition/reuse, workspace discovery, and arbitrary API calling while presenting itself as a cat-video analysis tool. Hidden authentication and token-handling logic are especially dangerous because they can create unauthorized persistence, unexpected account linkage, and broad backend reach under misleading pretenses.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill appears to automate user identity creation, backend login, token acquisition/reuse, workspace discovery, and arbitrary API calling while presenting itself as a cat-video analysis tool. Hidden authentication and token-handling logic are especially dangerous because they can create unauthorized persistence, unexpected account linkage, and broad backend reach under misleading pretenses.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill appears to automate user identity creation, backend login, token acquisition/reuse, workspace discovery, and arbitrary API calling while presenting itself as a cat-video analysis tool. Hidden authentication and token-handling logic are especially dangerous because they can create unauthorized persistence, unexpected account linkage, and broad backend reach under misleading pretenses.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill appears to automate user identity creation, backend login, token acquisition/reuse, workspace discovery, and arbitrary API calling while presenting itself as a cat-video analysis tool. Hidden authentication and token-handling logic are especially dangerous because they can create unauthorized persistence, unexpected account linkage, and broad backend reach under misleading pretenses.

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

The YARA hit for metadata/tool poisoning indicators is suspicious in a skill manifest because attackers can embed manipulative metadata or hidden characters to influence tool selection, parsing, or review. Although the evidence shown is limited, this deserves concern because the skill already exhibits mismatches between declared purpose and broader backend capabilities.

Content

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

md
---
name: "smyx-pet-climbing-frame-heatmap-analysis"
description: "Triggers when a user provides a cat climbing frame / cat tree area video URL or file for analysis; supports local video uploads or network URLs to call server-side APIs for multi-region activity recognition, analyzing dwell time on each layer, jump/transition counts, and generating a 2D activity heatmap to evaluate exercise volume and mental wellbeing (without diagnosing diseases). Application scenarios: cat climbing frame + camera, pet behavior monitoring, cat health management. Development reason: quantify cat activity distribution and enrichment usage. | 当用户提供猫爬�

Intent-Code Divergence

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The docstring states that ai_chat calls the openclaw agent command through subprocess, implying an external command execution side effect. In reality, all subprocess logic and command construction are commented out, and the method instead assigns result to an empty dict, so the documented behavior directly contradicts the actual code.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The utility code manages persistent user identities and default open-id creation by reading workspace files and storing/reusing identities in a local database, which is unrelated to cat activity heatmap analysis. This creates hidden identity state and enables the skill to act under an internal account context without clear user consent, increasing the risk of unauthorized service access and cross-skill account coupling.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The HTTP helper automatically performs remote account registration/login, retrieves tokens, and persists them locally before making API calls. For a pet video analytics skill, silently creating or reusing remote identities is overprivileged behavior and could cause undisclosed data transmission or service use under a non-user-selected identity.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
90% confidence
Finding

The skill declares broad capabilities that imply shell, filesystem, environment, and network access, but it does not define any explicit tool scope or least-privilege restrictions. In an agent setting, this increases the blast radius of prompt injection or implementation abuse because the runtime may permit more powerful actions than users expect.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill does not clearly warn users that local uploads and provided URLs are transmitted to server-side/cloud APIs, nor that historical report retrieval is cloud-backed. This is a privacy and transparency issue: users may share videos of their home environment or network resources without informed consent about remote processing and retention.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The trigger conditions are broad enough to auto-invoke on vague references to cat activity, reports, or uploaded media. In combination with the skill's network, shell, and persistence capabilities, ambiguous triggering raises the risk of unintended data exfiltration or execution without clear user intent.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The method returns a fixed Chinese-language string, which indicates the skill output is forced to a specific locale. The provided file shows no user choice, fallback, or documented justification for this language constraint.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The script exposes a secondary '--list' mode that retrieves a user's prior analysis history, but this capability is not reflected in the stated skill purpose of analyzing a provided video. Hidden data-access features expand the effective permission scope of the skill and can disclose prior user activity or stored analysis results without clear user expectation or consent.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The script initializes an internal identity mechanism via OpenIdUtil even when performing local CLI analysis, which is not obviously necessary for direct video processing. Introducing hidden identity resolution broadens data collection and can enable correlation of analyses to internal user accounts, especially when combined with the undisclosed history-listing function.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The call to resolve_current_open_id uses a hidden '--open-id' parameter and suppressed help text, causing internal identity linkage to occur without clear disclosure. This is dangerous because users may believe they are only analyzing a pet video while the tool silently binds the action to an internal identity, creating privacy and auditability risks.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The file is entirely written in Chinese and presents the API documentation as the sole expected language, with no indication that users can choose another language or that the locale restriction is intentional and justified. Under the policy, forcing a specific language without user opt-in can be a natural-language policy violation.

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

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill returns fixed Chinese strings like 分析报告结构化结果 and 获取报告导出图片链接, and similar hardcoded Chinese messages appear throughout the file. This forces a specific language/locale in user-visible responses without any apparent user opt-in or documented locale constraint.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The code reads the entire local video file into memory and sends it to a remote analysis API without any user-facing disclosure, consent check, or visible warning in this execution path. Because pet-area videos can capture homes, people, and other sensitive environmental details, silent transmission to a server creates a real privacy and data-handling risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The script accepts an --api-key argument but suppresses it from help output, giving users no visible indication that credential material may be provided or used. For code files, access to sensitive credentials should have some form of user disclosure such as a comment, help text, or visible logging/warning.

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