安全决策报告

feishu-log

飞书日志技能存在硬编码凭证和交互式凭证收割风险,凭证作为默认值传播在多个文件中,构成中等安全风险

安装决策优先 来源: ClawHub 扫描时间: 4 小时前
文件 15
IOC 18
越权项 0
发现 4
最直接的威胁证据
严重 凭证窃取
硬编码飞书应用凭证

4个文件(log-interactive.mjs, log-simple.mjs, log-work.mjs, log.js)硬编码相同的飞书 APP_ID 和 APP_SECRET 作为默认值。当环境变量未设置时,代码会使用这些硬编码凭证,导致凭证在代码仓库中公开传播。

log-interactive.mjs:4

为什么得出这个结论

1/4 个维度触发
通过
声明与实际能力

声明资源与推断能力基本一致。

复核
隐藏执行与外联

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

阻止
攻击链与高危发现

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

复核
依赖与供应链卫生

发现 1 项需要关注的依赖或供应链线索。

攻击链

01
用户下载并使用 feishu-log 技能

初始入口 · SKILL.md:1

02
技能使用硬编码凭证或 config-credentials.js 收割用户凭证

权限提升 · config-credentials.js:58

03
凭证被持久化到 ~/.openclaw/feishu-credentials.json 或通过硬编码方式泄露

最终危害 · config-credentials.js:73

风险分是怎么被拉高的

硬编码凭证传播 +30

4个文件硬编码飞书 APP_SECRET 作为默认值,凭证已泄露

交互式凭证收割工具 +20

config-credentials.js 可收集用户凭证并保存到文件

凭证优先级设计缺陷 +10

代码使用 fallback 机制,环境变量未设置时使用硬编码凭证

文档与实现不一致 +10

SKILL.md 声称从 .env 加载,但代码有硬编码默认值

敏感文件包含凭证 +5

config-credentials.js 被预扫描标记为敏感文件

最关键的证据

严重 凭证窃取

硬编码飞书应用凭证

4个文件(log-interactive.mjs, log-simple.mjs, log-work.mjs, log.js)硬编码相同的飞书 APP_ID 和 APP_SECRET 作为默认值。当环境变量未设置时,代码会使用这些硬编码凭证,导致凭证在代码仓库中公开传播。

log-interactive.mjs:4
删除所有硬编码凭证,强制要求用户通过环境变量或 .env 文件配置凭证
高危 凭证窃取

交互式凭证收割工具

config-credentials.js 提供交互式输入功能,会收集用户输入的 APP_SECRET 并保存到 ~/.openclaw/feishu-credentials.json。虽有默认值填充逻辑,但用户若直接回车确认,凭证会以明文保存。

config-credentials.js:58
删除此文件或移除默认值,强制要求用户提供有效凭证
中危 文档欺骗

文档声明与实现不符

SKILL.md 声称'从 .env 文件加载配置',但代码实现中包含硬编码默认值作为 fallback,与文档描述的'必填'配置要求不符。

feishu-log.js:27
移除代码中的默认值 fallback,严格验证配置存在性
中危 供应链

第三方依赖无版本锁定

log-interactive.mjs, log-work.mjs, log.js 使用 @larksuiteoapi/node-sdk 但未锁定版本,存在供应链攻击风险。

log-interactive.mjs:1
在 package.json 中锁定依赖版本

声明能力 vs 实际能力

文件系统 通过
声明 READ
推断 READ
feishu-log.js:35-67 从 .env 读取配置
网络访问 通过
声明 WRITE
推断 WRITE
所有文件都调用飞书 API 写入文档
命令执行 通过
声明 NONE
推断 NONE
无 shell 执行代码

可疑产物与外联

中危 外部 URL
https://feishu.cn/drive

README-权限设置.md:14

中危 外部 URL
https://feishu.cn/drive/folder/[文件夹

README-权限设置.md:37

中危 外部 URL
https://feishu.cn/drive/folder/MDjAfBJorlqu14dWxBocy7MnnId

README-权限设置.md:41

中危 外部 URL
https://open.feishu.cn/document

README-权限设置.md:79

中危 外部 URL
https://open.feishu.cn/app/YOUR_APP_ID/auth?q=drive:drive

README.md:141

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

README.md:193

中危 外部 URL
https://open.feishu.cn/open-apis/contact/v3/users?user_id_type=open_id&page_size=10

README.md:197

中危 外部 URL
https://feishu.cn/docx/doxxx

README.md:228

中危 外部 URL
https://open.feishu.cn/open-apis/drive/v1/permissions/:token/members

README.md:343

中危 外部 URL
https://open.feishu.cn/

config-credentials.js:51

中危 外部 URL
https://open.feishu.cn/open-apis

feishu-log.js:25

中危 外部 URL
https://feishu.cn/docx/$

feishu-log.js:305

依赖与供应链

包名版本来源漏洞备注
@larksuiteoapi/node-sdk * npm 无版本锁定

文件构成

15 个文件 · 3452 行
JavaScript 6 个文件 · 1752 行Markdown 7 个文件 · 1657 行Shell 1 个文件 · 25 行JSON 1 个文件 · 18 行
需关注文件 · 7
config-credentials.js JavaScript · 93 行
交互式凭证收割工具 · https://open.feishu.cn/
feishu-log.js JavaScript · 737 行
文档声明与实现不符 · https://open.feishu.cn/open-apis · https://feishu.cn/docx/$
README.md Markdown · 451 行
https://open.feishu.cn/app/YOUR_APP_ID/auth?q=drive:drive · https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal/ · https://open.feishu.cn/open-apis/contact/v3/users?user_id_type=open_id&page_size=10 · https://feishu.cn/docx/doxxx · https://open.feishu.cn/open-apis/drive/v1/permissions/:token/members
log-interactive.mjs JavaScript · 208 行
硬编码飞书应用凭证 · 第三方依赖无版本锁定 · https://wcnh9mbykuay.feishu.cn/docx/$
log-simple.mjs JavaScript · 223 行
https://bytedance.feishu.cn/docx/$
更新说明.md Markdown · 139 行
https://open.feishu.cn/document/ukTMukTMukTM/uEjNwUjLxYDM14SM2gTN · https://open.feishu.cn/document/ukTMukTMukTM/ucDM54SOy4DNL4SM2gTN · https://open.feishu.cn/document/ukTMukTMukTM/uYjNwUjL2YDM14iN2gTN
修复报告.md Markdown · 102 行
https://wcnh9mbykuay.feishu.cn/docx/Z463dNM4EoBOvOxNGIhcQEdbn0d
其他文件 · SKILL.md · log-work.mjs · log.js · 技能规范检查.md · 规范符合性总结.md

安全亮点

使用 HTTPS 进行所有 API 通信
无 shell 命令执行
无环境变量遍历收割敏感信息
无 base64 编码或代码混淆
飞书 API 调用符合官方文档