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

Lark Okr Skill 安全审计

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

飞书 OKR:管理目标与关键结果。查看和编辑 OKR 周期、目标、关键结果、对齐关系、量化指标和进展记录。当用户需要查看或创建 OKR、管理目标和关键结果、查看对齐关系时使用。不负责:待办任务管理(lark-task)、日程/会议安排(lark-calendar)、绩效评估

第三方安全检查结论

先别安装或运行

本次检查尚未完成,以下仅展示已取得的结果。

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

机器人身份可能扩大对他人 OKR 的读取范围

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

Skill 允许使用 `--as bot` 查看他人 OKR,但可见说明没有要求先征得用户同意、证明业务需要或优先验证较窄的用户身份权限。所读取的周期详情可包含目标、备注、分数、权重、截止时间和所有者信息。

为什么需要注意

如果机器人拥有比当前用户更广的租户权限,代理可能取得用户本人原本无权查看的员工目标、评价相关分数或内部备注,并将其带入当前会话输出。

这段证据能说明什么

材料确实允许机器人身份读取他人 OKR,但同时限定“需相应权限”,而查看他人 OKR 本身也在该 Skill 声明的用途内。最关键的认证、权限和安全规则被委托给未提供的 `lark-shared/SKILL.md`,因此无法判断是否缺少用户同意、最小权限检查,或机器人身份实际比用户身份读取更多内容。用户应在启用前要求提供共享规则,并限制机器人令牌的 OKR 只读范围。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:15来自说明文档打开原文件
**身份**:OKR 操作默认使用 `--as user`(查看当前用户/上下级的 OKR 时)。也支持 `--as bot` 查看他人 OKR(需相应权限)。
查看另外 5 个位置
references/lark-okr-cycle-detail.md:47来自说明文档打开原文件
      "update_time": "2025-01-15 12:00:00",      "owner": {        "owner_type": "user",        "user_id": "ou_xxx"      },      "cycle_id": "1234567890123456789",      "position": 0,      "score": 0.75,      "weight": 1.0,      "deadline": "2025-06-30 23:59:59",      "category_id": "cat_456",      "content": "{...}",      "notes": "{...}",      "key_results": [
references/lark-okr-entities.md:375来自说明文档打开原文件
|--------------------------------|------|--------------|| `okr:okr.content:readonly`     | 读    | 读取 OKR 内容    || `okr:okr.content:writeonly`    | 写    | 写入/删除 OKR 内容 || `okr:okr.period:readonly`      | 读    | 读取 OKR 周期    || `okr:okr.progress:readonly`    | 读    | 读取进展记录       |
SKILL.md:4来自说明文档打开原文件
version: 1.0.0description: "飞书 OKR:管理目标与关键结果。查看和编辑 OKR 周期、目标、关键结果、对齐关系、量化指标和进展记录。当用户需要查看或创建 OKR、管理目标和关键结果、查看对齐关系时使用。不负责:待办任务管理(lark-task)、日程/会议安排(lark-calendar)、绩效评估"metadata:
SKILL.md:13来自说明文档打开原文件
**CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md),其中包含认证、权限处理****身份**:OKR 操作默认使用 `--as user`(查看当前用户/上下级的 OKR 时)。也支持 `--as bot` 查看他人 OKR(需相应权限)。
references/lark-okr-cycle-detail.md:31来自说明文档打开原文件
1. 使用 `lark-cli okr +cycle-list` 获取 OKR 周期 ID。2. 执行 `lark-cli okr +cycle-detail --cycle-id "123456"`。3. 报告结果:找到的目标数量、每个目标的 ID、分数、权重及其关键结果。
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。发现 1 项风险
高风险

进展记录可在没有强制确认参数的情况下永久删除

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

删除指南明确说明操作不可恢复,但真实删除命令无需类似评论删除所要求的 `--yes`。工作流仅建议先读取核对,随后直接执行删除;建议不是技术阻止。

为什么需要注意

如果代理选错进展 ID、误解用户范围或跳过核对,飞书中的进展正文和历史会被永久移除。

该风险有明确依据。真实删除命令只要求进展记录 ID,`--dry-run` 是可选项,也没有类似评论删除的 `--yes` 强制确认。因此,只要代理误认 ID 或在用户未明确授权永久删除时执行命令,记录就可能不可恢复地丢失。文档建议先读取核对,但这不是技术阻止。用户可要求作者为真实删除增加强制确认,并限制代理仅在明确删除请求后执行。

