T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:53- Finding
Unverified Remote Installer Is Executed Directly by the Shell
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This appears to be a real Feishu office integration, but it needs review because it exposes powerful tenant actions through an unauthenticated local API and recommends running an unverified remote installer.
Review before installing in any real Feishu tenant. Avoid the curl | sh installer unless you can inspect and verify the downloaded script, run the service bound only to localhost, add a local API token or other caller authentication, grant the Feishu app only the minimum required scopes, and require explicit human confirmation for approvals, message sending, deletes, and business-record changes.
SKILL.md:53Unverified Remote Installer Is Executed Directly by the Shell
server/feishu_toolkit/main.py:24Unauthenticated API Exposes Tenant-Privileged Feishu Operations
server/feishu_toolkit/main.py:39Validation Errors Log Complete Request Bodies
server/pyproject.toml:7Open-Ended Dependency Constraints Produce Unreviewed and Non-Reproducible Builds
The README recommends piping a remotely fetched script directly into sh, which executes unreviewed code from the network with the user's privileges. If the hosting endpoint, transport, or upstream content is compromised, an attacker can run arbitrary commands, steal Feishu credentials, modify files, or install persistence during setup.
或在 AI IDE(Cursor / Copilot / Windsurf / Trae 等)中:
curl -sL "https://backend.clawd.org.cn/api/skills/official%2Ffeishu-toolkit/install.sh" | sh
The command chain using | sh is a classic unsafe execution pattern because it removes any inspection boundary between download and code execution. In this skill's context, the danger is amplified because installation is expected to precede configuring high-privilege enterprise API credentials, making any compromise especially valuable to an attacker.
或在 AI IDE(Cursor / Copilot / Windsurf / Trae 等)中:
curl -sL "https://backend.clawd.org.cn/api/skills/official%2Ffeishu-toolkit/install.sh" | sh
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
cd server/
uv venv && uv pip install -e ".[dev]"
uv run --env-file .env uvicorn feishu_toolkit.main:app --host 127.0.0.1 --port 8002
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
cd server/
uv venv && uv pip install -e ".[dev]"
uv run --env-file .env uvicorn feishu_toolkit.main:app --host 127.0.0.1 --port 8002
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
```bash
cd server/
uv venv && uv pip install -e ".[dev]"
uv run --env-file .env uvicorn feishu_toolkit.main:app --host 127.0.0.1 --port 8002
```
### 4. 验证
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
```bash
cd server/
uv venv && uv pip install -e ".[dev]"
uv run --env-file .env uvicorn feishu_toolkit.main:app --host 127.0.0.1 --port 8002
```
### 4. 验证
声明描述将该技能表述为“全面集成工具包”,并明确列出六大核心办公模块。但提供的代码片段实际只涉及 calendar_api.py 中的日历和会议室预约相关接口调用,主要访问 Feishu Calendar 和 VC Rooms API。没有任何与消息、审批、表格、通讯录、考勤相关的路由、数据模型或 API 调用。就‘描述是否准确代表该代码块实际行为’这一标准看,描述明显宽于代码实际能力,因此存在描述与行为不一致。
The installation instructions fetch and execute a remote shell script directly from the network. If the server, distribution path, TLS trust chain, or upstream content is compromised, users may execute arbitrary code immediately during installation.
或在 AI IDE(Cursor / Copilot / Windsurf / Trae 等)中:
curl -sL "https://backend.clawd.org.cn/api/skills/official%2Ffeishu-toolkit/install.sh" | sh
Using '| sh' creates a dangerous command chain that removes the opportunity for inspection and executes whatever bytes are returned by the remote endpoint. In a skill install context, this is especially risky because it normalizes blind code execution for users setting up software with access to enterprise credentials and APIs.
或在 AI IDE(Cursor / Copilot / Windsurf / Trae 等)中:
curl -sL "https://backend.clawd.org.cn/api/skills/official%2Ffeishu-toolkit/install.sh" | sh
The documented DELETE endpoint enables destructive modification of calendar data, and the surrounding documentation does not provide strong safety constraints, confirmation guidance, or misuse prevention advice. In an agent-integrated office suite, such actions can be triggered on user-facing identifiers and may cause loss of important meeting records or disruptions to business operations.
删除指定的日程事件。
DELETE /calendar/events/{event_id}
可选查询参数:
The workflow guidance explicitly recommends deleting test calendar data, normalizing use of a destructive action without emphasizing safeguards. This can condition users or agents to invoke deletion casually, increasing the chance of deleting the wrong event in a production tenant.
### 清理测试数据
- 通过 `DELETE /calendar/events/{event_id}` 删除测试产生的日程
### 预约会议室
The explicit upstream deletion path shows that a local tool invocation can translate into permanent remote calendar changes. In context, this makes the capability more dangerous because the skill integrates with real enterprise scheduling data rather than a harmless local mock.
| `GET /calendar/rooms` | `GET /open-apis/vc/v1/rooms` |
| `POST /calendar/rooms/search` | `POST /open-apis/vc/v1/rooms/search` |
| `POST /calendar/events/{event_id}/attendees` | `POST /open-apis/calendar/v4/calendars/:calendar_id/events/:event_id/attendees` |
| `DELETE /calendar/events/{event_id}` | `DELETE /open-apis/calendar/v4/calendars/:calendar_id/events/:event_id` |
The explicit upstream deletion path shows that a local tool invocation can translate into permanent remote calendar changes. In context, this makes the capability more dangerous because the skill integrates with real enterprise scheduling data rather than a harmless local mock.
| `GET /calendar/rooms` | `GET /open-apis/vc/v1/rooms` |
| `POST /calendar/rooms/search` | `POST /open-apis/vc/v1/rooms/search` |
| `POST /calendar/events/{event_id}/attendees` | `POST /open-apis/calendar/v4/calendars/:calendar_id/events/:event_id/attendees` |
| `DELETE /calendar/events/{event_id}` | `DELETE /open-apis/calendar/v4/calendars/:calendar_id/events/:event_id` |
Package name closely resembles a popular package, suggesting possible typosquatting. Attackers publish malicious packages with similar names to trick developers into installing them.
The README advertises capabilities that can send messages, modify calendars, initiate approvals, and edit organizational records, but it does not clearly warn that the agent will perform actions on the user's behalf against real enterprise data. In an office-suite context, that omission increases the risk of accidental unauthorized actions, social-engineering-assisted misuse, or users enabling a powerful skill without understanding its operational impact.
The skill advertises significant capabilities that require environment-variable access and network communication, but it does not declare an explicit tool scope such as permissions or allowed-tools. This weakens transparency and policy enforcement, making it harder for users and host platforms to understand and restrict what the skill can access.
The skill can send messages, initiate approval workflows, and modify enterprise records on a user's behalf, but the description does not prominently warn users about these high-impact actions. In an enterprise context, missing warnings increase the risk of accidental misuse, unauthorized business actions, or surprising data changes.
Tool defaults are unsafe or overly permissive (e.g. disabled TLS verification, no authentication, world-writable permissions). Unsafe defaults widen the attack surface.
飞书不提供"列出所有审批定义"的 API,需要手动从管理后台获取:
1. 打开 [飞书审批管理后台(开发者模式)](https://www.feishu.cn/approval/admin/approvalList?devMode=on)
2. 找到目标审批,点击 **编辑** 按钮
3. 在浏览器地址栏中复制 `definitionCode=` 后面的值,例如:
`https://www.feishu.cn/approval/admin/edit?definitionCode=48D49517-C979-447E-AD93-4BAE0FBC57EA`
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
请求示例:
curl -X POST http://127.0.0.1:8002/approval/create \
-H "Content-Type: application/json" \
-d '{
"approval_code": "48D49517-C979-447E-AD93-4BAE0FBC57EA",
This section documents approve, reject, transfer, and cancel operations that directly mutate workflow state, but it does not warn that these are irreversible or high-impact actions nor recommend explicit user confirmation before execution. In an agent setting, that omission increases the chance of accidental approvals, rejections, transfers, or recalls based on ambiguous natural-language requests, affecting HR, finance, or compliance processes.
The documentation for the transfer-approval endpoint is internally inconsistent: it says the request should include transfer_open_id, but the parameter table and example show fields for the cancel endpoint instead. In an approval workflow, this can cause an agent or operator to invoke the wrong state-changing action or construct malformed requests, leading to unintended cancellation or failed processing of business approvals.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
请求示例:
curl -X POST http://127.0.0.1:8002/approval/cancel \
-H "Content-Type: application/json" \
-d '{
"approval_code": "48D49517-C979-447E-AD93-4BAE0FBC57EA",
The document describes querying highly sensitive employee attendance data, including clock-in/out results, remedy records, employee names, and attendance group details, but provides no privacy warning, access-limitation guidance, or data-handling constraints. In an agent skill context, this omission increases the risk that operators or downstream agents will treat HR data as routine operational data and expose or over-collect personal workforce information.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
请求示例:
curl -X POST http://127.0.0.1:8002/attendance/tasks \
-H "Content-Type: application/json" \
-d '{
"user_ids": ["abd754f7"],
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
请求示例:
curl -X POST http://127.0.0.1:8002/attendance/remedys \
-H "Content-Type: application/json" \
-d '{
"user_ids": ["abd754f7"],
No suspicious patterns detected.