安全决策报告

tkseller

TKSeller 技能收集设备指纹(BIOS UUID + MAC地址)并发送至硬编码 IP(54.160.24.241),凭证传输路径存在风险,但整体功能与电商带货业务相关,意图待明确。

安装决策优先 来源: ClawHub 扫描时间: 15 天前
文件 18
IOC 18
越权项 4
发现 6
最直接的威胁证据

为什么得出这个结论

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

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

阻止
隐藏执行与外联

提取到 1 个高危 IOC 或外联信号。

通过
攻击链与高危发现

没有形成明确的恶意路径。

通过
依赖与供应链卫生

依赖结构存在,但暂未看到明显高危告警。

风险分是怎么被拉高的

设备指纹收集 +15

收集 BIOS UUID + MAC 地址生成 device_id,用于登录请求

凭证外传 +10

用户名密码以明文 POST 到外部 IP,敏感凭证离开本地环境

硬编码 IP +10

后端地址 54.160.24.241:8771 为裸 IP,无法验证证书或域名归属

读取 OpenClaw 配置 +5

访问 ~/.openclaw/openclaw.json 获取 gateway token 和 Discord token

系统命令执行 +5

使用 execSync 执行 wmic/cat 命令读取 BIOS UUID

最关键的证据

中危 凭证窃取

凭证以明文发送至外部服务器

用户登录时,用户名和密码以明文 JSON 格式 POST 到 54.160.24.241:8771/api/v1/auth/login。虽然是 HTTPS 传输,但凭证离开了用户本地环境。

lib-js/api.mjs:136
考虑使用 token-based 认证替代明文密码传输,或确保后端完全可信
中危 敏感访问

设备指纹收集(BIOS UUID + MAC 地址)

getDeviceId() 函数收集系统 BIOS UUID(非 Windows 使用 /sys/class/dmi/id/product_uuid)和所有非内部网卡的 MAC 地址,生成 device_id 用于登录请求。这可能用于跨实例追踪。

lib-js/api.mjs:80
明确告知用户此数据收集的目的和范围,或使用不涉及硬件信息的设备标识方案
中危 供应链

硬编码外部 IP 地址

config.json 中 data_service.base_url 硬编码为 http://54.160.24.241:8771,无法验证服务器身份(无域名、证书锚定)。如 DNS 被劫持可导向恶意服务器。

config.json:4
1. 使用域名替代裸 IP;2. 实现证书校验;3. 添加 SSH fingerprint 或 pin
低危 敏感访问

读取 OpenClaw 配置文件

card-tools.mjs 和 trigger.mjs 读取 ~/.openclaw/openclaw.json 获取 gateway auth token 和各渠道(Discord/飞书等)的 bot token。这些凭证用于调用本地 gateway 和注册 Discord 命令。

lib-js/card-tools.mjs:41
确认这些凭证仅用于本地 gateway 通信,不会上传至外部 data-service
低危 敏感访问

本地文件写入操作

技能在 data/ 目录下创建并写入多个文件:token.json(认证令牌)、card_map.json、processed_events.json、poll_state.json,以及 Python 临时脚本。

lib-js/api.mjs:65
验证 data/ 目录权限设置,避免其他用户读取敏感状态数据
提示 文档欺骗

SKILL.md 编码异常

SKILL.md 文件存在大量乱码(UTF-8 编码的中文显示为 �/� 等字符),但实际功能逻辑可通过代码审查还原。文档完整性受损,无法有效声明功能范围。

SKILL.md:1
修复文档编码,确保声明与实际行为一致

声明能力 vs 实际能力

网络访问 阻止
声明 NONE
推断 WRITE
所有 API 请求(认证/推荐/事件)均发往外部 IP 54.160.24.241
环境变量 阻止
声明 NONE
推断 READ
api.mjs:96 读取 HTTPS_PROXY/HTTP_PROXY;card-tools.mjs 读取完整 openclaw.json
文件系统 阻止
声明 NONE
推断 WRITE
存储 token.json、设备指纹到本地 data/ 目录
命令执行 阻止
声明 NONE
推断 READ
api.mjs:80-109 通过 execSync 执行系统命令读取 BIOS UUID

可疑产物与外联

高危 IP 地址
54.160.24.241

config.json:4

中危 外部 URL
https://tiktok.com/@x/video/123

README.md:24

中危 外部 URL
http://127.0.0.1:18789/tools/invoke

README.md:394

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

README.md:570

中危 外部 URL
https://tiktok.com/...

README.md:601

中危 外部 URL
https://tiktok.com/@creator/video/123

README.md:610

中危 外部 URL
https://shop.tiktok.com/product/456

README.md:615

中危 外部 URL
http://54.160.24.241:8771

config.json:4

中危 外部 URL
https://discord.com/api/v10/applications/@me

lib-js/register-discord.mjs:73

中危 外部 URL
https://discord.com/api/v10/users/@me/guilds

lib-js/register-discord.mjs:86

中危 外部 URL
https://discord.com/api/v10/applications/$

lib-js/register-discord.mjs:103

中危 外部 URL
https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal

lib-js/register-feishu.mjs:20

依赖与供应链

包名版本来源漏洞备注
Pillow 未声明 pip (本地调用) 用于 webchat 图片压缩,功能合法

文件构成

18 个文件 · 4827 行
JavaScript 12 个文件 · 3349 行Markdown 4 个文件 · 1462 行JSON 2 个文件 · 16 行
需关注文件 · 7
config.json JSON · 11 行
硬编码外部 IP 地址 · 54.160.24.241 · http://54.160.24.241:8771
lib-js/card-tools.mjs JavaScript · 1086 行
读取 OpenClaw 配置文件
README.md Markdown · 664 行
https://tiktok.com/@x/video/123 · http://127.0.0.1:18789/tools/invoke · http://127.0.0.1:18789 · https://tiktok.com/... · https://tiktok.com/@creator/video/123 · https://shop.tiktok.com/product/456
SKILL.md Markdown · 664 行
SKILL.md 编码异常
lib-js/trigger.mjs JavaScript · 576 行
https://docs.openclaw.ai/channels/discord\n\n
lib-js/api.mjs JavaScript · 266 行
凭证以明文发送至外部服务器 · 设备指纹收集(BIOS UUID + MAC 地址) · 本地文件写入操作
lib-js/register-discord.mjs JavaScript · 138 行
https://discord.com/api/v10/applications/@me · https://discord.com/api/v10/users/@me/guilds · https://discord.com/api/v10/applications/$
其他文件 · handle-button.mjs · poll-loop.mjs · poll-events.mjs · send-persona-card.mjs · SOUL.md

安全亮点

代码结构清晰,模块化设计良好
使用本地 token 缓存避免重复登录
包含进程锁机制防止多实例冲突
实现了事件去重和状态持久化
支持多渠道(Discord/飞书/webchat)
有错误处理和超时机制
Python 图片压缩使用 Pillow(正规库)
无明显混淆或隐藏的恶意代码