跳转到正文
报告库
用途分类 / 数据分析

Lark Task Skill 安全审计

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

飞书任务:管理任务、清单和任务智能体。创建待办任务、查看和更新任务状态、拆分子任务、组织任务清单、分配协作成员、上传任务附件、注册或注销任务智能体、更新任务智能体的主页数据、写入智能体任务记录。当用户需要创建待办事项、查看任务列表、跟踪任务进度、管理项目清单或给他人分配任务、为任务上传附件文件、注册注销任务智能体、更新智能体主页数据、写入任务记录时使用。

第三方安全检查结论

发现安全风险

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

附件上传会把本地文件内容发送到飞书

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

该命令读取当前工作目录中的相对路径文件,并上传到指定任务或任务智能体。路径限制能阻止目录逃逸,但不能判断文件是否包含密钥、客户资料或其他敏感内容。

为什么需要注意

如果选择了错误文件、任务 GUID 或任务智能体,文件内容可能被对该飞书资源有访问权的其他成员看到。

该功能会读取当前工作目录中的一个本地文件,并将其上传到指定的飞书任务或任务智能体。相对路径、目录限制和 50 MB 上限降低了任意文件读取风险,且流程要求先确认目标与路径;但文档没有要求检查文件是否含凭据或敏感资料。若用户或智能体选错文件,内容会离开本机并对任务可访问者可见。用户可要求上传前明确显示文件名、目标任务和敏感信息检查结果。

references/lark-task-upload-attachment.md:38来自说明文档
|-----------|----------|-------------|| `--resource-id <guid_or_applink>` | Yes | Target resource GUID. Accepts a raw task GUID or a Feishu task applink URL (`.../client/todo/task?guid=...`); the `guid` query parameter is extracted automatically. Do not use `suite_entity_num` / display IDs like `t104121`. || `--file <path>` | Yes | Local file path to upload. Must be a relative path within the current working directory; absolute paths and paths escaping the cwd are rejected. Single file only, ≤ 50 MB. || `--resource-type <type>` | No | Owning resource type. Defaults to `task`. Use `task_delivery` when uploading to task agents. || `--user-id-type <type>` | No | User ID type for the request. Defaults to `open_id`. |
查看另外 3 个位置
references/lark-task-upload-attachment.md:45来自说明文档
1. Confirm the target task GUID (or applink) and the local file path with the user.2. Ensure the file is within the current working directory and its size is ≤ 50 MB; otherwise ask the user to move/split the file.3. Determine if this is a task agent: if yes, add `--resource-type task_delivery`.4. Execute `lark-cli task +upload-attachment --resource-id "..." --file "..."`.5. Report the returned attachment record. The output exposes all fields returned by the API (e.g. `guid`, `name`, `size`, `url`, `uploader`, ...); always surface the attachment `guid` and, if present, the `url` so the user can jump to the attachment directly.
references/lark-task-upload-attachment.md:5来自说明文档
Upload a single local file as an attachment to a task (or any resource type accepted by the Task attachment endpoint). Max file size per upload is **50 MB**. For task agents, use `--resource-type=task_delivery`.
references/lark-task-upload-attachment.md:39来自说明文档
| `--resource-id <guid_or_applink>` | Yes | Target resource GUID. Accepts a raw task GUID or a Feishu task applink URL (`.../client/todo/task?guid=...`); the `guid` query parameter is extracted automatically. Do not use `suite_entity_num` / display IDs like `t104121`. || `--file <path>` | Yes | Local file path to upload. Must be a relative path within the current working directory; absolute paths and paths escaping the cwd are rejected. Single file only, ≤ 50 MB. || `--resource-type <type>` | No | Owning resource type. Defaults to `task`. Use `task_delivery` when uploading to task agents. || `--user-id-type <type>` | No | User ID type for the request. Defaults to `open_id`. |
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。未发现风险
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。发现 1 项风险
中风险

精确设置清单成员会替换全部现有成员

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

--set 不是增量添加,而是用指定 ID 列表替换整个成员集合。即使流程要求确认,用户若把“设置这些成员”理解为“添加这些成员”,仍可能误删未列出的成员。

为什么需要注意

现有成员可能失去清单访问或编辑权限,团队协作和任务可见性可能中断。

`--set` 明确会用给定 ID 精确替换全部现有成员,而不是增量添加;遗漏的成员因此可能失去清单访问或编辑权限。示例和参数说明清楚区分了 `--add` 与 `--set`,流程也要求确认,所以风险主要发生在用户未理解“替换全部”或确认信息未列出现有成员时。用户可要求执行前展示当前成员及替换后的完整差异。

