安全扫描
OpenClaw
可疑
medium confidence该技能声称的功能(从文档生成测验并返回二维码)看似合理,但包内包含服务器/部署代码、硬编码的云 IP 地址,以及运行时指令假定直接运行本地脚本而无任何安装步骤——这些不一致之处,加上会安装系统级 root 服务的部署脚本,令人担忧,使用前需进一步审查。
评估建议
安装或运行本包任何内容前的要点:
- 该 skill 会(按 SKILL.md)将提取的文档文本发送至外部服务器 118.196.5.240:34100。若文档含敏感数据,在未确认运营方、隐私政策及留存做法前请勿上传。
- 包内带 deploy 脚本,会安装系统服务并以 root 身份运行服务器。除非你信任代码及服务所有者,否则勿以 root 运行 deploy/deploy.sh——先逐行审阅 server.js、upload-handler.js 与 quiz-create.js。
- SKILL.md 期望本地节点脚本位于 ~/.openclaw/quiz-maker/quiz-create.js,但包未提供安装说明;此不一致可疑。请询问发布者客户端应如何安装,以及为何捆绑服务器代码。
- parser.js 在 PPTX 解析失败时,用 child_process.execSync 配合 shell 管道作回退。若运行捆绑服务器,请检查上传文件名与路径的校验方式,防止命令注入。
- 建议:
1) 为云端端点获取可验证的域名及运营方联系方式;
...详细分析 ▾
⚠ 用途与能力
名称/描述:从文档生成选择题测验并交付二维码 —— SKILL.md 在 118.196.5.240:34100 处明确写着“使用云服务”。该功能确实需要将文档文本发送到服务。然而,包内还包含完整的服务器代码(server.js、upload-handler.js、db.js、deploy/deploy.sh 等),却没有安装规范,且 SKILL.md 期望本地助手位于 ~/.openclaw/quiz-maker/quiz-create.js。对于一个仅客户端指令技能,附带服务器 + 部署脚本过于冗余,并造成应运行远程服务、本地客户端,还是安装捆绑服务器的歧义。
⚠ 指令范围
SKILL.md 指示代理/用户先本地提取文本(python docx/PyPDF2 示例),再运行 node 脚本(node ~/.openclaw/quiz-maker/quiz-create.js "<内容>" "<标题>" "<说明>")。该 node 脚本会调用云服务(文档中写有云端 IP)。流程要求读取任意本地文档,并将其全文发送至外部托管服务(118.196.5.240:34100)。说明中未提供本地脚本安装步骤,未说明传输内容,也未警告上传完整文档可能带来的隐私风险。parser.js 使用 child_process.execSync 执行 shell 命令(strings | grep | head)作为 PPTX 解析的兜底方案;若文件路径或输入未正确过滤,可能存在命令注入风险。
⚠ 安装机制
注册表元数据与 SKILL.md 均未声明 install spec,但仓库内存在 deploy/deploy.sh,该脚本会安装 Node.js、nginx、certbot,创建 /opt/quiz-maker,写入 systemd unit,并将服务配置为 User=root。若执行此部署脚本,将对系统做出持久性更改并以 root 身份运行服务——这是调用远程 API 所不必要的高权限操作。云主机使用裸 IP(118.196.5.240:34100)而非知名发布主机或域名,使用数字 IP 风险更高且难以验证。
ℹ 凭证需求
该技能未请求环境变量或凭据(requires.env 为空),这对面向 API 的测验生成器是合适的。然而,该包会将本地文档内容上传至第三方服务器(硬编码 IP)——即使无需密钥——因此传输数据的隐私/敏感性存在风险。虽未请求任何机密,但远程端点及附带的服务器/部署脚本扩大了攻击面。
⚠ 持久化与权限
该技能的元数据并未强制“始终”包含,但代码库中却带有一个部署脚本,它会配置一个以 root 身份运行的常驻 systemd 服务(User=root)。一旦操作员执行 deploy/deploy.sh,打包的应用就能获得长期驻留系统且拥有高权限。对于一个仅提供指令的技能来说,存在此类脚本既不合比例,也极具风险。
⚠ parser.js:73
检测到 Shell 命令执行(child_process)。
安全有层次,运行前请审查代码。
运行时依赖
无特殊依赖
版本
latestv1.0.02026/4/22
首次发布
● 可疑
安装命令
点击复制官方npx clawhub@latest install quiz-maker
镜像加速npx clawhub@latest install quiz-maker --registry https://cn.longxiaskill.com
技能文档
默认行为
使用云端服务出题,返回二维码图片。调用流程
1. 提取文档内容
``bash
# docx
python3 -c "
from docx import Document
doc = Document('文件路径.docx')
for p in doc.paragraphs:
if p.text.strip():
print(p.text)
for t in doc.tables:
for row in t.rows:
print(' | '.join(c.text.strip() for c in row.cells))
"
# pdf
python3 -c "
import PyPDF2
reader = PyPDF2.PdfReader('文件路径.pdf')
for page in reader.pages:
t = page.extract_text()
if t and t.strip():
print(t.strip())
"
`
2. 调用云端 API 出题
`bash
node ~/.openclaw/quiz-maker/quiz-create.js "<内容>" "<标题>" "<说明>"
`
3. 提取二维码并保存
`bash
# 从输出 JSON 中提取 qrImage 字段 base64,保存为 PNG
python3 -c "
import sys, base64, json
r = json.loads(sys.stdin.read())
b64 = r['qrImage'].replace('data:image/png;base64,', '')
open('输出路径.png', 'wb').write(base64.b64decode(b64))
"
`
4. 验证后发送
`bash
file 输出路径.png # 确认为 PNG 再发送
`
注意事项
云端服务地址:https://118.196.5.240:34100- 内容最少需要 50 字
- 二维码直接展示给用户即可
教训(踩坑记录)
不要自己发明 API 路径:create-with-qr返回的 JSON 里已有qrImage(base64 PNG),直接用这个字段,不要另调/api/quiz/:id/qr等不存在的接口先验证文件类型:保存后用file` 命令确认是真正的 PNG 再发送