references/lark-okr-progress-delete.md:5来自说明文档打开原文件
根据 ID 删除一条 OKR 进展记录。此操作为高风险操作,删除后不可恢复。
查看另外 4 个位置
references/lark-okr-progress-delete.md:10来自说明文档打开原文件
```bash# 删除指定 ID 的进展记录lark-cli okr +progress-delete --progress-id 1234567890123456789# 预览 API 调用而不实际执行lark-cli okr +progress-delete --progress-id 1234567890123456789 --dry-run```
references/lark-okr-progress-delete.md:27来自说明文档打开原文件
1. 使用 `+progress-get` 确认要删除的进展记录 ID 和内容。2. 执行 `lark-cli okr +progress-delete --progress-id "1234567890123456789"`。3. 报告结果:已删除的进展记录 ID。> **注意**:此操作不可恢复,建议在删除前先用 `+progress-get` 确认记录内容。
references/lark-okr-comment-delete.md:23来自说明文档打开原文件
|--------------|--------------|--------|-------------------------------------------------------------|| --comment-id | 是           | —      | 要删除的评论 ID,int64 正整数。建议先由 +comment-get 核对。 || --yes        | 真实执行时是 | —      | 确认 high-risk-write 操作。--dry-run 时不需要。             || --dry-run    | 否           | —      | 预览 API 调用而不实际执行。                                 |
references/lark-okr-progress-delete.md:19来自说明文档打开原文件
| 参数              | 必填 | 默认值    | 说明                    ||-----------------|----|--------|-----------------------|| `--progress-id` | 是  | —      | 进展记录 ID(int64 类型,正整数) || `--dry-run`     | 否  | —      | 预览 API 调用而不实际执行。      || `--format`      | 否  | `json` | 输出格式。                 |
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。未发现风险
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。未发现风险
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。发现 2 项风险
中风险

评论选区失败会静默扩大为全文评论

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

创建 Objective/KR 划词评论时,如果指定文本未匹配,指南说明会回退到选择全文;当用户没指定位置时,也建议代理直接使用 `--select-all`。这会改变评论所指向的业务上下文,而不是仅仅返回错误。

为什么需要注意

本应针对一句话的批评、批准或行动要求可能显示为针对整个目标/KR,误导协作者并扩大评论影响范围。

该风险有明确依据。创建 Objective/KR 划词评论时,选区文本未匹配不会报错,而会回退到全文;用户未指定段落时,指南也允许直接选择全文。只要正文变化、文本选错或意图不清,评论就可能被挂到比用户预期更广的上下文,影响同事对反馈对象的理解。用户可要求作者取消静默回退,并在全文选择前展示目标正文和取得确认。

references/lark-okr-comment-create.md:34来自说明文档打开原文件
- 全局评论/周期评论/OKR评论: 指 OKR 周期的实体级评论,当用户要求创建全局评论,或对某个周期的 OKR 进行评论(不特指某个 Objective 或 KeyResult 时),可以创建周期实体级评论。- 划词评论: 指 Objective/KeyResult 下的划词评论。需要注意,Objective/KeyResult 下不能创建实体级评论(必须携带 selected-text 或 select-all)。若用户没有特别指定需评论的段落,使用 --select-all
查看另外 2 个位置
references/lark-okr-comment-create.md:69来自说明文档打开原文件
4. 执行命令;真实写入前可以先使用 --dry-run 检查 URL、query 和 body。5. 在创建(而非回复) Objective/KeyResult 划词评论时,若用户未指定评论的具体位置,通常可以使用 select-all 而非自行指定 selected-text,除非用户需求中明确了具体的段落。   - 若需使用 selected-text 精确选择划词选区时,只可传入正文中真实存在的连续纯文本片段;不要包含或跨越 mention 占位符,否则无法命中具体内容。   - selected-text 会选择对应文本的首个命中。若 selected-text 未匹配到内容,会 fallback 至选择全文。
references/lark-okr-comment-create.md:68来自说明文档打开原文件
3. 准备 content:content 是业务必填,通常建议使用 simple 格式,需要精确控制 @用户的位置时,可以使用 richtext 格式,参考 [ContentBlock 格式](lark-okr-contentblock.md)4. 执行命令;真实写入前可以先使用 --dry-run 检查 URL、query 和 body。5. 在创建(而非回复) Objective/KeyResult 划词评论时,若用户未指定评论的具体位置,通常可以使用 select-all 而非自行指定 selected-text,除非用户需求中明确了具体的段落。   - 若需使用 selected-text 精确选择划词选区时,只可传入正文中真实存在的连续纯文本片段;不要包含或跨越 mention 占位符,否则无法命中具体内容。   - selected-text 会选择对应文本的首个命中。若 selected-text 未匹配到内容,会 fallback 至选择全文。
中风险