references/lark-task-tasklist-members.md:24来自说明文档
|-----------|----------|-------------|| `--tasklist-id <id>` | Yes | The GUID of the tasklist, or a full AppLink URL. || `--add <ids>` | No | Comma-separated list of user `open_id`s to add as members. || `--remove <ids>` | No | Comma-separated list of user `open_id`s to remove from members. || `--set <ids>` | No | Comma-separated list of user `open_id`s to exactly set as members (replaces all existing). |
查看另外 3 个位置
references/lark-task-tasklist-members.md:31来自说明文档
1. Confirm the tasklist and members to add/remove/set.2. Execute the command.3. Report success.> [!CAUTION]> This is a **Write Operation** -- You must confirm the user's intent before executing.
references/lark-task-tasklist-members.md:10来自说明文档
```bash# Add a memberlark-cli task +tasklist-members --tasklist-id "tl_xxx" --add "ou_aaa"# Remove a memberlark-cli task +tasklist-members --tasklist-id "tl_xxx" --remove "ou_aaa"# Replace all members exactlylark-cli task +tasklist-members --tasklist-id "tl_xxx" --set "ou_aaa,ou_bbb"```
references/lark-task-tasklist-members.md:27来自说明文档
| `--remove <ids>` | No | Comma-separated list of user `open_id`s to remove from members. || `--set <ids>` | No | Comma-separated list of user `open_id`s to exactly set as members (replaces all existing). |
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。未发现风险
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。发现 1 项风险
低风险

泛化的“帮我创建任务”会被强制解释为分配给当前用户

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

创建流程规定,即使用户只说“帮我创建一个任务”,也必须查询当前登录者 open_id 并把任务分配给该用户。这增加了用户未明确表达的负责人选择。

为什么需要注意

任务可能错误地出现在当前用户的负责列表中,触发提醒、统计或责任归属;在代他人操作或共享账号场景中尤其容易产生误解。

流程把“帮我创建一个任务”本身视为必须分配给当前登录用户,即使用户没有明确指定负责人;它还会读取登录身份的 open_id 并用于 `--assignee`。这可能创建用户未要求的负责人关系并触发任务通知或责任归属。虽然创建前必须确认负责人且写操作需确认,但该默认解释仍是实际指令。用户可要求确认时明确说明“将分配给当前账号”,或在未指定负责人时保持未分配。

references/lark-task-create.md:57来自说明文档
1. Confirm with the user: task summary, due date, assignee, and tasklist if necessary.   - **Crucial Rule for Assignee**: If the user explicitly or implicitly says "create a task for me" (给我创建一个任务), or "help me create a task" (帮我新建/创建一个任务), you MUST assign the task to the current logged-in user. You can get the current user's `open_id` by executing `lark-cli auth status` (it already outputs JSON by default, so do not add `--json`) or `lark-cli contact +get-user` first, extracting `.identities.user.openId` (from `auth status`) or `.data.user.open_id` (from `contact +get-user`), and then passing it to the `--assignee` parameter.2. Execute `lark-cli task +create --summary "..." ...`3. Judge success by `ok == true` in the stdout JSON (the success envelope has no `code` field — do not test `code == 0`), then report the result: task ID (`data.guid`) and summary.
查看另外 2 个位置
references/lark-task-create.md:43来自说明文档
| `--description <text>` | No | Detailed description of the task || `--assignee <id>` | No | Assignee ID. Use user `open_id` like `ou_xxx` for people, or app ID like `cli_xxx` for apps. || `--follower <id>` | No | Follower ID. Use user `open_id` like `ou_xxx` for people, or app ID like `cli_xxx` for apps. |
references/lark-task-create.md:75来自说明文档
> [!CAUTION]> This is a **Write Operation** -- You must confirm the user's intent before executing.

Skill 逻辑拆解

3 个说明模块

该 Skill 通过 lark-cli 读取、创建和修改飞书任务、清单、成员、提醒、附件及任务智能体数据;相关写入接口需要飞书任务写权限。

查看原文
SKILL.md:91来自说明文档
  - `create` — 创建任务  - `delete` — 删除任务  - `get` — 获取任务详情  - `list` — 列取任务列表  - `patch` — 更新任务
SKILL.md:154来自说明文档
|------|-----------|| `tasks.create` | `task:task:write` || `tasks.delete` | `task:task:write` || `tasks.get` | `task:task:read` || `tasks.list` | `task:task:read` || `tasks.patch` | `task:task:write` || `tasklists.add_members` | `task:tasklist:write` |

所提供的快捷命令文档普遍要求在创建、更新、完成、分配成员等写操作前确认用户意图,降低误操作概率。

查看原文
references/lark-task-create.md:75来自说明文档
> [!CAUTION]> This is a **Write Operation** -- You must confirm the user's intent before executing.
references/lark-task-update.md:40来自说明文档
> [!CAUTION]> This is a **Write Operation** -- You must confirm the user's intent before executing.
references/lark-task-assign.md:37来自说明文档
> [!CAUTION]> This is a **Write Operation** -- You must confirm the user's intent before executing.

附件功能会把当前工作目录内一个不超过 50 MB 的相对路径文件上传到指定飞书任务或任务智能体,并要求确认目标与路径。

