跳转到正文
报告库
用途分类 / 文档处理

Lark OpenAPI Explorer Skill 安全审计

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

飞书/Lark 原生 OpenAPI 探索:从官方文档库中挖掘未经 CLI 封装的原生 OpenAPI 接口。当用户的需求无法被现有 lark-* skill 或 lark-cli 已注册命令满足,需要查找并调用原生飞书 OpenAPI 时使用。

第三方安全检查结论

发现安全风险

已检查文件
1
发现的风险
2
会不会运行危险命令?检查是否下载程序后直接运行、让他人远程控制电脑,或藏起要运行的命令。未发现风险
会不会泄露文件和密钥?检查是否发送含密码或密钥的文件,以及代码里是否直接写了密钥。发现 1 项风险
中风险

通用 GET 调用可能读取当前凭据可访问的敏感飞书数据

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

技能允许通过原生 GET 请求访问文档中发现的接口,并要求向用户呈现挖掘结果。本文件的明确确认规则只涵盖 POST、PUT 和 DELETE;对读取通讯录、消息或其他敏感内容的 GET 调用没有可见的逐次确认、字段过滤或脱敏要求。外部 `lark-shared` 可能另有规则,但本次证据无法核实。

为什么需要注意

如果选择了包含个人信息、消息或内部业务数据的接口,响应可能被带入代理上下文并显示给当前会话用户,扩大敏感数据的可见范围。

这段证据能说明什么

源码确实提供通用 GET 调用,而且可见的逐次确认规则只点名 POST、PUT、DELETE。然而,没有给出读取通讯录、消息或其他敏感数据的具体 GET 接口,也未说明会自动执行 GET 或把响应内容直接展示给用户;该技能还要求先阅读未随证据提供的 `lark-shared` 安全规则。因此,可确认存在依赖当前凭据权限的通用读取能力,但无法仅凭这些行确定敏感数据会在缺少授权或脱敏的情况下被读取或披露。用户可在使用前要求列明读取端点、字段、权限范围和输出处理方式。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:83来自说明文档打开原文件
```bash# GET 请求lark-cli api GET /open-apis/<path> --params '{"key":"value"}'# POST 请求lark-cli api POST /open-apis/<path> --data '{"key":"value"}'
查看另外 4 个位置
SKILL.md:97来自说明文档打开原文件
## 输出规范向用户呈现挖掘结果时,按以下格式组织:1. **API 名称与功能**:一句话描述2. **HTTP 方法与路径**:`METHOD /open-apis/...`3. **关键参数**:列出必填和常用可选参数4. **所需权限**:scope 列表5. **调用示例**:给出 `lark-cli api` 的完整命令6. **注意事项**:频率限制、特殊约束等
SKILL.md:112来自说明文档打开原文件
- **写入/删除类 API**(POST/PUT/DELETE)调用前必须确认用户意图- 建议先用 `--dry-run` 预览请求(如支持)- 不要猜测 API 路径或参数——必须从文档中获取确认
SKILL.md:12来自说明文档打开原文件
> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md) 了解认证、身份切换和安全规则。
SKILL.md:101来自说明文档打开原文件
1. **API 名称与功能**:一句话描述2. **HTTP 方法与路径**:`METHOD /open-apis/...`3. **关键参数**:列出必填和常用可选参数4. **所需权限**:scope 列表5. **调用示例**:给出 `lark-cli api` 的完整命令6. **注意事项**:频率限制、特殊约束等
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。未发现风险
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。发现 1 项风险
中风险

原生 API 入口可绕过已注册命令的范围限制

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

该技能在现有命令不足时允许对任意已发现的 `/open-apis/<path>` 发出 GET、POST、PUT 或 DELETE 请求。这是一个通用的认证后接口入口,不受已注册命令集合本身的限制。虽然文本要求写入和删除前确认,但 dry run 仅是建议且取决于支持情况。

为什么需要注意

如果代理选错接口、参数、身份或租户,且当前凭据具有相应权限,可能添加成员、修改群公告,或执行其他更敏感的组织级变更和删除。

该技能的明确目的就是在已注册命令无法满足需求时,使用通用 `lark-cli api` 调用文档中发现的原生接口,包括会改变或删除飞书数据的 POST、PUT、DELETE。它并未绕过飞书账号或应用本身的权限,但确实绕过了 CLI 已注册命令集合所提供的功能边界,因此错误选择路径、参数或目标可能影响用户可访问的数据。技能要求写入/删除前确认并建议 dry-run,这降低风险,但 dry-run 不是强制且可能不受支持。用户可要求作者说明 `lark-cli api` 如何限制凭据、租户和权限范围,并在每次变更前展示目标及请求体。

SKILL.md:81来自说明文档打开原文件
使用 `lark-cli api` 裸调:```bash# GET 请求lark-cli api GET /open-apis/<path> --params '{"key":"value"}'# POST 请求lark-cli api POST /open-apis/<path> --data '{"key":"value"}'# PUT 请求lark-cli api PUT /open-apis/<path> --data '{"key":"value"}'# DELETE 请求lark-cli api DELETE /open-apis/<path>```
查看另外 4 个位置
SKILL.md:112来自说明文档打开原文件
- **写入/删除类 API**(POST/PUT/DELETE)调用前必须确认用户意图- 建议先用 `--dry-run` 预览请求(如支持)- 不要猜测 API 路径或参数——必须从文档中获取确认- 涉及敏感操作(删除群、移除成员等)时,向用户说明影响范围
SKILL.md:129来自说明文档打开原文件
# Step 5: 调用lark-cli api POST /open-apis/im/v1/chats/oc_xxx/members \  --data '{"id_list":["ou_xxx","ou_yyy"]}' \  --params '{"member_id_type":"open_id"}'```
SKILL.md:145来自说明文档打开原文件
# Step 5: 调用lark-cli api PATCH /open-apis/im/v1/chats/oc_xxx/announcement \  --data '{"revision":"0","requests":["<html>公告内容</html>"]}'```
SKILL.md:14来自说明文档打开原文件
当用户的需求**无法被现有 skill 或 CLI 已注册 API 覆盖**时,使用本技能从飞书官方 markdown 文档库中逐层挖掘原生 OpenAPI 接口,然后通过 `lark-cli api` 裸调完成任务。
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。未发现风险
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。未发现风险

