Ae1
- Category
- analysis-evasion
- Confidence
- 100% confidence
- Finding
Referenced artifact was not completely inspected
- Content
md OpenClaw 里不要使用交互终端。每次用户请求都执行一次 `scripts/migu_ai_guide_client.mjs`。
Security audit
Security checks for vulnerabilities and agentic risk
This skill is a disclosed Migu AI guide client that sends user questions or selected images to Migu's service using a user-provided JWT, with no evidence of hidden execution, exfiltration, or destructive behavior.
Install only if you are comfortable giving this skill a Migu JWT and sending guide questions or selected images to gulangyu.migudm.cn. Treat the JWT like a password, avoid sharing it in chat logs or screenshots, restrict access to the saved token file, delete or rotate it when finished, and do not upload private images unless you intend to transmit them to the remote service.
Referenced artifact was not completely inspected
OpenClaw 里不要使用交互终端。每次用户请求都执行一次 `scripts/migu_ai_guide_client.mjs`。
The skill documents network access, environment-variable token loading, local file access, and credential handling, but it declares no explicit tool scope or permissions boundary. This increases the chance that the runtime grants broader-than-expected capabilities and makes it harder for reviewers and users to understand that the skill can read secrets and send data off-host.
The skill instructs users to upload local images and send JWT-authenticated requests to a remote service, but it does not provide a clear privacy warning about what data leaves the machine or that uploaded images may contain sensitive metadata/content. In this context, users could unknowingly transmit personal photos, location data, or proprietary information to a third-party endpoint.
The skill tells users to extract JWTs from browser traffic and save them locally, but it does not clearly emphasize that these tokens are sensitive bearer credentials that can grant account access if exposed. Storing or piping such tokens without strong warnings, secure storage guidance, and least-retention handling materially increases the risk of credential theft or accidental leakage.
The --no-bearer option disables the Authorization header while the client still places the JWT in the WebSocket URL query string via buildUrl(). Query-string tokens are more likely to be exposed through logs, proxies, error messages, browser/debug tooling, and intermediary telemetry, so this option creates a less safe authentication mode and can encourage credential leakage without a strong need.
args.saveTokenFile = next();
break;
case "--no-bearer":
args.bearerAuth = false;
break;
case "--bearer":
args.bearerAuth = true;
The script places the token in the WebSocket URL query string and then opens a remote WebSocket connection that transmits user questions and prompts. There is no user-facing disclosure in normal execution warning that authentication data and user-provided content are being sent to an external service.
This code reads a local image file and posts its contents to a remote HTTPS endpoint using the provided bearer token. While the behavior is functionally necessary, the script provides no user-facing notice at upload time unless verbose mode is enabled, and there is no inline comment or docstring warning that local file data will be transmitted externally.
The description states that the skill generates Chinese narration from uploaded images, which imposes a specific language behavior. Because no user language choice or opt-in is offered, this appears to violate the language/locale policy requirement.
The example question text is written in Chinese ("介绍成都"), which suggests the skill or request format may assume a fixed language context. Because the file does not indicate that language selection is optional or user-configurable, this can conflict with policies against forcing a specific language without opt-in.
Using "latest" for the ws dependency makes builds non-reproducible and allows future upstream releases to change behavior or introduce a vulnerable or malicious version without any code change in this repository. In a skill that handles WebSocket connections and token-related logic, silently pulling a new dependency version increases supply-chain risk and can affect runtime security or stability.
"check": "node --check scripts/migu_ai_guide_client.mjs"
},
"dependencies": {
"ws": "latest"
}
}
The usage examples and default prompt strings are written in Chinese, including defaults like "讲解图片中的内容" and example queries such as "介绍成都", with no indication that users may choose another language. This can be a locale policy issue because the skill implicitly steers interaction into a specific language without explicit opt-in.
No suspicious patterns detected.