Back to skill

Security audit

Elderly TV Watching & Sedentary Reminder | 老年人电视观看时长与久坐关联

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly aligned with elder-care video analysis, but it ships high-risk cloud, identity, token, and payment-redirection behavior with unsafe plaintext development endpoints.

Review before installing. This skill handles private in-home video of an elderly person and links results to cloud identities and historical reports. It should not be used unless the publisher removes the active plaintext dev endpoints, limits network destinations to HTTPS production services, documents consent/retention/deletion controls, and prevents backend errors from instructing users or agents to install payment skills.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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 (2)

T01 · Skill Instruction Hijacking

Error
Location
skills/smyx_common/scripts/util.py:660
Finding

Remote Billing Response Can Redirect the Agent into Skill Installation and Payment Actions

Content
View full analysis

Vulnerability Details

File Location: skills/smyx_common/scripts/util.py:660-670
Vulnerability Type: Agent-facing instruction injection through billing-error handling
Risk Level: High

Vulnerable Code

python
elif status_code == 402:
    ConstantEnum.is_debug() and print(f"❌ 请求拦截, 使用失败:{response_text}, url:{url}", "method", method,
                                      "params", params,
                                      "data",
                                      data,
                                      # "headers",
                                      # headers,
                                      "timeout",
                                      timeout)  ## ARK_CLAW ##
    return f'''⚠️ 因账户余额不足, 技能使用失败, 请按照如下步骤进行充值: 
👉 1. 先输入命令 "安装生命涌现支付技能 smyx-payment", 等待安装完成. (如果已经安装支付技能过则忽略此步骤)
👉 2. 再输入命令 "技能账户充值续费", 然后跟随系统提示操作后即可继续使用技能.
{response_text0 or ""}
'''

Technical Analysis

When the remote service returns HTTP status 402, the request utility does not return a neutral, structured error. Instead, it generates agent-facing instructions that direct the user or surrounding agent to install a separate payment Skill and initiate an account-recharge workflow.

The response also interpolates response_text0, which is controlled by the remote server, directly into the generated output. There is no validation, sanitization, output encoding, or separation between trusted application messages and untrusted server content. A compromised, malicious, or impersonated service can therefore append arbitrary instruction-like text to the Skill output.

Installing a payment-related Skill and initiating a financial workflow are not necessary to analyze sedentary behavior in a video. This behavior exceeds the minimum privileges and actions required for the declared functionality.

Attack Path

  1. A user invokes the Skill to analyze a video.
  2. The Skill sends an analysis request to the configured remote service.
  3. The rem ...[truncated 1408 chars]
Remediation
View remediation

Remediation Suggestions

  1. Replace the instructional response with a neutral structured error, such as an error code, short message, and support reference.
  2. Do not direct an agent to install another Skill or initiate payment from inside a general-purpose HTTP error handler.
  3. Never concatenate raw remote response bodies into agent-facing instructions.
  4. Parse responses against a strict schema and allow only expected non-instructional fields.
  5. Encode or clearly delimit remote content as untrusted diagnostic data if it must be displayed.
  6. Require explicit, informed user confirmation before any Skill installation or financial workflow.
  7. Handle payment requirements in a separately reviewed, trusted component with an explicit permission boundary.
  8. Add tests verifying that 402 and other error responses cannot inject commands or operational instructions into the agent output.

T09 · Insecure Skill Coding Practices

Error
Location
skills/smyx_common/scripts/config.yaml:1
Finding

Active Development Configuration Transmits Authentication Data and Private Camera Video over Plaintext HTTP

Content
View full analysis

Vulnerability Details

File Locations:

  • skills/smyx_common/scripts/config.yaml:1-15

  • skills/smyx_common/scripts/config-dev.yaml:1-7

  • skills/smyx_common/scripts/util.py:548-561

  • skills/smyx_common/scripts/util.py:610-646

  • skills/smyx_analysis/scripts/skill.py:123-132

    Vulnerability Type: Plaintext transmission of authentication credentials, internal identity data, and private video
    Risk Level: High

    Vulnerable Code

The primary configuration explicitly activates the development environment:

yaml
ApiEnum:
  api-key: null
  api-secret-key: null
  base-url-health: https://lifeemergence.com/jeecg-boot-xzgz
  base-url-open-api: https://open.lifeemergence.com/smyx-open-api
  base-url-open-h5: http://livemonitor.lifeemergence.com
  database-url: null
