Low Risk — Risk Score 15/100
Last scan:10 hr ago Rescan
15 /100
virtuals-protocol-acp
Agent Commerce Protocol CLI — wallet, marketplace, token, and seller runtime for AI agents
Virtuals Protocol ACP CLI 工具,代码结构清晰,无恶意行为,动态 handler 加载机制虽有理论风险但属于合法的卖方服务功能。
Skill Namevirtuals-protocol-acp
Duration55.8s
Enginepi
Safe to install
该技能安全可用。建议审查用户自定义的 handlers.ts 文件内容以确保卖方服务安全。

Findings 2 items

Severity Finding Location
Low
动态 handler 代码执行 Supply Chain
seller runtime 通过 dynamic import 加载用户创建的 handlers.ts 文件,理论上可执行任意代码。但这是 ACP 卖方服务的核心机制,用户需主动创建文件。
const handlers = (await import(handlersPath)) as OfferingHandlers;
→ 信任来源审查:确保使用此技能的 Agent 只加载可信来源的 offering 文件
src/seller/runtime/offerings.ts:48
Low
凭证存储于本地文件 Sensitive Access
LITE_AGENT_API_KEY 和 SESSION_TOKEN 存储在 config.json 中,可能被本地其他进程读取。
export const CONFIG_JSON_PATH = path.resolve(ROOT, "config.json");
→ 确认 config.json 在 .gitignore 中,不提交到版本控制
src/lib/config.ts:35
ResourceDeclaredInferredStatusEvidence
Filesystem READ WRITE ✓ Aligned 技能需要读写配置文件 config.json
Network READ READ ✓ Aligned API 调用到 claw-api.virtuals.io
Shell NONE NONE 仅用 exec 打开 URL,无命令执行
11 findings
🔗
Medium External URL 外部 URL
https://app.virtuals.io/acp
README.md:3
🔗
Medium External URL 外部 URL
https://virtuals.io
README.md:3
🔗
Medium External URL 外部 URL
https://app.virtuals.io
SKILL.md:5
🔗
Medium External URL 外部 URL
https://dotenvx.com
package-lock.json:548
💰
Medium Wallet Address 加密货币钱包地址
0x1234567890123456789012345678901234567890
references/agent-wallet.md:23
💰
Medium Wallet Address 加密货币钱包地址
0x833589fcd6edb6e08f4c7c32d4f71b54bda02913
references/agent-wallet.md:73
🔗
Medium External URL 外部 URL
https://api.example.com/market-data
references/seller.md:448
🔗
Medium External URL 外部 URL
https://api.example.com/endpoint
src/commands/sell.ts:658
🔗
Medium External URL 外部 URL
https://app.virtuals.io/prototypes/$
src/commands/token.ts:74
🔗
Medium External URL 外部 URL
https://acpx.virtuals.io
src/lib/auth.ts:16
🔗
Medium External URL 外部 URL
https://claw-api.virtuals.io
src/lib/client.ts:15

File Tree

34 files · 200.3 KB · 6494 lines
TypeScript 23f · 3873L Markdown 6f · 1354L JSON 4f · 1033L Shell 1f · 234L
├─ 📁 bin
│ └─ 📜 acp.ts TypeScript 460L · 15.3 KB
├─ 📁 references
│ ├─ 📝 acp-job.md Markdown 303L · 9.3 KB
│ ├─ 🔑 agent-token.md Markdown 142L · 3.6 KB
│ ├─ 📝 agent-wallet.md Markdown 114L · 3.4 KB
│ └─ 📝 seller.md Markdown 468L · 17.2 KB
├─ 📁 src
│ ├─ 📁 commands
│ │ ├─ 📜 agent.ts TypeScript 262L · 7.6 KB
│ │ ├─ 📜 browse.ts TypeScript 68L · 1.9 KB
│ │ ├─ 📜 job.ts TypeScript 196L · 5.7 KB
│ │ ├─ 📜 profile.ts TypeScript 72L · 2.2 KB
│ │ ├─ 📜 sell.ts TypeScript 743L · 22.2 KB
│ │ ├─ 📜 serve.ts TypeScript 204L · 5.5 KB
│ │ ├─ 📜 setup.ts TypeScript 318L · 10.2 KB
│ │ ├─ 🔑 token.ts TypeScript 88L · 2.6 KB
│ │ └─ 📜 wallet.ts TypeScript 87L · 2.8 KB
│ ├─ 📁 lib
│ │ ├─ 📜 api.ts TypeScript 98L · 2.6 KB
│ │ ├─ 📜 auth.ts TypeScript 264L · 7.2 KB
│ │ ├─ 📜 client.ts TypeScript 31L · 733 B
│ │ ├─ 📜 config.ts TypeScript 204L · 5.5 KB
│ │ ├─ 📜 open.ts TypeScript 25L · 697 B
│ │ ├─ 📜 output.ts TypeScript 104L · 2.9 KB
│ │ └─ 📜 wallet.ts TypeScript 30L · 715 B
│ └─ 📁 seller
│ └─ 📁 runtime
│ ├─ 📜 acpSocket.ts TypeScript 85L · 2.3 KB
│ ├─ 📜 offerings.ts TypeScript 78L · 2.2 KB
│ ├─ 📜 offeringTypes.ts TypeScript 52L · 1.9 KB
│ ├─ 📜 seller.ts TypeScript 271L · 7.0 KB
│ ├─ 📜 sellerApi.ts TypeScript 71L · 1.8 KB
│ └─ 📜 types.ts TypeScript 62L · 1.6 KB
├─ 📋 _meta.json JSON 5L · 147 B
├─ 📋 package-lock.json JSON 979L · 30.7 KB
├─ 📋 package.json JSON 29L · 887 B
├─ 📝 README.md Markdown 196L · 7.0 KB
├─ 📝 SKILL.md Markdown 131L · 7.7 KB
├─ 🔧 test-cli.sh Shell 234L · 7.1 KB
└─ 📋 tsconfig.json JSON 20L · 510 B

Dependencies 4 items

PackageVersionSourceKnown VulnsNotes
axios ^1.13.4 npm No 稳定版本
dotenv ^16.4.5 npm No 稳定版本
socket.io-client ^4.8.1 npm No 稳定版本
tsx ^4.19.2 npm (dev) No TypeScript 执行器

Security Positives

✓ 代码结构清晰,所有 API 调用都有明确的域名 (claw-api.virtuals.io, acpx.virtuals.io)
✓ 无 base64 编码、bash 管道、裸 IP 请求等高危模式
✓ 无环境变量遍历收割敏感信息
✓ 无远程脚本执行 (curl | bash)
✓ 无 eval、atob 等代码混淆
✓ 无隐藏指令或文档-行为不一致
✓ 依赖包均有版本锁定 (axios ^1.13.4, dotenv ^16.4.5)