Trust Assessment
xiaohongshu received a trust score of 10/100, placing it in the Untrusted category. This skill has significant security findings that require attention before use in production.
SkillShield's automated analysis identified 10 findings: 3 critical, 4 high, 3 medium, and 0 low severity. Key findings include Network egress to untrusted endpoints, Arbitrary command execution, Unsafe deserialization / dynamic eval.
The analysis covered 4 layers: Manifest Analysis, Static Code Analysis, Dependency Graph, LLM Behavioral Safety. The Manifest Analysis layer scored lowest at 3/100, indicating areas for improvement.
Last analyzed on February 13, 2026 (commit 13146e6a). SkillShield performs automated 4-layer security analysis on AI skills and MCP servers.
Layer Breakdown
Behavioral Risk Signals
Security Findings10
| Severity | Finding | Layer | Location | |
|---|---|---|---|---|
| CRITICAL | Network egress to untrusted endpoints HTTP request to raw IP address Review all outbound network calls. Remove connections to webhook collectors, paste sites, and raw IP addresses. Legitimate API calls should use well-known service domains. | Manifest | skills/heiheimaoya/xiaohongshu/scripts/sign_server.py:146 | |
| CRITICAL | Arbitrary command execution Python shell execution (os.system, subprocess) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/heiheimaoya/xiaohongshu/workflow.py:134 | |
| CRITICAL | Arbitrary command execution Python dynamic code execution (exec/eval/compile) Review all shell execution calls. Ensure commands are static (not built from user input), use absolute paths, and are strictly necessary. Prefer library APIs over shell commands. | Manifest | skills/heiheimaoya/xiaohongshu/scripts/stealth.min.js:7 | |
| HIGH | Dangerous call: subprocess.run() Call to 'subprocess.run()' detected in function 'render_content'. This can execute arbitrary code. Avoid using dangerous functions like exec/eval/os.system. Use safer alternatives. | Static | skills/heiheimaoya/xiaohongshu/workflow.py:134 | |
| HIGH | Arbitrary file content read and rendered to image The `workflow.py` script's `render_content` function takes a `markdown_file` path as user input. This path is then passed directly to `scripts/render_xhs_v2.py`, which opens and reads the content of the specified file. An attacker can provide a path to any readable file on the system (e.g., `/etc/passwd`, `../../.env`), causing its content to be read, converted to HTML, and rendered into a PNG image. If this image is subsequently published (as part of the skill's workflow), the sensitive data is exfiltrated. Implement strict validation for `markdown_file` paths to ensure they are within an expected, non-sensitive directory (e.g., a dedicated `output/` folder or a temporary directory) and do not allow path traversal. | LLM | workflow.py:134 | |
| HIGH | Arbitrary file upload to third-party service via Playwright The `workflow.py` script's `publish_images` function takes a list of `images` (file paths) as user input. These paths are directly passed to Playwright's `page.set_input_files()`, which reads the content of these files and uploads them to the Xiaohongshu platform. An attacker can provide paths to sensitive files (e.g., `/etc/passwd`, `~/.ssh/id_rsa`), leading to their direct upload and exfiltration to a third-party service. Implement strict validation for `images` file paths to ensure they are within an expected, non-sensitive directory (e.g., a dedicated `output/` folder) and validate file types (e.g., only allow common image formats). | LLM | workflow.py:96 | |
| HIGH | Arbitrary file upload to third-party service via API tool The `scripts/xhs_tool.py` script's `cmd_publish` function takes a list of `images` (file paths) as user input. These paths are then passed to `client.create_image_note()`, which is expected to read and upload the content of these files to Xiaohongshu. An attacker can provide paths to sensitive files (e.g., `/etc/passwd`, `~/.ssh/id_rsa`), leading to their direct upload and exfiltration to a third-party service. Implement strict validation for `images` file paths to ensure they are within an expected, non-sensitive directory (e.g., a dedicated `output/` folder) and validate file types (e.g., only allow common image formats). | LLM | scripts/xhs_tool.py:109 | |
| MEDIUM | Unsafe deserialization / dynamic eval Decryption followed by code execution Remove obfuscated code execution patterns. Legitimate code does not need base64-encoded payloads executed via eval, encrypted-then-executed blobs, or dynamic attribute resolution to call system functions. | Manifest | skills/heiheimaoya/xiaohongshu/scripts/stealth.min.js:7 | |
| MEDIUM | Missing required field: name The 'name' field is required for claude_code skills but is missing from frontmatter. Add a 'name' field to the SKILL.md frontmatter. | Static | skills/heiheimaoya/xiaohongshu/SKILL.md:1 | |
| MEDIUM | Xiaohongshu cookies stored in plain text files The skill stores sensitive Xiaohongshu session cookies in plain text files: `social-auto-upload/cookies/xhs_account.json` (generated by `xiaohongshu_cookie_gen` and used by Playwright) and potentially in the `.env` file (used by `sign_server.py` and `xhs_tool.py`). These files are not encrypted, making the credentials vulnerable to any local attacker or other compromised skill that can read these files. Implement a more secure credential management system, such as an encrypted secrets store or integration with a secrets management service, rather than storing sensitive tokens in plain text files. | LLM | SKILL.md |
Scan History
Embed Code
[](https://skillshield.io/report/2a64c5ea99c49787)
Powered by SkillShield