安全决策报告

amazon-screenshot

核心功能为合法的亚马逊ASIN截图工具,但存在多处阴影行为:硬编码SMTP凭证未声明、Chrome以有头模式访问用户真实登录会话、子进程执行环境检测,构成文档-行为不符风险。

安装决策优先 来源: ClawHub 扫描时间: 1 天前
文件 9
IOC 7
越权项 2
发现 5
最直接的威胁证据
高危 凭证窃取
硬编码SMTP服务凭证(阴影功能)

代码中硬编码了飞书SMTP密码 rDs70BwDDg6U9YbO,关联账号 [email protected]。SKILL.md 仅描述「MOSS邮箱发送」功能,完全未提及凭证的存在。此凭证若被提取可用于以该身份发送任意邮件。

scripts/screenshot.js:51

为什么得出这个结论

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

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

复核
隐藏执行与外联

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

阻止
攻击链与高危发现

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

复核
依赖与供应链卫生

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

风险分是怎么被拉高的

未声明的硬编码SMTP凭证 +20

代码中硬编码了飞书SMTP密码 rDs70BwDDg6U9YbO,SKILL.md 仅提到「MOSS邮箱」却未告知凭证存在,若泄露可被用于以 [email protected] 身份发送任意邮件

子进程执行未在文档声明 +10

autoDetectDisplay() 通过 execSync 执行 python3 脚本遍历 X11 socket 检测 DISPLAY,SKILL.md 仅描述「自动检测」未提及底层 subprocess 调用

Chrome有头模式+持久Profile高权限访问 +10

headless:false + 持久化 chrome_profile/ 目录意味着代码运行在用户真实Chrome窗口中,可访问所有登录态/Cookie,SKILL.md 未明确此风险

最关键的证据

高危 凭证窃取

硬编码SMTP服务凭证(阴影功能)

代码中硬编码了飞书SMTP密码 rDs70BwDDg6U9YbO,关联账号 [email protected]。SKILL.md 仅描述「MOSS邮箱发送」功能,完全未提及凭证的存在。此凭证若被提取可用于以该身份发送任意邮件。

scripts/screenshot.js:51
将凭证移至环境变量或加密配置文件,运行时注入;文档中明确说明凭证管理方式。
中危 权限提升

Chrome有头模式+持久化Profile访问真实用户会话

headless:false + USER_DATA_DIR 指向 chrome_profile/ 意味着Playwright Chrome运行于用户真实X11窗口,可访问用户所有登录态、Cookie、缓存。代码可操控用户真实浏览器行为,权限远超「截图」所需。

scripts/screenshot.js:119
文档应明确警示此配置意味着使用用户真实Chrome会话;考虑使用独立临时Profile而非持久化Profile。
中危 代码执行

子进程执行未声明(阴影功能)

autoDetectDisplay() 通过 execSync 执行 python3 内联脚本,遍历 /tmp/.X11-unix/ 检测当前活跃X Display编号,SKILL.md 仅描述「DISPLAY自动检测」未提及底层subprocess调用。

scripts/screenshot.js:34
文档声明shell执行能力,或使用纯Node.js方案替代subprocess。
低危 供应链

npm依赖无版本锁定

package.json 和 scripts/package.json 中依赖均使用 ^ 允许次版本升级,存在依赖被篡改风险(如 nodemailer、playwright)。

package.json:1
将依赖版本锁定至精确版本(如 nodemailer: 8.0.7),定期审计已知漏洞。
低危 文档欺骗

邮件发送能力声明模糊

SKILL.md 描述「通过MOSS邮箱发送」,但未明确说明通过SMTP协议发送到外部邮件服务商(smtp.feishu.cn),也未声明附件ZIP的传输路径。

SKILL.md:1
补充说明邮件传输方式和外部服务依赖。

声明能力 vs 实际能力

文件系统 通过
声明 WRITE
推断 WRITE
scripts/screenshot.js:126 写入PNG截图和ZIP压缩包
网络访问 阻止
声明 READ
推断 READ+WRITE
scripts/screenshot.js:168-202 通过 nodemailer SMTP 向外部服务器发送邮件+附件(WRITE未声明)
命令执行 阻止
声明 NONE
推断 WRITE
scripts/screenshot.js:34 execSync('python3 - <<EOF...') 执行子进程检测X11 display
浏览器 通过
声明 READ
推断 READ
scripts/screenshot.js:119-148 通过Playwright+Chrome截图,能力与声明一致

可疑产物与外联

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

chrome_profile/Default/Service Worker/CacheStorage/2a1c18365e83cb6e1347464058faa3d44e45a31c/index.txt:11

中危 外部 URL
https://www.patreon.com/feross

scripts/package-lock.json:84

中危 外部 URL
https://feross.org/support

scripts/package-lock.json:88

中危 外部 URL
https://www.amazon.com/dp/$

scripts/screenshot.js:65

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

scripts/screenshot.js:135

提示 邮箱
[email protected]

SKILL.md:10

提示 邮箱
[email protected]

SKILL.md:30

依赖与供应链

包名版本来源漏洞备注
nodemailer ^8.0.7 npm 无版本锁定,邮件发送核心依赖
playwright ^1.59.1 npm 无版本锁定,浏览器自动化依赖
playwright-extra ^4.3.6 npm 无版本锁定
archiver ^8.0.0 npm scripts目录,无版本锁定
docx ^9.6.1 npm scripts目录,未在主代码中引用,可能未使用

文件构成

9 个文件 · 1436 行
JSON 6 个文件 · 974 行JavaScript 1 个文件 · 373 行Markdown 1 个文件 · 79 行Text 1 个文件 · 10 行
需关注文件 · 5
scripts/package-lock.json JSON · 827 行
https://www.patreon.com/feross · https://feross.org/support
scripts/screenshot.js JavaScript · 373 行
硬编码SMTP服务凭证(阴影功能) · Chrome有头模式+持久化Profile访问真实用户会话 · 子进程执行未声明(阴影功能) · https://www.amazon.com/dp/$ · https://www.amazon.com
SKILL.md Markdown · 79 行
邮件发送能力声明模糊 · [email protected] · [email protected]
chrome_profile/Default/Service Worker/CacheStorage/2a1c18365e83cb6e1347464058faa3d44e45a31c/index.txt Text · 10 行
https://www.amazon.com/https://www.amazon.com/
package.json JSON · 8 行
npm依赖无版本锁定
其他文件 · package-lock.json · package.json · metadata.json · metadata.json

安全亮点

功能逻辑清晰,主要功能(ASIN截图→ZIP→邮件)与文档描述一致
邮箱域名白名单限制(@campsnail.com)防止邮件滥用
并发锁机制防止重复执行
截图/ZIP发送后自动清理,不持久化数据
任务完成后主动通知用户,无静默失败
无凭证收割、远程代码执行、反向Shell等典型恶意行为