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

Lark Attendance Skill 安全审计

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

飞书考勤打卡:查询自己的考勤打卡记录

第三方安全检查结论

发现安全风险

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

固定的空 `user_ids` 可能使“仅查询自己”扩大为更广的考勤查询

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

Skill 无条件把 `user_ids` 设为空数组,并禁止询问用户,同时声称用途是查询自己的记录。提供的材料没有说明该 API 如何解释空数组。

为什么需要注意

如果飞书 API 将空数组解释为未限定用户或所有授权可见用户,拥有较宽组织权限的账号可能返回其他员工的考勤信息。

这段证据能说明什么

该 Skill 的公开用途是查询用户自己的打卡记录,却强制将 `user_ids` 设为空数组且不允许询问用户。材料没有提供 API 对空数组的解释,因此无法确认它会扩大到其他员工,也无法确认服务端会自动限定为当前用户。用户应要求作者提供该字段的官方语义,并在确认前将令牌限制为只读考勤权限。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:17来自说明文档打开原文件
调用任何 API 时,以下参数 **必须自动填充,禁止向用户询问**:| 参数 | 固定值 | 说明                                 ||------|--------|------------------------------------|| `employee_type` | `"employee_no"` | `employee_type`始终等于`"employee_no"` || `user_ids` | `[]`(空数组) | `user_ids`始终等于`[]`                 |
查看另外 3 个位置
SKILL.md:37来自说明文档打开原文件
> **注意**:`user_ids` 数组保持为空[],`employee_type` 保持 `"employee_no"` 不变。
SKILL.md:4来自说明文档打开原文件
version: 1.0.0description: "飞书考勤打卡:查询自己的考勤打卡记录"metadata:
SKILL.md:54来自说明文档打开原文件
| 方法 | 所需 scope ||------|-----------|| `user_tasks.query` | `attendance:task:readonly` |
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。未发现风险
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。未发现风险
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。发现 1 项风险
中风险

认证与权限行为被委托给未提供的相邻 Skill

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

在执行任何操作前,代理被强制要求读取并遵循 `../lark-shared/SKILL.md`,但该文件不在本次审计材料中。该外部文件可以改变认证、权限申请或后续操作方式。

为什么需要注意

如果安装包中的相邻文件被替换或包含超出本 Skill 用途的指令,代理可能在用户无法从本审计确认的条件下请求权限、处理凭据或执行其他操作。

这是一个实际的前置指令:代理在开始前必须读取相邻 Skill,而该文件未出现在审计材料中;且文字明确称其包含认证和权限处理。因此,用户无法从当前材料核实将使用何种凭据、如何申请或处理权限。它不证明存在恶意行为,但构成未审计的信任边界。用户可要求提供并审计该依赖,或禁止加载未固定版本的相邻 Skill。

SKILL.md:13来自说明文档打开原文件
**CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../lark-shared/SKILL.md`](../lark-shared/SKILL.md),其中包含认证、权限处理**
查看另外 1 个位置
SKILL.md:54来自说明文档打开原文件
| 方法 | 所需 scope ||------|-----------|| `user_tasks.query` | `attendance:task:readonly` |
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。未发现风险

Skill 逻辑拆解

3 个说明模块

该 Skill 的声明用途是查询用户自己的飞书考勤打卡记录,并要求使用 `lark-cli` 调用 `attendance.user_tasks.query`。

查看原文
SKILL.md:4来自说明文档打开原文件
version: 1.0.0description: "飞书考勤打卡:查询自己的考勤打卡记录"metadata:
SKILL.md:42来自说明文档打开原文件
```bashlark-cli schema attendance.<resource>.<method>   # 调用 API 前必须先查看参数结构lark-cli attendance <resource> <method> [flags]  # 调用 API```
SKILL.md:48来自说明文档打开原文件
### user_tasks- `query` — 查询用户考勤打卡记录

它要求先查看 API schema,并声明查询需要只读考勤 scope;这限制了文档所述能力,但实际账号可见范围仍由飞书授权决定。

查看原文
SKILL.md:46来自说明文档打开原文件
> **重要**:使用原生 API 时,必须先运行 `schema` 查看 `--data` / `--params` 参数结构,不要猜测字段格式。
SKILL.md:52来自说明文档打开原文件
## 权限表| 方法 | 所需 scope ||------|-----------|| `user_tasks.query` | `attendance:task:readonly` |
从这里开始 · 工作说明SKILL.md
lark-attendance
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。
文件与检查记录1 个文件

检查范围与遗漏

逐文件查看涉及的内容

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

  • SKILL.md已纳入全文

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

  • SKILL.md工作说明

代码和说明中提到的操作

运行命令
SKILL.md:41来自说明文档打开原文件
```bashlark-cli schema attendance.<resource>.<method>   # 调用 API 前必须先查看参数结构
读取了多少行
58
文件校验值(用于核对版本)
4d177ab709de813b5d4c4d809c72933f92303f8a63150d0edb121bf6026d715f