解决或重开一条划词评论会改变整个评论串

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

命令只接收一个评论 ID,但当该评论带有 `selection.id` 时,状态变更会作用于同一选区下的全部评论。指南要求检查范围,却没有强制确认参数。

为什么需要注意

用户以为只关闭或重开一条回复时,整个讨论串都可能被标记为已解决或重新打开,改变其他参与者评论的工作状态。

该风险有明确依据。命令只接收一个评论 ID,但如果它属于划词评论,solve/reopen 会改变同一 `selection.id` 下全部评论的状态,而非只改该条。文档要求先检查范围并确认动作,但 `--dry-run` 可选且没有强制确认参数;误选 ID 时可能关闭或重开整个讨论串。用户可要求作者在检测到划词串时列出受影响评论并再次确认。

references/lark-okr-comment-solve-reopen.md:5来自说明文档打开原文件
解决/重新打开一条评论。实体级评论按单条评论处理;划词评论则是操作整个评论串。只支持 user 身份。
查看另外 3 个位置
references/lark-okr-comment-solve-reopen.md:32来自说明文档打开原文件
1. 使用 [+comment-list](lark-okr-comment-list.md)、[+comment-detail](lark-okr-comment-detail.md) 或 [+comment-get](lark-okr-comment-get.md) 获取并确认 comment-id。2. 检查评论是否属于划词串:如果返回有 selection.id,solve/reopen 会影响同一 selection.id 下的全部评论。3. 根据用户动作选择 +comment-solve 或 +comment-reopen;先用 --dry-run 检查目标接口。4. 执行后检查 affected_comments,确认实体级评论或整条评论串的状态变化范围。
references/lark-okr-comment-solve-reopen.md:72来自说明文档打开原文件
- 划词评论按评论串解决/重开,但 [+comment-delete](lark-okr-comment-delete.md) 仍然只删除单条评论。- 解决不是删除,之后可以用 +comment-reopen 恢复;删除后不可恢复。- 该操作是写操作,执行前应确认 comment-id 和目标动作。
references/lark-okr-comment-solve-reopen.md:24来自说明文档打开原文件
|----------------|------|---------|---------------------------------------------------------------------------------------|| --comment-id   | 是   | —       | 评论 ID,int64 正整数。可从 +comment-list、+comment-detail 或 +comment-get 获取。     || --user-id-type | 否   | open_id | open_id、union_id、user_id 或 user_key。                                              || --style        | 否   | simple  | affected_comments 的正文风格:simple(SemiPlainContent)或 richtext(ContentBlock)。 || --dry-run      | 否   | —       | 预览 API 调用而不实际执行。                                                           || --format       | 否   | json    | 输出格式。                                                                            |

Skill 逻辑拆解

5 个说明模块

该 Skill 通过必需的 `lark-cli`,默认以当前用户身份读取和修改飞书 OKR;它也允许在具备相应权限时用机器人身份查看他人的 OKR。

查看原文
SKILL.md:7来自说明文档打开原文件
  requires:    bins: [ "lark-cli" ]  cliHelp: "lark-cli okr --help"---
SKILL.md:15来自说明文档打开原文件
**身份**:OKR 操作默认使用 `--as user`(查看当前用户/上下级的 OKR 时)。也支持 `--as bot` 查看他人 OKR(需相应权限)。

其功能不仅是查看:它能创建和编辑目标/KR、更新分数和指标、调整顺序与权重、管理对齐关系,并创建、修改或删除评论和进展记录。

