安全决策报告
memex
未声明的遥测功能使用base64混淆发送机器标识到外部Cloudflare Workers,透明度严重不足
最直接的威胁证据
01
伪装成合法记忆插件,SKILL.md未提及遥测 初始入口 · SKILL.md
02
启动时混淆发送机器标识到外部端点 权限提升 · src/telemetry.ts
03
每次recall操作持续发送使用数据 最终危害 · index.ts
为什么得出这个结论
3/4 个维度触发 阻止
声明与实际能力
发现 1 项声明之外的能力或越权行为。
阻止
隐藏执行与外联
提取到 2 个高危 IOC 或外联信号。
阻止
攻击链与高危发现
报告包含 3 步攻击链,另有 2 项高危或严重发现。
通过
依赖与供应链卫生
依赖结构存在,但暂未看到明显高危告警。
攻击链
01
伪装成合法记忆插件,SKILL.md未提及遥测
初始入口 · SKILL.md:1
02
启动时混淆发送机器标识到外部端点
权限提升 · src/telemetry.ts:5
03
每次recall操作持续发送使用数据
最终危害 · index.ts:834
风险分是怎么被拉高的
阴影功能-遥测未声明 +25
SKILL.md未提及任何遥测或外部通信
代码混淆规避检测 +20
base64编码遥测URL并明确注释'避免VirusTotal误报'
外部数据外传 +10
机器ID、版本、配置发送到mlab42.workers.dev
最关键的证据
高危
未声明的外部遥测通信
插件向 https://telemetry-relay-memex.mlab42.workers.dev 发送遥测数据,包括机器ID(哈希主机名)、插件版本、向量维度、内存数量等,但SKILL.md未披露此行为
src/telemetry.ts:5 在SKILL.md明确声明遥测功能、数据类型、端点地址及退出机制
高危
代码混淆规避安全检测
遥测URL和token使用base64编码,注释明确说明'Encoded to avoid false-positive VirusTotal flags',这是规避检测的明确意图
src/telemetry.ts:5 合法遥测不应需要规避VirusTotal等安全扫描器
中危
退出机制未文档化
遥测可通过MEMEX_TELEMETRY=0或MEMEX_DO_NOT_TRACK=1环境变量禁用,但SKILL.md未提及此选项
src/telemetry.ts:20 在文档中明确说明退出遥测的方法
低危
第三方依赖引入外部通信
@ofan/telemetry-relay-sdk向Cloudflare Workers发起外部连接
package.json:38 评估第三方SDK的安全性和数据处理政策
声明能力 vs 实际能力
网络访问 阻止
声明 NONE
→ 推断 WRITE
src/telemetry.ts:5-8 发送遥测到外部端点 文件系统 通过
声明 WRITE
→ 推断 WRITE
SKILL.md:插件声明本地SQLite存储 可疑产物与外联
严重 危险命令
rm -rf ~ AGENTS.md:56
严重 编码执行
Buffer.from(s, "base64" src/telemetry.ts:8
中危 外部 URL
https://api.jina.ai/v1/rerank src/retriever.ts:36
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| @ofan/telemetry-relay-sdk | ^0.2.1 | npm | 否 | 向Cloudflare Workers发送遥测 |
文件构成
32 个文件 · 14907 行
TypeScript 25 个文件 · 14435 行Markdown 4 个文件 · 295 行JSON 3 个文件 · 177 行
需关注文件 · 1
src/retriever.ts https://api.jina.ai/v1/rerank
其他文件 · search.ts · index.ts · tools.ts · session-indexer.ts · memory.ts · cli.ts +5
安全亮点
遥测可通过环境变量禁用(MEMEX_TELEMETRY=0)
机器ID使用哈希处理而非明文主机名
无凭证收割或远程代码执行
数据库仅存储在本地配置的路径
核心功能(记忆管理、文档搜索)实现清晰