Low Risk — Risk Score 30/100
Last scan:10 hr ago Rescan
30 /100
koan-team
Organize AI agents into Koan teams via channelId-based joining and dispatch. Requires an existing Koan identity and runtime signing capability (Ed25519 auth headers) with explicit human approval before create/join/dispatch actions.
合法 AI 协作工具,多 Agent 通过 channelId 编队、签名鉴权通信;核心功能与文档一致,但 Linux/macOS 下私钥明文存储为已知风险,cryptography 依赖无版本锁定存在供应链风险。
Skill Namekoan-team
Duration82.6s
Enginepi
Safe to install
生产部署前:1) Linux 系统切换至 OS keychain 或加密保管箱存储私钥;2) 在 requirements.txt 中锁定 cryptography 版本;3) 确认 koanmesh.com 为可信服务地址。

Findings 4 items

Severity Finding Location
Medium
Linux/macOS 平台私钥明文存储 Credential Theft
在非 Windows/macOS 平台,Ed25519 签名私钥和 X25519 加密私钥以 base64 编码明文写入 ~/.koan/identity.json,无文件系统加密保护。虽 SKILL.md 明确警示并建议迁移至 OS keychain,但生产环境若文件系统被访问则私钥泄露。
data.privateKeyStorage = { scheme: 'plaintext' }; data.signingPrivateKey = signingPrivateKey; data.encryptionPrivateKey = encryptionPrivateKey;
→ 在 Linux 上优先使用 libsecret 或 Gnome Keychain,通过 security add-generic-password 接口存储私钥(macOS 已实现)。添加密钥文件加密(如age/Sops)并要求运行时解密密码。
node/koan-sdk.mjs:185-187:185
Medium
cryptography 依赖无版本锁定 Supply Chain
python/requirements.txt 仅声明 cryptography>=42.0.0,无上限版本锁定。cryptography 库虽为头部项目,但大版本升级仍可能引入行为变更或引入有漏洞的传递依赖。
cryptography>=42.0.0
→ 锁定精确版本(如 cryptography==44.0.0)并记录 SHA256 校验和,必要时配合 pip-compile 生成 pinned requirements
python/requirements.txt:1
Low
macOS Keychain 凭证以明文存入 keychain Credential Theft
macOS 平台使用 security add-generic-password 将包含私钥的 JSON blob 以明文存入系统 keychain,任何能访问 keychain 的进程均可读取。虽然优于文件系统明文,但 keychain 项目本身无密码保护时仍可提取。
runCommand('security', ['add-generic-password', '-U', '-a', account, '-s', KEYCHAIN_SERVICE, '-w', secret]);
→ 创建 keychain 项目时使用 -T 指定允许访问的程序,并考虑添加 keychain access group 限制
node/koan-sdk.mjs:56-58:56
Low
预扫描标记的 Base64 用法为正常加密操作 Obfuscation
预扫描将 Buffer.from(..., 'base64') 标记为 CRITICAL IOC,但经代码审查确认:所有 base64 解码均为 crypto.createPublicKey/crypto.createPrivateKey 的标准 DER 格式解码,用于 X25519 ECDH 密钥交换和 Ed25519 签名密钥加载,属于正常加密操作,非代码混淆。
key: Buffer.from(recipientPubKeyB64, 'base64'), format: 'der', type: 'spki'
→ 将此 IOC 重分类为误报,标记为'标准加密操作'
node/koan-sdk.mjs:107,132,140,141,202,203,204,205:107
ResourceDeclaredInferredStatusEvidence
Filesystem WRITE WRITE ✓ Aligned SKILL.md:59-60 文档明确说明将身份持久化至 ~/.koan/identity.json 和 chats/*.jsonl
Network READ READ ✓ Aligned SKILL.md:79-110 文档列出全部 Koan API 端点,代码实现与之一致
Shell WRITE WRITE ✓ Aligned node/koan-sdk.mjs:26-28,35-43 调用 spawnSync 执行 security/PowerShell 进行 keychain/DP…
Environment NONE READ ✓ Aligned 代码仅读取 process.env/os.environ 用于平台检测和构建 PowerShell 命令,无凭证遍历
Clipboard NONE NONE 无剪贴板操作
Browser NONE NONE 无浏览器自动化
Database NONE NONE 无数据库操作
8 Critical 14 findings
🔒
Critical Encoded Execution Base64 编码执行(代码混淆)
Buffer.from(recipientPubKeyB64, 'base64'
node/koan-sdk.mjs:107
🔒
Critical Encoded Execution Base64 编码执行(代码混淆)
Buffer.from(ephemeralPubB64, 'base64'
node/koan-sdk.mjs:132
🔒
Critical Encoded Execution Base64 编码执行(代码混淆)
Buffer.from(nonceB64, 'base64'
node/koan-sdk.mjs:140
🔒
Critical Encoded Execution Base64 编码执行(代码混淆)
Buffer.from(ciphertextB64, 'base64'
node/koan-sdk.mjs:141
🔒
Critical Encoded Execution Base64 编码执行(代码混淆)
Buffer.from(signingPrivateKeyB64, 'base64'
node/koan-sdk.mjs:202
🔒
Critical Encoded Execution Base64 编码执行(代码混淆)
Buffer.from(data.signingPublicKey, 'base64'
node/koan-sdk.mjs:203
🔒
Critical Encoded Execution Base64 编码执行(代码混淆)
Buffer.from(encryptionPrivateKeyB64, 'base64'
node/koan-sdk.mjs:204
🔒
Critical Encoded Execution Base64 编码执行(代码混淆)
Buffer.from(data.encryptionPublicKey, 'base64'
node/koan-sdk.mjs:205
🔗
Medium External URL 外部 URL
https://koanmesh.com
SKILL.md:4
🔗
Medium External URL 外部 URL
https://clawhub.ai/cg0xC0DE/koan-protocol
SKILL.md:15
🔗
Medium External URL 外部 URL
https://koanmesh.com/skill.json
SKILL.md:20
🔗
Medium External URL 外部 URL
https://koanmesh.com/agents/check-key?signingPublicKey=
SKILL.md:89
🔗
Medium External URL 外部 URL
https://koanmesh.com/channels
SKILL.md:111
🔗
Medium External URL 外部 URL
https://koanmesh.com/channels/
SKILL.md:129

File Tree

4 files · 46.6 KB · 1224 lines
Python 1f · 530L JavaScript 1f · 487L Markdown 1f · 206L Text 1f · 1L
├─ 📁 node
│ └─ 📜 koan-sdk.mjs JavaScript 487L · 18.5 KB
├─ 📁 python
│ ├─ 🐍 koan_sdk.py Python 530L · 21.6 KB
│ └─ 📄 requirements.txt Text 1L · 21 B
└─ 📝 SKILL.md Markdown 206L · 6.4 KB

Dependencies 1 items

PackageVersionSourceKnown VulnsNotes
cryptography >=42.0.0 pip No 无版本上限锁定,存在供应链风险;42.0.0 以前版本有已知 CVE,建议确认生产环境中版本 >= 42.0.0

Security Positives

✓ 代码功能与 SKILL.md 声明高度一致,无阴影功能(shadow functionality)
✓ 多 Agent 团队操作均有 human approval gate,符合最小权限原则
✓ E2E 加密实现完整(X25519 ECDH + AES-256-GCM),密钥派生使用 HKDF-SHA256
✓ 使用 Ed25519 签名进行请求鉴权,签名算法符合 Koan Protocol 规范
✓ Node.js SDK 零外部依赖,仅使用 Node.js 内置模块
✓ 包含身份迁移逻辑(检测到 plaintext 存储时会自动升级至 keychain/DPAPI)
✓ 无任意命令执行、无凭证外传、无反向 shell