查看原文
SKILL.md:22来自说明文档打开原文件
| 查看自己/他人的 OKR          | 获取用户 ID -> `+cycle-list` -> `+cycle-detail` -> 按需查指标/进展记录                                                  | [`cycle-list`](references/lark-okr-cycle-list.md), [`cycle-detail`](references/lark-okr-cycle-detail.md), [`indicators`](references/lark-okr-indicators.md), [`progress-list`](references/lark-okr-progress-list.md) || 为自己写一组 OKR             | 优先用 `+batch-create` 创建 Objective/KR 骨架                                                                           | [`batch-create`](references/lark-okr-batch-create.md), [`contentblock`](references/lark-okr-contentblock.md)                                                                                                         || 只新增一条 O 或单条 KR       | 用 `+create`                                                                                                            | [`create`](references/lark-okr-create.md)                                                                                                                                                                            || 编辑内容/备注/截止时间       | 用 `+patch`                                                                                                             | [`patch`](references/lark-okr-patch.md)                                                                                                                                                                              || 修改 OKR 分数                | 只有用户明确说“分数”“评分”“打分”“score”时才用 `+patch --score`;分数不是进度/完成度                                     | [`patch`](references/lark-okr-patch.md)                                                                                                                                                                              || 调整顺序或权重               | 用 `+reorder` / `+weight`                                                                                               | [`reorder`](references/lark-okr-reorder.md), [`weight`](references/lark-okr-weight.md)                                                                                                                               || 更新数字进度/完成度          | 百分比或不带单位数字用 `+indicator-update`;需要改单位/目标值时查指标后用 `indicators patch`                            | [`indicator-update`](references/lark-okr-indicator-update.md), [`indicators`](references/lark-okr-indicators.md)                                                                                                     || 写文字进展                   | 用 `+progress-create`;如果文本和数字都有,百分比或默认单位可使用 `--progress-percent` 统一改,非百分比单位更新量化指标 | [`progress-create`](references/lark-okr-progress-create.md), [`progress-list`](references/lark-okr-progress-list.md), [`progress-update`](references/lark-okr-progress-update.md)                                    || 对齐目标                     | 直接按对齐关系工作流处理                                                                                                | [`alignments`](references/lark-okr-alignments.md)                                                                                                                                                                    || 查询/创建/修改/解决 OKR 评论 | 获取周期下全部评论聚合用 `+comment-detail`,查询单个 O/KR/进展或仅查询周期全局评论用 `+comment-list`;                | [`comment`](references/lark-okr-comment-list.md), [`comment-create`](references/lark-okr-comment-create.md), [`comment-solve-reopen`](references/lark-okr-comment-solve-reopen.md)                                   |
SKILL.md:88来自说明文档打开原文件
| [`+comment-get`](references/lark-okr-comment-get.md)             | 获取单条评论详情                                                                                              || [`+comment-create`](references/lark-okr-comment-create.md)       | 创建新评论或回复已有评论(仅支持 --as user)                                                                    || [`+comment-patch`](references/lark-okr-comment-patch.md)         | 修改评论内容(仅支持 --as user)                                                                                || [`+comment-delete`](references/lark-okr-comment-delete.md)       | 永久删除单条评论(仅支持 --as user)                                                                            || [`+comment-solve`](references/lark-okr-comment-solve-reopen.md)  | 解决评论或划词评论串(仅支持 --as user)                                                                        || [`+comment-reopen`](references/lark-okr-comment-solve-reopen.md) | 重新打开评论或划词评论串(仅支持 --as user)                                                                    |

读取整周期评论时,该 Skill 会遍历周期中的目标、关键结果和进展,再读取四类对象的评论;请求数量随周期内容增长,并会返回评论正文和评论者 ID。

查看原文
references/lark-okr-comment-detail.md:31来自说明文档打开原文件
1. 使用 +cycle-list 获取周期 ID;如果用户已经提供周期 ID,直接使用。2. 执行 +comment-detail --cycle-id "..."。shortcut 会依次获取周期下的 Objective、每个 Objective 下的 KeyResult、每个 Objective/KeyResult 下的 Progress,以及四类对象的评论。3. 评论接口自动处理分页;对象读取和评论读取使用有界并发。任一底层请求失败时整体返回错误,不返回静默不完整结果。4. 评论串按首条评论的 create_time 升序排列,串内评论也按 create_time 升序排列。
references/lark-okr-comment-detail.md:46来自说明文档打开原文件
        {          "id": "7000000000000000001",          "target": {"target_type": "objective", "target_id": "2345678901234567890"},          "commentator_id": "ou_xxx",          "status": "open",          "create_time": "2025-01-15 10:30:00",          "update_time": "2025-01-15 10:30:00",          "selection": {"id": "8000000000000000001", "selected_text": "提升核心接口稳定性"},          "content": {"text": "请补充指标", "mention": [], "docs": [], "images": []}        }
references/lark-okr-comment-detail.md:69来自说明文档打开原文件
- 这是聚合查询,接口调用次数取决于周期下的 Objective、KeyResult 和 Progress 数量。- +comment-detail 不接受 department-id-type,该接口参数由 shortcut 忽略。

本地图片上传被限制为当前工作目录内的相对路径,并明确禁止通过符号链接访问目录外文件。