Skill 逻辑拆解

6 个说明模块

该技能先检查现有 lark-cli 命令;仅在现有封装不足时,从飞书或 Lark 官方文档逐层查找接口规范,最后通过已认证的 `lark-cli api` 调用原生接口。

查看原文
SKILL.md:37来自说明文档打开原文件
严格按以下步骤逐层检索,**不要跳步或猜测 API**:### Step 1:确认现有能力不足```bash# 先检查是否已有对应的 skill 或已注册 APIlark-cli <可能的service> --help```如果已有对应命令或 shortcut,直接使用,**不需要继续挖掘**。
SKILL.md:70来自说明文档打开原文件
### Step 4:获取 API 完整规范用 WebFetch 获取具体 API 文档,提取完整的调用规范:```WebFetch https://open.feishu.cn/document/server-docs/.../<api>.md  → 提取问题:"返回完整 API 规范:HTTP 方法、URL 路径、路径参数、查询参数、请求体字段(名称/类型/必填/说明)、响应字段、所需权限、错误码"```
SKILL.md:79来自说明文档打开原文件
### Step 5:通过 CLI 调用 API使用 `lark-cli api` 裸调:```bash# GET 请求lark-cli api GET /open-apis/<path> --params '{"key":"value"}'

技能明确要求写入或删除前确认用户意图,并建议在可用时先做 dry run;对删除群、移除成员等敏感操作还要求说明影响范围。

查看原文
SKILL.md:110来自说明文档打开原文件
## 安全规则- **写入/删除类 API**(POST/PUT/DELETE)调用前必须确认用户意图- 建议先用 `--dry-run` 预览请求(如支持)- 不要猜测 API 路径或参数——必须从文档中获取确认- 涉及敏感操作(删除群、移除成员等)时,向用户说明影响范围

认证、身份切换和额外安全规则被委托给相邻的 `lark-shared` 技能,但该文件未包含在本次证据中,因此无法核实这些控制如何限制令牌、租户或身份。

查看原文
SKILL.md:12来自说明文档打开原文件
> **前置条件:** 先阅读 [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md) 了解认证、身份切换和安全规则。
从这里开始 · 工作说明SKILL.md
lark-openapi-explorer
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。
文件与检查记录1 个文件

检查范围与遗漏

逐文件查看涉及的内容

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

  • SKILL.md已纳入全文

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

  • SKILL.md工作说明

代码和说明中提到的操作

连接外部网站
SKILL.md:30来自说明文档打开原文件
|------|----------|| 飞书 (Feishu) | `https://open.feishu.cn/llms.txt` || Lark | `https://open.larksuite.com/llms.txt` |
SKILL.md:31来自说明文档打开原文件
| 飞书 (Feishu) | `https://open.feishu.cn/llms.txt` || Lark | `https://open.larksuite.com/llms.txt` |
SKILL.md:53来自说明文档打开原文件
```WebFetch https://open.feishu.cn/llms.txt  → 提取问题:"列出所有模块文档链接,找出与 <用户需求关键词> 相关的链接"
运行命令
SKILL.md:41来自说明文档打开原文件
```bash# 先检查是否已有对应的 skill 或已注册 API
SKILL.md:83来自说明文档打开原文件
```bash# GET 请求
SKILL.md:121来自说明文档打开原文件
```bash# Step 1: 确认 CLI 没有封装
读取了多少行
154
文件校验值(用于核对版本)
d49992685d332e52cd18178ae94ab835ae46041582c1445a8af50f16a7a6b0c4