Skip to content

Security: 123marks/Helm

Security

docs/SECURITY.md

安全模型与责任使用 (SECURITY)

1. 凭据加密

  • 主密钥 (Master Key):首次启动生成 32 字节随机密钥,使用 Electron safeStorage 由操作系统钥匙串封存(Windows DPAPI / macOS Keychain / Linux libsecret),密文存于 userData/master.key,明文仅驻留主进程内存。
  • 字段加密:密码、TOTP 密钥、备用验证码、Refresh Token 使用 AES-256-GCM 加密后入库,密文格式 enc:v1:<iv>:<authTag>:<ciphertext>(Base64)。每次加密随机 12 字节 IV,authTag 保证完整性。
  • 明文字段:用户名、邮箱、恢复邮箱/手机为便于搜索以明文存储;如需更高保密性可自行改为加密列。
  • 降级模式:当系统钥匙串不可用(如无 keyring 的 Linux),主密钥以 Base64 明文落盘,安全性下降;界面会显示「降级加密」提示。生产环境建议改为用户主密码派生(scrypt/argon2)。

2. 进程与边界

  • 渲染层 contextIsolation: true、nodeIntegration: false,仅能通过 preload 白名单通道访问主进程能力。
  • 明文主密钥永不进入渲染层;accounts:reveal 仅在用户显式操作时单次返回解密结果,不做缓存。
  • 日志与失败截图默认不落明文密码。

3. 数据存储位置

所有数据仅保存在本机 userData 目录,不上传任何服务器:

  • helm.sqlite:账号、任务、日志、设置
  • master.key:封存后的主密钥
  • chrome-profiles/<accountId>/:各账号独立的 Chrome 用户数据(含登录态 Cookie)
  • screenshots/:自动化失败截图
  • logs/app-YYYYMMDD.log:滚动日志文件

备份/导出:导出功能会生成包含明文凭据的 JSON,仅用于迁移备份,请离线妥善保管,切勿提交到仓库或云端。.gitignore 已排除运行时数据目录。

4. 自动化与反自动化

  • 自动化以 Playwright 驱动本地 Chrome、复用账号真实登录态为主,尽量降低触发风控概率。
  • 各平台(Google/GitHub/X)存在验证码、设备验证、异常登录挑战,不保证 100% 成功,也不包含任何绕过验证码/风控的手段。
  • 「协议方式」(直接构造 HTTP 请求改密/改恢复信息)通常会被风控拦截,本项目不作为主力手段。

5. 责任使用 (Responsible Use)

本工具用于帮助用户集中管理 自己拥有或已获授权 的账号,进行凭据保管、2FA 生成与安全设置的自动化维护。使用者须遵守:

  • 仅对本人拥有或明确授权的账号使用;
  • 遵守各平台服务条款与所在地法律法规;
  • 不得用于未授权访问、账号窃取、批量滥用等任何非法用途。

因滥用造成的后果由使用者自行承担。项目以开源形式提供,按「现状」分发,不提供任何担保。

6. 漏洞报告

如发现安全问题,请通过仓库 Issue(标注 security)或私下联系维护者,避免公开披露未修复的细节。

There aren't any published security advisories