扫描报告
68 /100
agent-p2p
Agent P2P communication skill - enables AI agents to communicate in real-time through a Portal with other agents
Agent P2P skill contains hardcoded credentials, insecure remote deployment patterns, and supply chain vulnerabilities through unpinned dependencies and external GitHub code retrieval.
不要安装此技能
Do not deploy to production without: (1) removing hardcoded default password in deploy_portal.py, (2) pinning all dependency versions, (3) auditing the external GitHub repository, and (4) replacing subprocess shell=True with explicit argument lists.
攻击链 5 步
⬡
提权 User installs skill and provides SSH credentials for VPS deployment
install.py:105⬡
提权 Skill clones code from external GitHub without integrity verification
scripts/deploy_portal.py:184⬡
提权 Unpinned dependencies allow supply chain injection via version upgrade
requirements.txt:1⬡
提权 SSH executes arbitrary shell scripts on remote VPS with root privileges
auto_install.py:82◉
影响 Hardcoded admin password 'AgentP2P2024' creates backdoor if not changed
scripts/deploy_portal.py:262安全发现 10 项
| 严重性 | 安全发现 | 位置 |
|---|---|---|
| 高危 | Hardcoded default password for admin backend | scripts/deploy_portal.py:262 |
| 高危 | Remote code execution through SSH deployment | auto_install.py:82 |
| 高危 | Unpinned dependencies enable supply chain attacks | requirements.txt:1 |
| 高危 | External GitHub code pull without integrity verification | scripts/deploy_portal.py:184 |
| 中危 | Undeclared subprocess shell execution | auto_install.py:82 |
| 中危 | Database access not declared in SKILL.md | scripts/deploy_portal.py:340 |
| 中危 | SSH key access to ~/.ssh directory not explicitly declared | install.py:105 |
| 低危 | Silent dependency installation without user consent | SKILL.md:10 |
| 低危 | Requests library with verify=False (SSL bypass) | skill/client.py:36 |
| 提示 | No _meta.json found | . |
| 资源类型 | 声明权限 | 推断权限 | 状态 | 证据 |
|---|---|---|---|---|
| 命令执行 | WRITE | WRITE | ✓ 一致 | SKILL.md metadata declares bins: [ssh]; deploy_portal.py uses paramiko SSH |
| 文件系统 | WRITE | WRITE | ✓ 一致 | SKILL.md declares file writes to ~/.openclaw/gateway.env; confirmed in install.p… |
| 网络访问 | READ | WRITE | ✓ 一致 | bridge.py POSTs to external URL; deploy_portal.py clones from external GitHub |
| 环境变量 | READ | WRITE | ✓ 一致 | skill/bridge.py reads env vars; install.py writes to gateway.env |
| 技能调用 | NONE | NONE | — | No skill invocation found |
| 剪贴板 | NONE | NONE | — | No clipboard access found |
| 浏览器 | NONE | NONE | — | No browser access found |
| 数据库 | NONE | WRITE | ✗ 越权 | src/main.py and deploy_portal.py create/modify SQLite DB at /opt/agent-p2p/data/… |
18 项发现
中危 外部 URL 外部 URL
https://agent.example.com CONFIG.md:73 中危 外部 URL 外部 URL
https://your-domain.com CONFIG.md:87 中危 外部 URL 外部 URL
http://127.0.0.1:18789 CONFIG.md:88 中危 外部 URL 外部 URL
http://127.0.0.1:18789/hooks/wake CONFIG.md:146 中危 外部 URL 外部 URL
https://your-domain.com/api/portal/info DEPLOY.md:277 中危 外部 URL 外部 URL
https://your-domain.com/api/contacts README.md:98 中危 外部 URL 外部 URL
https://friend-domain.com SKILL.md:100 中危 外部 URL 外部 URL
https://your-domain.com/static/admin.html SKILL.md:143 中危 外部 URL 外部 URL
https://your-portal.com client/configure.py:29 中危 外部 URL 外部 URL
https://your-domain.com) client.py:12 中危 外部 URL 外部 URL
http://127.0.0.1:18789\n install.py:405 中危 外部 URL 外部 URL
http://127.0.0.1:8081 notify_server.py:77 中危 外部 URL 外部 URL
https://mirrors.aliyun.com/pypi/simple/ setup.sh:86 中危 外部 URL 外部 URL
http://127.0.0.1:18789/health setup.sh:161 中危 外部 URL 外部 URL
https://myagentp2p.com skill/client.py:40 中危 外部 URL 外部 URL
https://agentportalp2p.com skill_status.json:1 中危 外部 URL 外部 URL
http://127.0.0.1:8082/webhook webhook_server.py:57 提示 邮箱 邮箱地址
[email protected] CONFIG.md:122 目录结构
35 文件 · 228.6 KB · 7039 行 Python 17f · 4434L
Markdown 7f · 1225L
HTML 2f · 1062L
Shell 3f · 277L
JSON 4f · 25L
Text 2f · 16L
├─
▾
client
│ ├─
cli.py
Python
│ ├─
client.py
Python
│ ├─
config.py
Python
│ ├─
configure.py
Python
│ ├─
README.md
Markdown
│ ├─
requirements.txt
Text
│ └─
start.py
Python
├─
▾
config
│ └─
portals.example.json
JSON
├─
▾
docs
│ └─
verification-refactor.md
Markdown
├─
▾
hooks
│ ├─
HOOK.md
Markdown
│ ├─
hookpack.json
JSON
│ └─
notify.py
Python
├─
▾
scripts
│ ├─
deploy_portal.py
Python
│ └─
start.sh
Shell
├─
▾
skill
│ ├─
bridge.py
Python
│ ├─
client.py
Python
│ └─
start.py
Python
├─
▾
src
│ ├─
▾
static
│ │ ├─
admin.html
HTML
│ │ └─
index.html
HTML
│ └─
main.py
Python
├─
auto_install.py
Python
├─
client_status.json
JSON
├─
client.py
Python
├─
CONFIG.md
Markdown
├─
DEPLOY.md
Markdown
├─
install.py
Python
├─
notify_server.py
Python
├─
package.sh
Shell
├─
README.md
Markdown
├─
requirements.txt
Text
├─
send.py
Python
├─
setup.sh
Shell
├─
skill_status.json
JSON
├─
SKILL.md
Markdown
└─
webhook_server.py
Python
依赖分析 10 项
| 包名 | 版本 | 来源 | 已知漏洞 | 备注 |
|---|---|---|---|---|
fastapi | >=0.100.0 | pip | 否 | Version not pinned - supply chain risk |
uvicorn | >=0.23.0 | pip | 否 | Version not pinned - supply chain risk |
paramiko | >=3.3.0 | pip | 否 | Version not pinned - supply chain risk |
websocket-client | >=1.6.0 | pip | 否 | Version not pinned - supply chain risk |
requests | >=2.31.0 | pip | 否 | Version not pinned - supply chain risk |
websockets | >=11.0 | pip | 否 | Version not pinned - supply chain risk |
python-jose | >=3.3.0 | pip | 否 | Version not pinned - supply chain risk |
python-multipart | >=0.0.6 | pip | 否 | Version not pinned - supply chain risk |
psutil | * | pip | 否 | Version not pinned - supply chain risk |
aiohttp | * | pip | 否 | Version not pinned - used in notify_server.py |
安全亮点
✓ Security notes in CONFIG.md clearly document credential risk levels and recommend dedicated SSH keys
✓ Message approval workflow requires explicit owner consent before adding contacts
✓ WebSocket communication uses SSL context with cert verification on the Bridge side
✓ SKILL.md declares SSH and VPS deployment capabilities in metadata
✓ Code is open source and available for community audit on GitHub
✓ Uses urllib.request instead of subprocess for internal HTTP calls in bridge.py
✓ Credential storage uses Bearer token pattern rather than embedding secrets in URLs