查看原文
references/lark-okr-image-upload.md:104来自说明文档打开原文件
## 安全限制- `--file` 参数**必须使用相对路径**(如 `./photo.png` 或 `images/photo.png`),不支持绝对路径- 图片文件必须存在于当前工作目录或其子目录中- 不支持符号链接指向目录外的文件
从这里开始 · 工作说明SKILL.md
lark-okr
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。

文件引用关系图

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

检查范围与遗漏

  • 有检测结果未通过证据校验或未完成处理,本报告不能代表完整检查。
逐文件查看涉及的内容

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

  • SKILL.md已纳入全文
  • references/lark-okr-alignments.md已纳入全文
  • references/lark-okr-batch-create.md已纳入全文
  • references/lark-okr-comment-create.md已纳入全文
  • references/lark-okr-comment-delete.md已纳入全文
  • references/lark-okr-comment-detail.md已纳入全文
  • references/lark-okr-comment-get.md已纳入全文
  • references/lark-okr-comment-list.md已纳入全文
  • references/lark-okr-comment-patch.md已纳入全文
  • references/lark-okr-comment-solve-reopen.md已纳入全文
  • references/lark-okr-contentblock.md已纳入全文
  • references/lark-okr-create.md已纳入全文
  • references/lark-okr-cycle-detail.md已纳入全文
  • references/lark-okr-cycle-list.md已纳入全文
  • references/lark-okr-entities.md已纳入全文
  • references/lark-okr-image-upload.md已纳入全文
  • references/lark-okr-indicator-update.md已纳入全文
  • references/lark-okr-indicators.md已纳入全文
  • references/lark-okr-patch.md已纳入全文
  • references/lark-okr-progress-create.md已纳入全文
  • references/lark-okr-progress-delete.md已纳入全文
  • references/lark-okr-progress-get.md已纳入全文
  • references/lark-okr-progress-list.md已纳入全文
  • references/lark-okr-progress-update.md已纳入全文
  • references/lark-okr-reorder.md已纳入全文
  • references/lark-okr-weight.md已纳入全文

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

  • SKILL.md工作说明
  • references/lark-okr-alignments.md配套文件
  • references/lark-okr-batch-create.md配套文件
  • references/lark-okr-comment-create.md配套文件
  • references/lark-okr-comment-delete.md配套文件
  • references/lark-okr-comment-detail.md配套文件
  • references/lark-okr-comment-get.md配套文件
  • references/lark-okr-comment-list.md配套文件
  • references/lark-okr-comment-patch.md配套文件
  • references/lark-okr-comment-solve-reopen.md配套文件
  • references/lark-okr-contentblock.md配套文件
  • references/lark-okr-create.md配套文件
  • references/lark-okr-cycle-detail.md配套文件
  • references/lark-okr-cycle-list.md配套文件
  • references/lark-okr-entities.md配套文件
  • references/lark-okr-image-upload.md配套文件
  • references/lark-okr-indicator-update.md配套文件
  • references/lark-okr-indicators.md配套文件
  • references/lark-okr-patch.md配套文件
  • references/lark-okr-progress-create.md配套文件
  • references/lark-okr-progress-delete.md配套文件
  • references/lark-okr-progress-get.md配套文件
  • references/lark-okr-progress-list.md配套文件
  • references/lark-okr-progress-update.md配套文件
  • references/lark-okr-reorder.md配套文件
  • references/lark-okr-weight.md配套文件

代码和说明中提到的操作

运行命令
SKILL.md:36来自说明文档打开原文件
```bashlark-cli contact +search-user --query "张三" --has-chatted --as user
SKILL.md:42来自说明文档打开原文件
```bash# 查用户周期,再用周期 ID 查详情
references/lark-okr-alignments.md:21来自说明文档打开原文件
```bashlark-cli okr objective.alignments list --objective-id "<目标ID>" [flags]
连接外部网站
references/lark-okr-contentblock.md:52来自说明文档打开原文件
                "link": {                  "url": "https://example.com"                }
references/lark-okr-contentblock.md:60来自说明文档打开原文件
            "docs_link": {              "url": "https://larkoffice.com/docx/xxx",              "title": "Lark Document"
references/lark-okr-contentblock.md:79来自说明文档打开原文件
            "file_token": "file_xxx",            "src": "https://...",            "width": 800,
读取了多少行
3,373
文件校验值(用于核对版本)
81960b879c629e0c9bfa76404f8f195a952677ef680869a25c481cc475dc90fb