Back to skill
Skillv1.0.1
ClawScan security
天津安信华瑞科技有限公司-可燃气体报警器主机-配套技能 · ClawHub's context-aware review of the artifact, metadata, and declared behavior.
Scanner verdict
SuspiciousMar 28, 2026, 3:09 PM
- Verdict
- suspicious
- Confidence
- medium
- Model
- gpt-5-mini
- Summary
- The skill mostly matches its stated purpose (QuecPython Modbus → HTTP reporting), but the included template hardcodes external endpoints (client upload URL and an OTA URL) and performs network/identity collection (IMEI/IMSI/CCID) which could leak device identifiers if left unchanged — review and remove/replace defaults before deployment.
- Guidance
- This package is generally coherent with its described purpose, but pay attention before deploying: 1) Change URL_CLIENT to your customer's HTTP endpoint — do not rely on the template default (iot.tranthing.com) unless you intentionally want that vendor to receive your data. 2) If you don't want remote firmware updates, set URL_OTA to an empty string; otherwise verify and trust the OTA server (the default points to a tcloudbase.com domain). 3) The template will include device identifiers (IMEI/IMSI/CCID) and cellular info in reports — confirm that sending these to the configured endpoint is allowed by your data/privacy policy. 4) Review build_payload() and main.py to ensure the JSON format and fields match customer requirements and that no extra endpoints are contacted. 5) Test on an isolated device/network before production to confirm behavior (report frequency, OTA behavior, and that logs/prints do not leak secrets).
Review Dimensions
- Purpose & Capability
- noteName/description, SKILL.md, and the provided Python files are coherent: this is a QuecPython template to read AX100 Modbus data and post JSON to an HTTP endpoint. All included modules (modbus, sensor, LED, main) are directly relevant. However, the template config.py contains default external endpoints (URL_CLIENT -> iot.tranthing.com, URL_OTA -> a tcloudbase.com domain). Those defaults are not required to develop the skill (the skill's purpose is to adapt/report to a customer's URL) and could cause unintended outbound data delivery if users do not override them.
- Instruction Scope
- okSKILL.md instructs the agent to gather customization parameters, edit the template (usually config.py), and upload files to the QuecPython module then enable main.py as auto-run. It does not ask the agent to read unrelated host files or secrets. The runtime code will read device identifiers (IMEI/IMSI/CCID) and cell/signal info — expected for device reporting but worth noting as sensitive data collected and included in payloads.
- Install Mechanism
- okNo install spec — instruction-only with code templates. Nothing is downloaded or executed on the host during skill installation; the code is intended to be uploaded to the target IoT module via QPYcom. This is lower risk from the platform-install perspective.
- Credentials
- noteThe skill requests no environment variables or host credentials (none declared). At runtime (on the device) it collects and reports IMEI, IMSI, ICCID and cellular info plus sensor data. Collecting these identifiers is reasonable for device reporting, but they are sensitive; the default hardcoded URL_CLIENT and URL_OTA in config.py mean those identifiers would be sent to third-party servers unless the integrator changes them.
- Persistence & Privilege
- noteSkill flags show no elevated agent privileges (always=false) and no persistent install actions on the developer platform. However, the template includes OTA checking (URL_OTA and import app_fota in main.py). If the OTA URL is left enabled, the device may fetch firmware/updates from the configured remote server — this is a normal device feature but increases risk if the OTA server is untrusted.
