xhs-skill-pusher
This is a Xiaohongshu content publishing skill that stores cookies locally and uses xhs-kit for automation. While not overtly malicious, it has significant doc-to-code mismatch on shell execution and undeclared behavior.
为什么得出这个结论
1/4 个维度触发发现 3 项声明之外的能力或越权行为。
提取到 1 个一般风险产物,需要结合上下文判断。
没有形成明确的恶意路径。
发现 4 项需要关注的依赖或供应链线索。
风险分是怎么被拉高的
SKILL.md declares NONE for all resources but bin/xhs-pusher.mjs uses execSync for shell commands
pip install xhs-kit without version pin; could pull malicious updates
package.json uses ^ ranges (e.g., commander@^11.1.0) without hash verification
init command references ~/.openclaw/workspace/ for script copying without declaration
最关键的证据
Shell execution not declared in SKILL.md
SKILL.md declares all resources as NONE, but bin/xhs-pusher.mjs uses execSync() to execute shell commands (lines 24, 55, 69, 78, 90, 103, 115). Bash scripts also use subprocess.
bin/xhs-pusher.mjs:24 xhs-kit installed without version pinning
SKILL.md and scripts use 'pip install xhs-kit' without version constraints. An attacker compromising the PyPI package could push malicious updates.
SKILL.md:50 ~/.openclaw/workspace reference without disclosure
The init command references copying scripts from ~/.openclaw/workspace/ but this cross-skill integration is not documented. Could access or execute code from the parent workspace.
bin/xhs-pusher.mjs:162 NPM dependencies use unpinned version ranges
package.json uses caret ranges (^11.1.0, ^5.3.0) for all dependencies. No integrity hashes in package-lock.json.
package.json:18 Cookie storage without encryption or secure handling
Authentication cookies are saved as plaintext JSON files in xhs_cookies/. No mention of encryption-at-rest or secure deletion.
scripts/xhs_save_cookie.sh:88 声明能力 vs 实际能力
bin/xhs-pusher.mjs:24 execSync scripts/xhs_save_cookie.sh:90 mkdir + file write xhs-kit makes API calls to xiaohongshu.com xhs-kit may read env vars for auth 可疑产物与外联
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| xhs-kit | * | pip | 否 | Not pinned - could be replaced with malicious version |
| playwright | * | pip | 否 | Not pinned |
| commander | ^11.1.0 | npm | 否 | Caret range without lock file hash |
| chalk | ^5.3.0 | npm | 否 | Caret range without lock file hash |
文件构成
bin/xhs-pusher.mjs SKILL.md scripts/xhs_save_cookie.sh PUSH_GUIDE.md package.json