跳转到正文
报告库
用途分类 / 其他用途

Lark Skill Maker Skill 安全审计

作者说它能做什么(原文)

创建 lark-cli 的自定义 Skill。当用户需要把飞书 API 操作封装成可复用的 Skill(包装原子 API 或编排多步流程)时使用。

第三方安全检查结论

发现安全风险

已检查文件
1
发现的风险
2
会不会运行危险命令?检查是否下载程序后直接运行、让他人远程控制电脑,或藏起要运行的命令。发现 1 项风险
中风险

通用 OpenAPI 入口可执行未受模板约束的飞书操作

原文依据:4 处
发现了什么

该 Skill 明确提供可调用任意 OpenAPI 方法和路径的入口,并让生成的 Skill 包含 POST 命令。确认写入和 dry-run 仅被表述为原则,其中 dry-run 还是“建议”,未展示强制检查。

为什么需要注意

当 AI 使用具有相应 scope 的登录身份时,生成的 Skill 可能读取或修改超出用户当前请求预期的飞书资源;具体影响取决于最终填入的端点、参数和权限。

这段代码的正常用途

这些行确实介绍了可指定方法和路径的通用飞书 OpenAPI 调用,并在模板中给出 POST 示例;但它们用于制作用户所需的飞书 Skill,不是要求立即执行示例。现有原则还明确要求写入前确认用户意图,并建议 dry-run。因而存在生成后的 Skill 在获授权时修改飞书数据的能力,但“未受模板约束”的风险描述忽略了用途和显式确认要求。用户仍应在运行生成的 Skill 前核对具体端点、scope 和确认流程。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:16来自说明文档
```bashlark-cli <service> <resource> <method>          # 已注册 APIlark-cli <service> +<verb>                      # Shortcut(高级封装)lark-cli api <METHOD> <path> [--data/--params]  # 任意飞书 OpenAPIlark-cli schema <service.resource.method>       # 查参数定义```优先级:Shortcut > 已注册 API > `api` 裸调。
查看另外 3 个位置
SKILL.md:62来自说明文档
## 命令\```bash# 单步操作lark-cli api POST /open-apis/xxx --data '{...}'# 多步编排:说明步骤间数据传递# Step 1: ...(记录返回的 xxx_id)# Step 2: 使用 Step 1 的 xxx_id\```
SKILL.md:82来自说明文档
- **description 决定触发** — 包含功能关键词 + "当用户需要...时使用"- **认证** — 说明所需 scope,登录用 `lark-cli auth login --domain <name>`- **安全** — 写入操作前确认用户意图,建议 `--dry-run` 预览- **编排** — 说明数据传递、失败回滚、可并行步骤
SKILL.md:80来自说明文档
## 关键原则- **description 决定触发** — 包含功能关键词 + "当用户需要...时使用"- **认证** — 说明所需 scope,登录用 `lark-cli auth login --domain <name>`- **安全** — 写入操作前确认用户意图,建议 `--dry-run` 预览- **编排** — 说明数据传递、失败回滚、可并行步骤
会不会泄露文件和密钥?检查是否发送含密码或密钥的文件,以及代码里是否直接写了密钥。未发现风险
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。未发现风险
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。未发现风险
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。发现 1 项风险
中风险

生成流程会继承两个未提供的相邻 Skill 的指令

原文依据:2 处
发现了什么

当前 Skill 在 API 不足时要求使用 lark-openapi-explorer,并在生成模板中要求先阅读 lark-shared。两份被引用文件均未包含在所提供来源中,因此无法审查它们会追加哪些命令、权限或行为。

为什么需要注意

若这些相邻文件含有不安全、被篡改或范围过宽的指令,AI 在调研或运行生成的 Skill 时可能执行额外操作。当前证据不能证明这些文件恶意,也不能证明它们安全。

这段证据能说明什么

这是有效的跨文件指令:当本 CLI 覆盖不足时应使用 lark-openapi-explorer,而生成模板又要求先阅读 lark-shared。来源明确称前者用于查找方法、参数和权限,但两份相邻文件均未提供,无法判断其中是否追加高权限、写入或其他风险行为,也无法确认“会继承危险指令”。用户可要求作者一并提供这两个依赖供审计,或限制代理在审查前不得读取和执行其命令。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:39来自说明文档
如果以上命令无法覆盖需求(CLI 没有对应的已注册 API 或 Shortcut),使用 [lark-openapi-explorer](../lark-openapi-explorer/SKILL.md) 从飞书官方文档库逐层挖掘原生 OpenAPI 接口,获取完整的方法、路径、参数和权限信息,再通过 `lark-cli api` 裸调完成任务。通过以上流程确定需要哪些 API、参数和 scope。
查看另外 1 个位置
SKILL.md:58来自说明文档
# <标题>> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md)。
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。未发现风险

Skill 逻辑拆解

4 个说明模块

该 Skill 的用途是指导 AI 创建新的飞书 CLI Skill;生成物是一份放入指定 skills 目录的 SKILL.md,而不是独立程序。

查看原文
SKILL.md:10来自说明文档
# Skill Maker基于 lark-cli 创建新 Skill。Skill = 一份 `SKILL.md`,教 AI 用 CLI 命令完成任务。
SKILL.md:43来自说明文档
## SKILL.md 模板文件放在 `skills/lark-<name>/SKILL.md`:

它优先使用快捷命令和已注册 API;无法覆盖需求时,允许通过通用 `lark-cli api` 调用任意飞书 OpenAPI 路径。

查看原文
SKILL.md:16来自说明文档
```bashlark-cli <service> <resource> <method>          # 已注册 APIlark-cli <service> +<verb>                      # Shortcut(高级封装)lark-cli api <METHOD> <path> [--data/--params]  # 任意飞书 OpenAPIlark-cli schema <service.resource.method>       # 查参数定义```优先级:Shortcut > 已注册 API > `api` 裸调。

模板要求记录所需权限,并提出写操作前确认意图、使用 dry-run 预览以及说明失败回滚;这些是指导原则,文本没有展示强制执行机制。

查看原文
SKILL.md:73来自说明文档
## 权限| 操作 | 所需 scope ||------|-----------|| xxx | `scope:name` |```
SKILL.md:82来自说明文档
- **description 决定触发** — 包含功能关键词 + "当用户需要...时使用"- **认证** — 说明所需 scope,登录用 `lark-cli auth login --domain <name>`- **安全** — 写入操作前确认用户意图,建议 `--dry-run` 预览- **编排** — 说明数据传递、失败回滚、可并行步骤
从这里开始 · 工作说明SKILL.md
lark-skill-maker
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。
文件与检查记录1 个文件

检查范围与遗漏

逐文件查看涉及的内容

下方列出本次涉及的原文范围;纳入检查不代表已查清所有问题。

  • SKILL.md已纳入全文

这份报告只针对上方版本。我们看了拿到的代码和说明文件,没有实际运行 Skill,也没有检查它另外安装的软件包。因此,这不是“保证安全”的承诺;换了版本或使用环境,结果也可能不同。

  • SKILL.md工作说明

代码和说明中提到的操作

运行命令
SKILL.md:16来自说明文档
```bashlark-cli <service> <resource> <method>          # 已注册 API
SKILL.md:27来自说明文档
```bash# 1. 查看已有的 API 资源和 Shortcut
SKILL.md:64来自说明文档
\```bash# 单步操作
读取了多少行
86
文件校验值(用于核对版本)
1853be810762bc606658b7b1e35c16d20b439eeca0f85773a58c596a40f491b9