安全决策报告

xhs-fav-export

主脚本 skill.mjs 行为正常,但存在未声明的阴影功能 wc3-code.mjs:一个经过严重混淆的 LLM 调用工具,可读取本地文件并将内容 POST 到远程端点,与声明的「小红书收藏导出」功能完全无关。

安装决策优先 来源: ClawHub 扫描时间: 19 天前
文件 5
IOC 7
越权项 1
发现 4
最直接的威胁证据
严重 代码混淆
wc3-code.mjs 严重混淆代码

该文件使用 hex 编码字符串 (_0x58ce15, _0x4d13 等)、自定义解码函数、自变量混淆等手法,完全不可读。混淆是逃避静态分析和人工审查的典型手法。

wc3-code.mjs:1

为什么得出这个结论

2/4 个维度触发
阻止
声明与实际能力

发现 1 项声明之外的能力或越权行为。

复核
隐藏执行与外联

提取到 7 个一般风险产物,需要结合上下文判断。

阻止
攻击链与高危发现

报告包含 4 步攻击链,另有 3 项高危或严重发现。

复核
依赖与供应链卫生

没有完整依赖信息,供应链判断需要保留弹性。

攻击链

01
用户安装 xhs-fav-export skill(伪装成小红书收藏导出工具)

初始入口 · SKILL.md:1

02
攻击者可通过 wc3-code.mjs 读取本地任意文件(--prompt-file 参数)

权限提升 · wc3-code.mjs:1

03
文件内容通过 HTTP POST 发送到攻击者控制的 LLM_ENDPOINT

权限提升 · wc3-code.mjs:1

04
完成数据外泄(配置文件、.env、源代码等均可被窃取)

最终危害 · wc3-code.mjs:1

风险分是怎么被拉高的

阴影功能未声明 +25

wc3-code.mjs 存在但 SKILL.md 完全未提及,文档-行为严重不符

代码混淆规避检测 +20

wc3-code.mjs 使用 hex 编码字符串、自定义解码器、变量名混淆等反分析技术

未声明的网络访问 +15

wc3-code.mjs 向 LLM_ENDPOINT 发送 HTTP POST,SKILL.md 仅声明使用 Extension Relay 本地端口

文件读取+远程外传 +8

wc3-code.mjs 可读取本地文件并 POST 到远程端点,存在数据外泄路径

最关键的证据

严重 代码混淆

wc3-code.mjs 严重混淆代码

该文件使用 hex 编码字符串 (_0x58ce15, _0x4d13 等)、自定义解码函数、自变量混淆等手法,完全不可读。混淆是逃避静态分析和人工审查的典型手法。

wc3-code.mjs:1
必须解码或删除此文件。该文件不是正常开源工具的代码风格。
严重 文档欺骗

阴影功能:未声明的 LLM 调用能力

wc3-code.mjs 实现了一个 LLM 调用工具:读取本地文件内容,通过 HTTP POST 发送到 LLM_ENDPOINT (默认读取 process.env.WC3_LLM_ENDPOINT),将 LLM 响应写入指定输出文件。此功能完全未在 SKILL.md 中声明,与「小红书收藏导出」毫无关系。

wc3-code.mjs:1
删除 wc3-code.mjs。如需 LLM 能力,应在 SKILL.md 中明确声明并说明用途。
高危 供应链

skill-card.md 已知但未处理的风险

skill-card.md 的 Known Risks and Mitigations 部分已承认:'Server security evidence flags an obfuscated, undocumented LLM helper that does not match the stated export purpose.' 但该文件仍在发布包中,未被移除或修复。

skill-card.md:28
删除 wc3-code.mjs 文件,而非仅在文档中警告。
中危 数据外泄

wc3-code.mjs 可将本地文件内容外传

wc3-code.mjs 支持 --prompt-file 参数读取本地文件,结合 --output 将 LLM 响应写入文件。攻击路径:读取任意本地文件内容 → POST 到攻击者控制的 LLM_ENDPOINT → 数据外泄。

wc3-code.mjs:1
确认 WC3_LLM_ENDPOINT 环境变量的来源和可信度。如果来自不可信来源,攻击者可窃取文件内容。

声明能力 vs 实际能力

文件系统 通过
声明 WRITE
推断 WRITE
skill.mjs:289 writeFileSync 输出 md 文件
网络访问 阻止
声明 READ
推断 WRITE+READ
wc3-code.mjs:1 混淆代码 POST 到 LLM_ENDPOINT,SKILL.md 未声明
命令执行 通过
声明 NONE
推断 NONE
skill.mjs 无 shell 调用
技能调用 通过
声明 NONE
推断 NONE
无子 skill 调用

可疑产物与外联

中危 外部 URL
http://127.0.0.1:3459

README.md:12

中危 外部 URL
https://www.xiaohongshu.com/user/profile/

README.md:36

中危 外部 URL
https://www.xiaohongshu.com/explore/

README.md:61

中危 外部 URL
https://clawhub.ai/user/fatmind

skill-card.md:9

中危 外部 URL
https://clawhub.ai/fatmind/skills/xhs-fav-export

skill-card.md:39

中危 外部 URL
https://www.xiaohongshu.com/

skill.mjs:27

中危 外部 URL
https://www.xiaohongshu.com/user/profile/$

skill.mjs:388

依赖与供应链

没有结构化依赖告警。

文件构成

5 个文件 · 731 行
JavaScript 2 个文件 · 522 行Markdown 3 个文件 · 209 行
需关注文件 · 4
skill.mjs JavaScript · 521 行
https://www.xiaohongshu.com/ · https://www.xiaohongshu.com/user/profile/$
wc3-code.mjs JavaScript · 1 行
wc3-code.mjs 严重混淆代码 · 阴影功能:未声明的 LLM 调用能力 · wc3-code.mjs 可将本地文件内容外传
README.md Markdown · 76 行
http://127.0.0.1:3459 · https://www.xiaohongshu.com/user/profile/ · https://www.xiaohongshu.com/explore/
skill-card.md Markdown · 57 行
skill-card.md 已知但未处理的风险 · https://clawhub.ai/user/fatmind · https://clawhub.ai/fatmind/skills/xhs-fav-export
其他文件 · SKILL.md

安全亮点

主脚本 skill.mjs 代码结构清晰,注释完整,与 SKILL.md 声明一致
skill.mjs 仅通过本地 Extension Relay (127.0.0.1:3459) 操作浏览器,无远程网络访问
skill.mjs 无 shell 执行、无凭证访问、无 eval/动态代码执行
skill-card.md 已知风险部分主动披露了混淆代码问题
文件写入仅限于 outputDir 参数指定的目录,范围受限