perkoon-transfer
The perkoon-transfer skill enables third-party P2P file transfers through perkoon.com with declared but risky mechanisms: shell:WRITE (npx background processes), unverified network:READ (A2A to perkoon.com/a2a), and curl|node remote script execution for browser automation.
Browser automation method (Method 4) instructs agents to download and execute remote JavaScript files: curl https://perkoon.com/perkoon_send.mjs > send.mjs && node send.mjs and curl https://perkoon.com/perkoon_receive.mjs > receive.mjs && node receive.mjs. No checksums, hashes, or versioned content hashes are provided, allowing arbitrary code changes on perkoon.com at any time.
SKILL.md:315 为什么得出这个结论
1/4 个维度触发声明资源与推断能力基本一致。
提取到 14 个一般风险产物,需要结合上下文判断。
报告包含 0 步攻击链,另有 1 项高危或严重发现。
发现 4 项需要关注的依赖或供应链线索。
风险分是怎么被拉高的
Browser automation downloads perkoon_send.mjs and perkoon_receive.mjs via curl and pipes directly to node, with no integrity verification (checksums, signatures, or pinned content hashes). Warned in docs but still included as a supported method.
Remote .mjs files at perkoon.com/perkoon_send.mjs and perkoon.com/perkoon_receive.mjs can be updated at any time — no content pinning, no hash verification.
SKILL.md states 'Files never touch our servers,' but WebRTC signaling requires session metadata to traverse perkoon.com infrastructure. This is a misleading claim about the actual data flow.
No allowed-tools mapping declares network:READ for A2A HTTP requests to perkoon.com/a2a or filesystem:WRITE for saving received files. These are declared in prose but not formally mapped.
最关键的证据
Remote script execution without integrity verification
Browser automation method (Method 4) instructs agents to download and execute remote JavaScript files: curl https://perkoon.com/perkoon_send.mjs > send.mjs && node send.mjs and curl https://perkoon.com/perkoon_receive.mjs > receive.mjs && node receive.mjs. No checksums, hashes, or versioned content hashes are provided, allowing arbitrary code changes on perkoon.com at any time.
SKILL.md:315 Misleading 'Files never touch our servers' claim
SKILL.md prominently claims 'Files never touch our servers' and 'No accounts. Files never touch our servers.' However, WebRTC P2P requires signaling servers — session metadata (offer/answer SDP, ICE candidates, session codes, sender keys) must traverse perkoon.com's infrastructure to establish the direct connection. While file content may be P2P-encrypted, the signaling data (including session codes and keys) does flow through perkoon.com servers.
SKILL.md:6 Incomplete allowed-tools mapping
The skill's metadata declares no allowed-tools, but the implementation requires network:READ (A2A HTTP POSTs to perkoon.com), shell:WRITE (npx background processes, log file I/O), and filesystem:WRITE (save received files). These are documented in prose but not formally mapped as allowed-tools.
SKILL.md:1 Filesystem write to workspace without explicit path confirmation
The CLI receive method defaults to /home/openclaw/.openclaw/workspace/received/ as the save directory. While SKILL.md includes a rule to 'confirm the file path with the user before sending,' the receive path is hardcoded and not user-confirmed.
SKILL.md:149 声明能力 vs 实际能力
SKILL.md line 204: POST to https://perkoon.com/a2a (A2A method); SKILL.md line 315-316: GET for remote .mjs scripts (browser automation) SKILL.md lines 91-162: background npx processes, log file polling, PID management SKILL.md line 149: saves received files to /home/openclaw/.openclaw/workspace/received/ No cross-skill invocations found 可疑产物与外联
https://perkoon.com SKILL.md:10
https://perkoon.com/K7MX4QPR9W2N SKILL.md:115
https://perkoon.com/a2a SKILL.md:204
https://perkoon.com/.well-known/agent.json SKILL.md:206
https://perkoon.com/perkoon_send.mjs SKILL.md:315
https://perkoon.com/perkoon_receive.mjs SKILL.md:316
https://perkoon.com/create SKILL.md:321
https://perkoon.com/ SKILL.md:332
https://perkoon.com/llms.txt SKILL.md:428
https://perkoon.com/automate SKILL.md:429
https://www.npmjs.com/package/@perkoon/mcp SKILL.md:430
https://www.npmjs.com/package/perkoon SKILL.md:431
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| perkoon | 0.4.6 | npm (npx) | 否 | Pinned. Used for CLI file transfer. |
| @perkoon/mcp | 0.2.2 | npm (npx) | 否 | Pinned. Used for MCP server tools. |
| perkoon_send.mjs | unversioned | remote URL (perkoon.com) | 否 | NOT pinned — fetched dynamically via curl. Remote content can change without notice. |
| perkoon_receive.mjs | unversioned | remote URL (perkoon.com) | 否 | NOT pinned — fetched dynamically via curl. Remote content can change without notice. |
文件构成
SKILL.md skill-card.md