High Risk — Risk Score 70/100
Last scan:2 days ago Rescan
70 /100
memex
Unified memory plugin for OpenClaw — conversation memory + document search in a single SQLite database
未声明的遥测功能:代码连接外部服务器并发送机器标识符,base64编码规避检测,SKILL.md完全未提及
Skill Namememex
Duration70.5s
Enginepi
Do not install this skill
立即审查并移除遥测模块,或在SKILL.md中明确声明此功能

Attack Chain 4 steps

Entry 用户安装memex插件
SKILL.md:1
Escalation 插件加载时自动初始化遥测模块
src/telemetry.ts:18
Escalation Base64解码遥测URL和token
src/telemetry.ts:9
Impact 连接外部服务器发送machineId和插件状态
src/telemetry.ts:32

Findings 6 items

Severity Finding Location
Critical
未声明的遥测功能
src/telemetry.ts实现了遥测模块,连接https://telemetry-relay-memex.mlab42.workers.dev发送数据。SKILL.md、README.md、AGENTS.md均未提及此功能。
import { createRelay, type Relay } from "@ofan/telemetry-relay-sdk"
→ 如非必要功能,应移除遥测模块;如需遥测,必须在文档中明确声明
src/telemetry.ts:1
Critical
Base64混淆规避检测
遥测URL和token使用base64编码,代码注释明确写'Encoded to avoid false-positive VirusTotal flags',说明作者有意规避安全扫描
// Encoded to avoid false-positive VirusTotal flags on token patterns
→ 混淆代码是典型恶意行为特征,强烈建议移除
src/telemetry.ts:5
High
机器标识符外泄
遥测发送基于hostname的SHA256哈希作为machineId,可用于跨设备追踪用户
function getMachineId(): string { return createHash("sha256").update(hostname()).digest("hex").slice(0, 16); }
→ 不应收集任何可识别机器的信息
src/telemetry.ts:14
High
遥测发送敏感操作元数据
遥测track函数发送version、vectorDim、documentsEnabled、autoRecall、memoryCount等插件运行状态信息
track("plugin_registered", { version: pluginVersion, vectorDim, documentsEnabled, autoRecall, memoryCount })
→ 插件运行信息属于敏感数据,不应外传
index.ts:666
High
无用户同意机制
遥测通过环境变量MEMEX_TELEMETRY=0或MEMEX_DO_NOT_TRACK=1禁用,但默认值是开启,用户默认被追踪
if (process.env.MEMEX_TELEMETRY === "0" || process.env.MEMEX_DO_NOT_TRACK === "1") return noop
→ 应改为默认禁用(opt-in)模式
src/telemetry.ts:19
Medium
依赖第三方遥测SDK
使用@ofan/telemetry-relay-sdk,指向Cloudflare Workers端点mlab42.workers.dev,数据流向不透明
"@ofan/telemetry-relay-sdk": "^0.2.1"
→ 审计第三方SDK代码,确认数据处理合规
package.json:38
ResourceDeclaredInferredStatusEvidence
Filesystem WRITE WRITE ✓ Aligned SKILL.md:插件需读写内存数据库
Network NONE WRITE ✗ Violation src/telemetry.ts:1-32 遥测功能发送数据到外部服务器
Environment READ READ ✓ Aligned embedding.apiKey配置读取环境变量
Shell NONE NONE AGENTS.md:56的rm命令仅文档说明,非代码行为
2 Critical 3 findings
💀
Critical Dangerous Command 危险 Shell 命令
rm -rf ~
AGENTS.md:56
🔒
Critical Encoded Execution Base64 编码执行(代码混淆)
Buffer.from(s, "base64"
src/telemetry.ts:8
🔗
Medium External URL 外部 URL
https://api.jina.ai/v1/rerank
src/retriever.ts:36

File Tree

31 files · 510.5 KB · 14902 lines
TypeScript 25f · 14435L Markdown 4f · 295L JSON 2f · 172L
├─ 📁 src
│ ├─ 📜 adaptive-retrieval.ts TypeScript 99L · 3.9 KB
│ ├─ 📜 capture-windows.ts TypeScript 70L · 2.2 KB
│ ├─ 📜 chunker.ts TypeScript 243L · 7.2 KB
│ ├─ 📜 cli.ts TypeScript 719L · 29.1 KB
│ ├─ 📜 collections.ts TypeScript 403L · 9.9 KB
│ ├─ 📜 db.ts TypeScript 62L · 1.6 KB
│ ├─ 📜 doc-indexer.ts TypeScript 278L · 8.0 KB
│ ├─ 📜 embedder.ts TypeScript 567L · 19.2 KB
│ ├─ 📜 formatter.ts TypeScript 429L · 12.9 KB
│ ├─ 📜 importance.ts TypeScript 108L · 3.6 KB
│ ├─ 📜 llm.ts TypeScript 675L · 19.4 KB
│ ├─ 📜 memory-instructions.ts TypeScript 18L · 917 B
│ ├─ 📜 memory.ts TypeScript 1021L · 32.9 KB
│ ├─ 📜 migrate-lancedb.ts TypeScript 145L · 4.4 KB
│ ├─ 📜 migrate.ts TypeScript 355L · 10.0 KB
│ ├─ 📜 noise-filter.ts TypeScript 343L · 12.0 KB
│ ├─ 📜 retriever.ts TypeScript 895L · 32.4 KB
│ ├─ 📜 scopes.ts TypeScript 382L · 10.4 KB
│ ├─ 📜 search.ts TypeScript 3609L · 123.9 KB
│ ├─ 📜 session-indexer.ts TypeScript 955L · 33.1 KB
│ ├─ 📜 telemetry.ts TypeScript 34L · 1.1 KB
│ ├─ 📜 tools.ts TypeScript 834L · 34.1 KB
│ ├─ 📜 unified-recall.ts TypeScript 418L · 13.6 KB
│ └─ 📜 unified-retriever.ts TypeScript 543L · 18.5 KB
├─ 📝 AGENTS.md Markdown 68L · 2.7 KB
├─ 📝 CLAUDE.md Markdown 1L · 10 B
├─ 📜 index.ts TypeScript 1230L · 49.8 KB
├─ 📋 openclaw.plugin.json JSON 110L · 5.2 KB
├─ 📋 package.json JSON 62L · 1.3 KB
├─ 📝 README.md Markdown 110L · 3.4 KB
└─ 📝 SKILL.md Markdown 116L · 3.7 KB

Dependencies 4 items

PackageVersionSourceKnown VulnsNotes
@ofan/telemetry-relay-sdk ^0.2.1 npm No 遥测SDK,发往mlab42.workers.dev
openai ^6.21.0 npm No OpenAI SDK
better-sqlite3 ^11.0.0 npm No SQLite驱动
sqlite-vec ^0.1.7-alpha.2 npm No 向量搜索扩展

Security Positives

✓ 核心记忆功能(SQLite+FTS5+向量搜索)代码质量高,架构清晰
✓ 无直接凭证收割行为
✓ 无远程代码执行(RCE)漏洞
✓ 数据库操作使用参数化查询,防SQL注入
✓ 有embedding模型变更检测和状态机恢复机制