扫描报告
55 /100
Memory Workflow
三层存储记忆工作流,支持文件/FTS5/KG/Milvus搜索
Memory workflow skill has undeclared network exfiltration behavior: user memory content is sent to an external Ollama LLM service (scripts/store.py:extract_triples_via_llm) without disclosure in SKILL.md, combined with hardcoded Docker bridge IPs as service endpoints.
谨慎使用
Either (1) document the Ollama LLM call and data transmission in SKILL.md, or (2) remove the external LLM dependency and rely solely on rule-based extraction. Consider making service endpoints configurable via environment variables with explicit user consent.
攻击链 4 步
◎
入口 User stores memory content via MemoryStore tool
scripts/store.py:110⬡
提权 store_memory() calls extract_triples_via_llm() with user content
scripts/store.py:130◉
影响 Content POSTed to OLLAMA_URL (default: host.docker.internal:11434) for LLM processing — exfiltrated outside skill sandbox
scripts/store.py:94◉
影响 get_embedding() sends same content to EMBEDDING_URL (default:
172.17.0.1:18779) scripts/store.py:170安全发现 6 项
| 严重性 | 安全发现 | 位置 |
|---|---|---|
| 高危 | Undeclared LLM data transmission 数据外泄 | scripts/store.py:94 |
| 高危 | SKILL.md hides external service dependencies 文档欺骗 | SKILL.md:1 |
| 高危 | Hardcoded Docker bridge IP addresses as default service endpoints 敏感访问 | scripts/config.py:12 |
| 中危 | Embedding API call sends all content to external service 数据外泄 | scripts/store.py:170 |
| 中危 | Undeclared shell execution via subprocess 权限提升 | scripts/tools.py:48 |
| 低危 | SKILL.md installation modifies AGENTS.md with shell commands 文档欺骗 | SKILL.md:12 |
| 资源类型 | 声明权限 | 推断权限 | 状态 | 证据 |
|---|---|---|---|---|
| 文件系统 | WRITE | WRITE | ✓ 一致 | scripts/store.py: writes to ~/.openclaw/workspace/memory-workflow-data/ |
| 网络访问 | NONE | WRITE | ✗ 越权 | scripts/store.py:94 — sends content to OLLAMA_URL via urllib; scripts/store.py:1… |
| 命令执行 | NONE | WRITE | ✗ 越权 | scripts/tools.py:48 — subprocess.run executes memory_ops.py; scripts/save_sessio… |
| 环境变量 | READ | READ | ✓ 一致 | scripts/config.py:14-17, store.py:32-34 — reads OLLAMA_URL, MILVUS_HOST, etc. |
| 技能调用 | WRITE | WRITE | ✓ 一致 | SKILL.md declares 6 tool interfaces |
1 高危 4 项发现
高危 IP 地址 硬编码 IP 地址
172.17.0.1 scripts/config.py:12 中危 外部 URL 外部 URL
http://172.17.0.1:18778 scripts/config.py:12 中危 外部 URL 外部 URL
http://172.17.0.1:18779/v1/embeddings scripts/store.py:33 中危 外部 URL 外部 URL
http://host.docker.internal:11434 scripts/store.py:37 目录结构
9 文件 · 50.3 KB · 1648 行 Python 7f · 1492L
Markdown 2f · 156L
├─
▾
scripts
│ ├─
config.py
Python
│ ├─
fts5.py
Python
│ ├─
save_session.py
Python
│ ├─
search.py
Python
│ ├─
store.py
Python
│ └─
tools.py
Python
├─
memory_ops.py
Python
├─
README.md
Markdown
└─
SKILL.md
Markdown
依赖分析 3 项
| 包名 | 版本 | 来源 | 已知漏洞 | 备注 |
|---|---|---|---|---|
pymilvus | unpinned | pip | 否 | Used for Milvus vector storage, imported conditionally |
jieba | unpinned | pip | 否 | Chinese segmentation, imported conditionally |
urllib.request | stdlib | Python | 否 | Used for HTTP calls to Ollama and embedding API |
安全亮点
✓ No credential theft indicators — skill does not access ~/.ssh, ~/.aws, or .env files
✓ No obfuscation detected — no base64-encoded strings or anti-analysis patterns
✓ No reverse shell or C2 infrastructure — no suspicious outbound connections beyond documented API calls
✓ File operations are scoped to a dedicated memory data directory (~/.openclaw/workspace/memory-workflow-data/)
✓ Version pinning available for external dependencies (pymilvus in requirements would show versions)
✓ FTS5 and file storage work without external dependencies, matching documentation