Back to skill

Security audit

jf-open-pro-ai-pet-care

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a disclosed JF Tech pet-care API helper, but it asks users to expose live credentials and includes remote write/delete actions without strong guardrails.

Review this before installing. Use it only with least-privilege, revocable JF Tech credentials; avoid storing secrets in TOOLS.md or shell history; and treat delete, switch, and set-config actions as real remote changes that can affect pet profiles and alerts. Prefer wrapping these scripts with environment-variable or secret-manager credential handling and confirmation checks for destructive or alert-disabling operations.

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

Warning
Location
SKILL.md:108
Finding

Credentials Exposed Through Command-Line Arguments and Plaintext Workspace Storage

Content
View full analysis
` | Open-platform user UUID (required) | | `jf_appKey` | `` | Application key | | `jf_secret` | `` | Application secret | | `jf_moveCard` | `7` | Move-card identifier | | `jf_authorization` | *(empty)* | User token (JWT) | | `jf_user` | `` | User ID | | `jf_device_sn` | `` | Device serial number | ``` ``` The usage examples in `SKILL.md:128-185` direct users to pass secrets and authorization tokens as command-line arguments: ```bash python ~/.openclaw/workspace/skills/jf-open-pro-ai-pet-care/scripts/pet_care.py \ --action status \ --uuid \ --appkey \ --secret \ --auth \ --user \ --sn ``` The scripts require these sensitive arguments directly. For example, `scripts/pet_care.py:146-153` contains: ```python parser.add_argument("--action", required=True, choices=["status", "switch"], help="Operation type: status=query status, switch=change switch") parser.add_argument("--sn", required=True, help="Device serial number") parser.add_argument("--user", required=True, help="User ID") parser.add_argument("--uuid", required=True, help="Open-platform user UUID") parser.add_argument("--appke ...[truncated 4749 chars]
Remediation
View remediation
Vulnerability Patterns
  • 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
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (25)

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

声明描述的是一个较完整的宠物看护能力集合,包括异常通知、行为报告、云端视频存档。实际代码块的功能范围明显更窄,主要是异常告警查询与提醒配置管理,且包含可写操作(set-config)用于修改提醒设置。虽然“异常情况通知”与告警查询/配置相关,属于部分匹配,但“行为报告”和“云端视频存档”并未在代码中实现;视频相关也只是读取告警结果中是否存在 videoUrl,而非视频存档管理。此外,修改提醒配置属于实际存在但描述未明确提到的能力,因此构成描述与行为不一致。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

声明描述的是宠物看护平台技能,应涉及宠物状态监测、通知、报告或视频相关逻辑。但提供的代码完全没有任何宠物业务功能,也没有通知、视频、行为分析或云存储处理。相反,它实现的是开放平台接口鉴权/签名生成辅助工具,属于底层认证能力,和声明的主要用途存在明显且实质性的偏差。因此应判定为描述与实际行为不一致。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

描述将技能定位为完整的宠物看护/监控服务,强调通知、行为报告和视频存档等核心功能。但代码仅调用两个接口:一个查询宠物看护分析开关状态,另一个开启或关闭该开关。它没有任何异常检测结果读取、通知发送、行为报告生成/获取、视频访问或存档处理逻辑。相反,代码的主要用途是服务状态管理,因此与声明的主要功能存在实质性不符。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

声明描述强调的是“宠物看护”场景,包括监控告警、行为分析报告、视频存档等持续看护能力。但代码仅实现了对宠物样本/档案的管理接口:add/delete/update/list、图片预览校验、宠物类型列表查询。它访问的 API 也都是 scenepet/face/sample 和 type/list 相关端点,明显偏向宠物资料录入与识别样本管理,而非看护监控。两者主功能方向 materially different,因此应判定为描述与实际行为不匹配。

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

声明描述的是一个综合型宠物看护技能,核心能力包括异常告警、行为报告和云端视频存档,强调“全天候守护”。但提供的代码只实现了对 pet behavior statistics 的查询:count、time、day-chart、week-chart,访问的是 /scenepet/static/ 查询接口,并将结果格式化为文本或 JSON 输出。这与“详尽的宠物行为报告”部分有一定相关性,但只是其中很小的一部分,且没有看到异常检测/通知、视频相关接口、存储逻辑、定时监控或事件触发机制。因此代码的实际主要用途与声明的整体功能存在明显不匹配。

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

The file implements pet profile administration (add, delete, update, list, preview, type lookup) rather than the manifest-described monitoring, alerts, reports, and video archive functions. This capability mismatch is dangerous because it expands the skill's power into identity/profile management operations that users and reviewers would not reasonably expect, enabling unauthorized or deceptive data manipulation under a misleading skill description.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The script exposes a destructive delete_pet operation that can remove pet records through a remote API, despite the skill being presented as a monitoring/care assistant. In a mismatched-scope skill, destructive record deletion is especially risky because operators or users may invoke it without understanding that the skill has write/delete authority over backend pet data.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding

The skill documents use of Python scripts that perform network access and local shell execution, but the skill metadata does not declare any tool scope such as allowed-tools or permissions. This weakens transparency and policy enforcement, making it harder for a host agent or reviewer to constrain what the skill may invoke at runtime.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The documentation explicitly tells users to store highly sensitive secrets, including app secrets and JWT authorization tokens, in TOOLS.md on the local machine. Storing live credentials in workspace documentation increases the chance of accidental disclosure through source control, logs, backups, or other tools that can read project files, leading to account compromise and unauthorized API access.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The module header and usage text describe the file as a query script, but the implementation also performs writes through the save API. Misleading documentation is dangerous in agent environments because orchestration layers and users may trust the description when deciding whether a tool is safe to invoke, leading to unexpected state changes.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The script exposes a configuration-changing function that can enable, disable, or alter alarm behavior, even though the skill is framed primarily as pet-care monitoring and alarm querying. In an agent/tooling context, this creates a permission-scope mismatch: an agent or user expecting read-only behavior could unintentionally modify safety-relevant notifications, reducing visibility into pet emergencies or creating unauthorized changes to user preferences.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The set-config path issues a live configuration update without any user-facing confirmation, dry-run mode, or secondary acknowledgment. In a pet-monitoring context, accidental or automated disabling of alerts can directly suppress important abnormal-condition notifications, making this more dangerous than a generic preference change.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

set_switch 的定义只接收 7 个参数,但在 L085 使用了 movecard,该变量既不在函数参数中也未在函数内定义;同时主流程在 L183-L190 以 movecard=args.movecard 调用该函数。这与该函数/脚本文档所描述的“开启或关闭宠物看护服务”相矛盾:代码并不能按声明正常执行,而会因参数/变量不一致失败。

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This code requires sensitive credentials and identifiers (uuid, appkey, secret, and authorization token) as command-line inputs and then transmits them in HTTP headers to a remote API. While the functions have internal docstrings, there is no user-facing warning in the CLI help or runtime output that sensitive data will be sent over the network, which meets the missing-warning criteria for code files.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The add_pet and update_pet functions introduce backend write capabilities unrelated to the stated pet-care features of alerting, reporting, and video archival. Even if legitimate in another context, undisclosed create/modify actions increase risk of unauthorized profile tampering, misleading behavior, and abuse of stored pet biometric/image data.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The script sends authorization tokens and identifiers such as uuid, appKey, sn, and user to external HTTPS endpoints, and other functions also upload pet images. Although the code is functionally built for API access, there is no visible disclosure in the CLI help or surrounding user-facing text that these values and images will be transmitted to a remote service.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The delete action is executed immediately once --id is provided, with no interactive warning, confirmation, or safety barrier. This makes accidental or scripted destructive operations much easier, particularly in CLI or agent-driven contexts where a single mistaken invocation can permanently remove records.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This code file performs outbound HTTP POST requests carrying device serial number, user ID, UUID, and an Authorization token in headers/body, but the CLI help and docstrings do not explicitly warn users that sensitive identifiers and credentials will be sent to a remote service. Under SQP-2 for code files, network calls that transmit user or system data should include some visible disclosure unless the warning is already present in code comments, output, or accompanying markdown.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The help text says --verbose will output detailed curl commands and raw responses, implying extra diagnostic behavior. However, no later code branches on args.verbose, and the script only prints the normal formatted or JSON output, so the documentation actively misrepresents implemented behavior.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
96% confidence
Finding

The entire skill documentation forces a single language/locale experience in Chinese, including setup steps, warnings, and operational guidance. Under the policy, this is a natural-language locale constraint unless the file offers user choice or explains that the skill is intentionally region-specific.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

The example encourages storing device serial numbers, user identifiers, and pet-related metadata in TOOLS.md without emphasizing that these values are sensitive operational data. Even if less critical than secrets, such information can facilitate device targeting, privacy exposure, and correlation of accounts with physical devices.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The file's docstrings, CLI help text, and runtime messages are all hard-coded in Chinese, which imposes a specific language on all users without any opt-in or alternative locale selection. This is a natural-language policy concern when organizational guidance expects language choice rather than a fixed locale.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

This code file contains its primary natural-language documentation entirely in Chinese, including the module docstring and function comments, with no indication that Chinese is optional or that the skill is intentionally region-specific. Under the stated policy, forcing a specific language without user opt-in is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The file's natural-language interface and usage documentation are entirely in Chinese, and it does not indicate any language choice or opt-in. Under the policy rule for natural-language violations, forcing a single language without user choice can be a locale-policy issue.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
85% confidence
Finding

The --language argument defaults to zh, which imposes a specific locale unless the user explicitly overrides it. The file also presents all help text and messages in Chinese without offering a broader language choice for general CLI interaction.

Content

No source excerpt is available for this finding.