Scan Report
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 install this skill
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.
Attack Chain 5 steps
⬡
Escalation User installs skill and provides SSH credentials for VPS deployment
install.py:105⬡
Escalation Skill clones code from external GitHub without integrity verification
scripts/deploy_portal.py:184⬡
Escalation Unpinned dependencies allow supply chain injection via version upgrade
requirements.txt:1⬡
Escalation SSH executes arbitrary shell scripts on remote VPS with root privileges
auto_install.py:82◉
Impact Hardcoded admin password 'AgentP2P2024' creates backdoor if not changed
scripts/deploy_portal.py:262Findings 10 items
| Severity | Finding | Location |
|---|---|---|
| High | Hardcoded default password for admin backend | scripts/deploy_portal.py:262 |
| High | Remote code execution through SSH deployment | auto_install.py:82 |
| High | Unpinned dependencies enable supply chain attacks | requirements.txt:1 |
| High | External GitHub code pull without integrity verification | scripts/deploy_portal.py:184 |
| Medium | Undeclared subprocess shell execution | auto_install.py:82 |
| Medium | Database access not declared in SKILL.md | scripts/deploy_portal.py:340 |
| Medium | SSH key access to ~/.ssh directory not explicitly declared | install.py:105 |
| Low | Silent dependency installation without user consent | SKILL.md:10 |
| Low | Requests library with verify=False (SSL bypass) | skill/client.py:36 |
| Info | No _meta.json found | . |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Shell | WRITE | WRITE | ✓ Aligned | SKILL.md metadata declares bins: [ssh]; deploy_portal.py uses paramiko SSH |
| Filesystem | WRITE | WRITE | ✓ Aligned | SKILL.md declares file writes to ~/.openclaw/gateway.env; confirmed in install.p… |
| Network | READ | WRITE | ✓ Aligned | bridge.py POSTs to external URL; deploy_portal.py clones from external GitHub |
| Environment | READ | WRITE | ✓ Aligned | skill/bridge.py reads env vars; install.py writes to gateway.env |
| Skill Invoke | NONE | NONE | — | No skill invocation found |
| Clipboard | NONE | NONE | — | No clipboard access found |
| Browser | NONE | NONE | — | No browser access found |
| Database | NONE | WRITE | ✗ Violation | src/main.py and deploy_portal.py create/modify SQLite DB at /opt/agent-p2p/data/… |
18 findings
Medium External URL 外部 URL
https://agent.example.com CONFIG.md:73 Medium External URL 外部 URL
https://your-domain.com CONFIG.md:87 Medium External URL 外部 URL
http://127.0.0.1:18789 CONFIG.md:88 Medium External URL 外部 URL
http://127.0.0.1:18789/hooks/wake CONFIG.md:146 Medium External URL 外部 URL
https://your-domain.com/api/portal/info DEPLOY.md:277 Medium External URL 外部 URL
https://your-domain.com/api/contacts README.md:98 Medium External URL 外部 URL
https://friend-domain.com SKILL.md:100 Medium External URL 外部 URL
https://your-domain.com/static/admin.html SKILL.md:143 Medium External URL 外部 URL
https://your-portal.com client/configure.py:29 Medium External URL 外部 URL
https://your-domain.com) client.py:12 Medium External URL 外部 URL
http://127.0.0.1:18789\n install.py:405 Medium External URL 外部 URL
http://127.0.0.1:8081 notify_server.py:77 Medium External URL 外部 URL
https://mirrors.aliyun.com/pypi/simple/ setup.sh:86 Medium External URL 外部 URL
http://127.0.0.1:18789/health setup.sh:161 Medium External URL 外部 URL
https://myagentp2p.com skill/client.py:40 Medium External URL 外部 URL
https://agentportalp2p.com skill_status.json:1 Medium External URL 外部 URL
http://127.0.0.1:8082/webhook webhook_server.py:57 Info Email 邮箱地址
[email protected] CONFIG.md:122 File Tree
35 files · 228.6 KB · 7039 lines 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
Dependencies 10 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
fastapi | >=0.100.0 | pip | No | Version not pinned - supply chain risk |
uvicorn | >=0.23.0 | pip | No | Version not pinned - supply chain risk |
paramiko | >=3.3.0 | pip | No | Version not pinned - supply chain risk |
websocket-client | >=1.6.0 | pip | No | Version not pinned - supply chain risk |
requests | >=2.31.0 | pip | No | Version not pinned - supply chain risk |
websockets | >=11.0 | pip | No | Version not pinned - supply chain risk |
python-jose | >=3.3.0 | pip | No | Version not pinned - supply chain risk |
python-multipart | >=0.0.6 | pip | No | Version not pinned - supply chain risk |
psutil | * | pip | No | Version not pinned - supply chain risk |
aiohttp | * | pip | No | Version not pinned - used in notify_server.py |
Security Positives
✓ 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