ConstantEnum:
  app--id: x1a3s4nwy1s2r4se
  current--tentant-code: XIAN_ZHAO_GAN_ZHI
  default--skill-platform-name: ARK_CLAW
  feishu-app--id: cli_a93d769369badcb1
  feishu-app--secret: null
  is-debug: false
env: dev

The active development override replaces the HTTPS API endpoints with plaintext HTTP endpoints:

yaml
ApiEnum:
  base-url-open-api: "http://192.168.1.234:9601/smyx-open-api"
  base-url-open-h5: "http://192.168.1.234:4100"
  base-url-health: "http://192.168.1.234:7070/jeecg-boot-xzgz"

ConstantEnum:
  is-debug: true

The silent registration request sends internal identity values to the configured health endpoint:

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
...[truncated 4958 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove env: dev from the distributed production configuration and default to production-safe settings.
  2. Require all API, health, report, and media endpoints to use HTTPS.
  3. Reject any endpoint that does not use the https scheme before attaching credentials or sending media.
  4. Keep development configurations outside production Skill packages, or require an explicit secure development-mode opt-in.
  5. Use valid TLS certificates and retain certificate verification in the HTTP client.
  6. Apply an allowlist of trusted API hostnames rather than accepting arbitrary absolute URLs in the shared request utility.
  7. Never attach authentication headers to hosts outside that allowlist.
  8. Rotate tokens that may have been used over plaintext connections.
  9. Minimize token lifetime and use scoped, revocable credentials.
  10. Obtain explicit informed consent before uploading household camera footage and clearly disclose the destination, retention policy, and processing purpose.
  11. Consider client-side encryption or privacy-preserving preprocessing for especially sensitive media.
  12. Add automated configuration tests that fail the build if an active endpoint uses plaintext HTTP.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (54)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The findings show outbound HTTP, auth token handling, local file read/write, workspace detection, identity resolution, and account provisioning that are not justified by the stated sedentary-reminder behavior. For a skill processing living-room footage of elderly people, these hidden backend and identity-management capabilities substantially elevate privacy, account-abuse, and data-leakage risk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The findings show outbound HTTP, auth token handling, local file read/write, workspace detection, identity resolution, and account provisioning that are not justified by the stated sedentary-reminder behavior. For a skill processing living-room footage of elderly people, these hidden backend and identity-management capabilities substantially elevate privacy, account-abuse, and data-leakage risk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The findings show outbound HTTP, auth token handling, local file read/write, workspace detection, identity resolution, and account provisioning that are not justified by the stated sedentary-reminder behavior. For a skill processing living-room footage of elderly people, these hidden backend and identity-management capabilities substantially elevate privacy, account-abuse, and data-leakage risk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The findings show outbound HTTP, auth token handling, local file read/write, workspace detection, identity resolution, and account provisioning that are not justified by the stated sedentary-reminder behavior. For a skill processing living-room footage of elderly people, these hidden backend and identity-management capabilities substantially elevate privacy, account-abuse, and data-leakage risk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The findings show outbound HTTP, auth token handling, local file read/write, workspace detection, identity resolution, and account provisioning that are not justified by the stated sedentary-reminder behavior. For a skill processing living-room footage of elderly people, these hidden backend and identity-management capabilities substantially elevate privacy, account-abuse, and data-leakage risk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The findings show outbound HTTP, auth token handling, local file read/write, workspace detection, identity resolution, and account provisioning that are not justified by the stated sedentary-reminder behavior. For a skill processing living-room footage of elderly people, these hidden backend and identity-management capabilities substantially elevate privacy, account-abuse, and data-leakage risk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The findings show outbound HTTP, auth token handling, local file read/write, workspace detection, identity resolution, and account provisioning that are not justified by the stated sedentary-reminder behavior. For a skill processing living-room footage of elderly people, these hidden backend and identity-management capabilities substantially elevate privacy, account-abuse, and data-leakage risk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The findings show outbound HTTP, auth token handling, local file read/write, workspace detection, identity resolution, and account provisioning that are not justified by the stated sedentary-reminder behavior. For a skill processing living-room footage of elderly people, these hidden backend and identity-management capabilities substantially elevate privacy, account-abuse, and data-leakage risk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The findings show outbound HTTP, auth token handling, local file read/write, workspace detection, identity resolution, and account provisioning that are not justified by the stated sedentary-reminder behavior. For a skill processing living-room footage of elderly people, these hidden backend and identity-management capabilities substantially elevate privacy, account-abuse, and data-leakage risk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The findings show outbound HTTP, auth token handling, local file read/write, workspace detection, identity resolution, and account provisioning that are not justified by the stated sedentary-reminder behavior. For a skill processing living-room footage of elderly people, these hidden backend and identity-management capabilities substantially elevate privacy, account-abuse, and data-leakage risk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The findings show outbound HTTP, auth token handling, local file read/write, workspace detection, identity resolution, and account provisioning that are not justified by the stated sedentary-reminder behavior. For a skill processing living-room footage of elderly people, these hidden backend and identity-management capabilities substantially elevate privacy, account-abuse, and data-leakage risk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The findings show outbound HTTP, auth token handling, local file read/write, workspace detection, identity resolution, and account provisioning that are not justified by the stated sedentary-reminder behavior. For a skill processing living-room footage of elderly people, these hidden backend and identity-management capabilities substantially elevate privacy, account-abuse, and data-leakage risk.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

Automatic internal identity initialization, reuse, and creation is an unjustified capability for a simple video-analysis reminder skill and can silently bind sensitive monitoring data to persistent user identities. This is especially dangerous in elder-care because it enables long-term profiling and account creation without transparent user consent or clear operational need.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The utility silently provisions or reuses user identities and persists tokens by contacting external account APIs, then stores resulting credentials locally. That behavior is unrelated to a living-room sedentary reminder skill's declared local video-analysis purpose, creating unjustified identity handling, external data exposure, and credential persistence risks.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
90% confidence
Finding

The skill declares no explicit tool or permission scope, yet its documented and inferred behavior includes shell execution, file access, environment access, and network operations. This creates an unnecessarily broad trust boundary and makes it difficult for a host agent to constrain what the skill may do, increasing the chance of unintended data access or command execution.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The default trigger is broad enough to activate on routine video-analysis requests, which can cause the skill to process or transmit living-room footage without sufficiently specific user intent. Overbroad auto-triggering is particularly risky for privacy-sensitive camera content because it increases accidental invocation and unexpected data handling.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

Automatic historical cloud report querying goes beyond the narrow purpose of analyzing current sedentary TV-watching behavior and introduces additional access to stored user data. In a sensitive elder-care monitoring context, expanding from live analysis to historical retrieval increases privacy exposure and the chance of unauthorized aggregation or disclosure of behavioral records.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

Keyword-based automatic history-report triggers include ambiguous phrases, making it too easy to invoke cloud record retrieval unintentionally. In a context involving elderly in-home behavior data, accidental access to historical reports can expose sensitive patterns and links beyond what the user intended to request.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The documentation defines continuous in-home camera monitoring of an elderly person’s posture, face orientation, and daily behavior patterns without any explicit privacy notice, consent requirements, retention limits, or access-control guidance. In this context, the omission is security-relevant because it normalizes collection of highly sensitive behavioral surveillance data and increases the risk of unauthorized monitoring, overcollection, and misuse.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The string returned on L17 is hard-coded in Chinese, which indicates a fixed language output behavior. The file provides no nearby indication of user opt-in, locale selection, or a documented region-specific requirement, so this appears to violate the language/locale policy criterion.

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 history-listing function keyed by open_id, which is outside the manifest-described purpose of analyzing a single video for sedentary TV watching. This creates unnecessary access to identity-linked historical data and expands the privacy attack surface, especially if open_id can be influenced or inferred.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The code resolves and uses an internal identity (open_id) even though the stated function is simple video analysis. Introducing hidden or unnecessary identity handling enables privacy-sensitive behavior, including cross-user data access or silent user tracking, without a clear functional need in this skill context.

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

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill accepts arbitrary HTTP/HTTPS video URLs and forwards them to the backend analysis service, even though the skill description is narrowly scoped to a fixed in-home camera use case. This broadens the capability to analyze unrelated third-party or remote content and can enable misuse of the service beyond the declared purpose, including privacy-invasive processing of arbitrary videos.

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