This report was generated in Chinese. Some content may be in Chinese.
Low Risk — Risk Score 15/100
Last scan:5 hr ago Rescan
15 /100
tiktok-app-marketing
Automate TikTok slideshow marketing for any app or product
合法的 TikTok 营销自动化工具,代码无恶意行为。预扫描标记的 Base64 解码是 API 图片处理的正常用法,非混淆。缺少依赖管理文件是轻微瑕疵。
Skill Nametiktok-app-marketing
Duration49.2s
Enginepi
ClawHub LarrySkill v1.0.0 by batsirai
📥 172 📦 1
ClawHub Verdict Suspicious llm_suspiciouspotential_exfiltration
Safe to install
可安全使用。建议:1) 添加 package.json 锁定 node-canvas 版本;2) API 密钥通过环境变量而非配置文件传递;3) 保持 Node.js 环境隔离。

Findings 3 items

Severity Finding Location
Low
缺少依赖锁定文件 Supply Chain
项目无 package.json 或 package-lock.json,依赖版本未锁定。SKILL.md 要求安装 node-canvas 但未指定版本范围。
node-canvas (npm install canvas)
→ 添加 package.json 并锁定 node-canvas 版本,如 "canvas": "^2.11.2"
SKILL.md:24
Info
API 密钥存储方式 Sensitive Access
API 密钥存储在 config.json 中而非通过环境变量注入。虽然是常见做法,但在某些场景下存在泄露风险。
"apiKey": "sk-..."
→ 建议支持环境变量注入,如 process.env.POSTIZ_API_KEY
SKILL.md:356
Info
预扫描 Base64 标记为误报 Obfuscation
预扫描标记 scripts/generate-slides.js:83,107 的 Buffer.from(..., 'base64') 为「代码混淆」。经核实,这是将 OpenAI/Stability AI API 返回的 base64 编码图片数据解码为二进制文件的正常用法,非恶意混淆。
fs.writeFileSync(outPath, Buffer.from(data.data[0].b64_json, 'base64'))
→ 此用法安全,是标准的图片解码模式,无需修改
scripts/generate-slides.js:83,107
ResourceDeclaredInferredStatusEvidence
Filesystem WRITE WRITE ✓ Aligned 所有脚本均读写本地文件,行为一致
Network READ READ ✓ Aligned 仅调用外部 API (Postiz/OpenAI/RevenueCat),无主动外传数据
Shell NONE NONE 无 subprocess/shell 执行代码
Browser READ READ ✓ Aligned 仅声明用于竞争对手研究
credential_theft NONE NONE 仅使用配置的 API 密钥调用合法服务
2 Critical 13 findings
🔒
Critical Encoded Execution Base64 编码执行(代码混淆)
Buffer.from(data.data[0].b64_json, 'base64'
scripts/generate-slides.js:83
🔒
Critical Encoded Execution Base64 编码执行(代码混淆)
Buffer.from(data.artifacts[0].base64, 'base64'
scripts/generate-slides.js:107
🔗
Medium External URL 外部 URL
https://postiz.pro/oliverhenry
SKILL.md:19
🔗
Medium External URL 外部 URL
https://api.postiz.com/public/v1/analytics/
references/analytics-loop.md:9
🔗
Medium External URL 外部 URL
https://api.postiz.com/public/v1/analytics/post/
references/analytics-loop.md:28
🔗
Medium External URL 外部 URL
https://api.postiz.com/public/v1/posts?startDate=
references/analytics-loop.md:44
🔗
Medium External URL 外部 URL
https://tiktok.com/...
references/competitor-research.md:66
🔗
Medium External URL 外部 URL
https://api.revenuecat.com/v1/subscribers/
references/revenuecat-integration.md:27
🔗
Medium External URL 外部 URL
https://api.revenuecat.com/v2/projects/
references/revenuecat-integration.md:35
🔗
Medium External URL 外部 URL
https://api.postiz.com/public/v1
scripts/check-analytics.js:46
🔗
Medium External URL 外部 URL
https://api.revenuecat.com/v2
scripts/daily-report.js:59
🔗
Medium External URL 外部 URL
https://api.stability.ai/v1/generation/$
scripts/generate-slides.js:89
🔗
Medium External URL 外部 URL
https://api.replicate.com/v1/predictions
scripts/generate-slides.js:115

File Tree

13 files · 126.4 KB · 3031 lines
JavaScript 7f · 1628L Markdown 6f · 1403L
├─ 📁 references
│ ├─ 📝 analytics-loop.md Markdown 151L · 5.3 KB
│ ├─ 📝 app-categories.md Markdown 68L · 2.1 KB
│ ├─ 📝 competitor-research.md Markdown 101L · 3.6 KB
│ ├─ 📝 revenuecat-integration.md Markdown 123L · 3.6 KB
│ └─ 📝 slide-structure.md Markdown 111L · 4.2 KB
├─ 📁 scripts
│ ├─ 📜 add-text-overlay.js JavaScript 192L · 5.9 KB
│ ├─ 📜 check-analytics.js JavaScript 227L · 9.1 KB
│ ├─ 📜 competitor-research.js JavaScript 87L · 3.2 KB
│ ├─ 📜 daily-report.js JavaScript 562L · 24.2 KB
│ ├─ 📜 generate-slides.js JavaScript 231L · 8.5 KB
│ ├─ 📜 onboarding.js JavaScript 213L · 7.1 KB
│ └─ 📜 post-to-tiktok.js JavaScript 116L · 3.4 KB
└─ 📝 SKILL.md Markdown 849L · 46.1 KB

Dependencies 1 items

PackageVersionSourceKnown VulnsNotes
canvas not specified npm (user-managed) No SKILL.md 要求安装但未锁定版本,建议添加 package.json

Security Positives

✓ 代码逻辑清晰,无隐藏功能或越权操作
✓ 文档与实际代码行为高度一致,无声明-行为不符
✓ 所有网络请求均为合法的商业 API 调用(Postiz/OpenAI/RevenueCat)
✓ 无凭证收割、敏感文件访问、反向 shell 等高危行为
✓ 使用 AbortController 实现了请求超时控制
✓ 支持断点续传(已完成幻灯片跳过)
✓ 包含完善的错误处理和用户提示