查看原文
references/lark-task-upload-attachment.md:38来自说明文档
|-----------|----------|-------------|| `--resource-id <guid_or_applink>` | Yes | Target resource GUID. Accepts a raw task GUID or a Feishu task applink URL (`.../client/todo/task?guid=...`); the `guid` query parameter is extracted automatically. Do not use `suite_entity_num` / display IDs like `t104121`. || `--file <path>` | Yes | Local file path to upload. Must be a relative path within the current working directory; absolute paths and paths escaping the cwd are rejected. Single file only, ≤ 50 MB. || `--resource-type <type>` | No | Owning resource type. Defaults to `task`. Use `task_delivery` when uploading to task agents. || `--user-id-type <type>` | No | User ID type for the request. Defaults to `open_id`. |
references/lark-task-upload-attachment.md:45来自说明文档
1. Confirm the target task GUID (or applink) and the local file path with the user.2. Ensure the file is within the current working directory and its size is ≤ 50 MB; otherwise ask the user to move/split the file.3. Determine if this is a task agent: if yes, add `--resource-type task_delivery`.4. Execute `lark-cli task +upload-attachment --resource-id "..." --file "..."`.5. Report the returned attachment record. The output exposes all fields returned by the API (e.g. `guid`, `name`, `size`, `url`, `uploader`, ...); always surface the attachment `guid` and, if present, the `url` so the user can jump to the attachment directly.

该 Skill 把认证、权限和安全规则委托给未包含在本次证据中的相邻 lark-shared Skill,因此无法从所提供源码核验这些规则的具体内容。

查看原文
SKILL.md:13来自说明文档
**CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md),其中包含认证、权限处理**
references/lark-task-create.md:3来自说明文档
> **Prerequisites:** Please read `../lark-shared/SKILL.md` to understand authentication, global parameters, and security rules.
从这里开始 · 工作说明SKILL.md
lark-task
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。

文件引用关系图

18 处引用
哪些文件发起引用引用了什么
连线表示真实的文件引用,不是运行顺序。点击节点可高亮相关连线,并查看具体文件和原文位置。虚线表示还有文件需要定位。
文件与检查记录18 个文件

检查范围与遗漏

逐文件查看涉及的内容

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

  • SKILL.md已纳入全文
  • references/lark-task-assign.md已纳入全文
  • references/lark-task-comment.md已纳入全文
  • references/lark-task-complete.md已纳入全文
  • references/lark-task-create.md已纳入全文
  • references/lark-task-followers.md已纳入全文
  • references/lark-task-get-my-tasks.md已纳入全文
  • references/lark-task-get-related-tasks.md已纳入全文
  • references/lark-task-reminder.md已纳入全文
  • references/lark-task-reopen.md已纳入全文
  • references/lark-task-search.md已纳入全文
  • references/lark-task-set-ancestor.md已纳入全文
  • references/lark-task-tasklist-create.md已纳入全文
  • references/lark-task-tasklist-members.md已纳入全文
  • references/lark-task-tasklist-search.md已纳入全文
  • references/lark-task-tasklist-task-add.md已纳入全文
  • references/lark-task-update.md已纳入全文
  • references/lark-task-upload-attachment.md已纳入全文

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

  • SKILL.md工作说明
  • references/lark-task-assign.md配套文件
  • references/lark-task-comment.md配套文件
  • references/lark-task-complete.md配套文件
  • references/lark-task-create.md配套文件
  • references/lark-task-followers.md配套文件
  • references/lark-task-get-my-tasks.md配套文件
  • references/lark-task-get-related-tasks.md配套文件
  • references/lark-task-reminder.md配套文件
  • references/lark-task-reopen.md配套文件
  • references/lark-task-search.md配套文件
  • references/lark-task-set-ancestor.md配套文件
  • references/lark-task-tasklist-create.md配套文件
  • references/lark-task-tasklist-members.md配套文件
  • references/lark-task-tasklist-search.md配套文件
  • references/lark-task-tasklist-task-add.md配套文件
  • references/lark-task-update.md配套文件
  • references/lark-task-upload-attachment.md配套文件

代码和说明中提到的操作

运行命令
SKILL.md:17来自说明文档
执行任何 Task 命令前,必须先确认能力真实存在,禁止根据用户意图自行拼接或猜测 `+<verb>`:
SKILL.md:82来自说明文档
```bashlark-cli schema task.<resource>.<method>   # 调用 API 前必须先查看参数结构
references/lark-task-assign.md:9来自说明文档
```bash# Add an assignee
连接外部网站
references/lark-task-complete.md:14来自说明文档
# A task applink is accepted directly; the CLI extracts its guid query valuelark-cli task +complete --task-id "https://applink.larksuite.com/client/todo/task?guid=<task_guid>"```
references/lark-task-create.md:16来自说明文档
  --due "2026-03-25" \  --tasklist-id "https://applink.larkoffice.com/client/todo/task_list?guid=a4b00000-000-000-000-00000000036c"
references/lark-task-create.md:70来自说明文档
    "guid": "e297d3d0-4b60-4a5f-a4d4-xxxxxxxxxxxx",    "url": "https://applink.larkoffice.com/client/todo/detail?guid=e297d3d0-4b60-4a5f-a4d4-xxxxxxxxxxxx"  }
读取了多少行
915
文件校验值(用于核对版本)
79a5754d3e35f298c13645205eb0f87ababb4524f674d70de63fb048130cc4ad