可信 — 风险评分 5/100
上次扫描:2 天前 重新扫描
5 /100
shiyi
拾遗 · 通用考试备考追踪 Skill — image-based wrong answer tracker with free tagging, review reminders, and Excel export
A legitimate exam preparation tracking skill with no malicious indicators. The pre-scan IOC for base64 decoding is a false positive — it's standard image export functionality.
技能名称shiyi
分析耗时32.5s
引擎pi
可以安装
No action needed. Skill is safe for deployment.

安全发现 3 项

严重性 安全发现 位置
提示
Base64 decoding is legitimate export feature
The pre-scan flagged Buffer.from(q.raw_image_b64, 'base64') as 'base64 encoded execution (code obfuscation)'. This is a false positive — raw_image_b64 is the base64-encoded screenshot stored by the skill itself in wrong_questions.json, and decoding it to a temp .jpg file is the standard mechanism to embed images in Excel via openpyxl.
fs.writeFileSync(tmpPath, Buffer.from(q.raw_image_b64, 'base64'));
→ No action. This is documented image export behavior.
scripts/export_xlsx.js:140
提示
Python subprocess documented in package.json
The skill uses execFile to run python3 for openpyxl-based Excel generation. This is declared via the 'export' npm script and the buildPythonScript() function, with no hidden execution paths.
execFile(cmd, args, { timeout }, (err, stdout, stderr) => {...})
→ No action. Documented Excel export mechanism.
scripts/export_xlsx.js:28
提示
Dependencies declared and reasonable
xlsx@^0.18.5 for Excel generation, optional sharp@^0.33.0 for image processing. No undeclared packages. Versions loosely pinned (caret range), but no supply chain risk given the benign nature of the dependencies.
dependencies: { "xlsx": "^0.18.5" }
→ Consider pinning exact versions ([email protected]) for reproducible builds.
package.json:1
资源类型声明权限推断权限状态证据
文件系统 READ+WRITE WRITE ✓ 一致 All file operations scoped to ~/.openclaw/skills/shiyi/data/
命令执行 WRITE WRITE ✓ 一致 execFile(python3) in export_xlsx.js:28, declared as Excel export mechanism
1 严重 6 项发现
🔒
严重 编码执行 Base64 编码执行(代码混淆)
Buffer.from(q.raw_image_b64, 'base64'
scripts/export_xlsx.js:140
🔗
中危 外部 URL 外部 URL
https://openclaw.ai
README.md:16
🔗
中危 外部 URL 外部 URL
https://img.shields.io/badge/OpenClaw-Skill-orange?style=for-the-badge
README.md:17
🔗
中危 外部 URL 外部 URL
https://img.shields.io/badge/License-MIT-blue?style=for-the-badge
README.md:20
🔗
中危 外部 URL 外部 URL
https://nodejs.org
README.md:22
🔗
中危 外部 URL 外部 URL
https://img.shields.io/badge/node-%3E%3D18-green?style=for-the-badge
README.md:23

目录结构

12 文件 · 54.5 KB · 1525 行
JavaScript 8f · 1172L Markdown 2f · 319L JSON 1f · 27L Ignore 1f · 7L
├─ 📁 assets
│ └─ 📜 exam_prompts.js JavaScript 182L · 9.6 KB
├─ 📁 scripts
│ ├─ 📜 daily_summary.js JavaScript 66L · 2.1 KB
│ ├─ 📜 export_xlsx.js JavaScript 182L · 6.6 KB
│ ├─ 📜 onboarding.js JavaScript 89L · 2.9 KB
│ ├─ 📜 parse_input.js JavaScript 270L · 9.6 KB
│ ├─ 📜 review_reminder.js JavaScript 139L · 4.9 KB
│ ├─ 📜 tag_library.js JavaScript 133L · 4.2 KB
│ └─ 📜 update_daily.js JavaScript 111L · 4.0 KB
├─ 📄 .gitignore Ignore 7L · 60 B
├─ 📋 package.json JSON 27L · 696 B
├─ 📝 README.md Markdown 165L · 4.6 KB
└─ 📝 SKILL.md Markdown 154L · 5.2 KB

依赖分析 2 项

包名版本来源已知漏洞备注
xlsx ^0.18.5 npm Excel generation library, benign dependency
sharp ^0.33.0 npm Optional image processing, not loaded in any script

安全亮点

✓ All file operations scoped strictly to ~/.openclaw/skills/shiyi/data/ with no drift to sensitive paths
✓ No network egress — no curl, wget, fetch, or HTTP calls of any kind
✓ No credential access — does not read ~/.ssh, ~/.aws, .env, or iterate os.environ for secrets
✓ SKILL.md documentation is comprehensive and accurately describes all implemented features
✓ No obfuscation, no hidden instructions, no eval() or Function() calls
✓ Image data (raw_image_b64) originates from the skill's own storage, not external sources
✓ Python script written to os.tmpdir() and immediately cleaned up after execution
✓ Automated backup rotation (10 versions) for wrong_questions.json prevents data loss