// SECURITY AUDIT

安全审计报告

信任,但验证——每一次审计结论都公开在这里。

审计总览

已发布
📅 审计日期:2026-06-01 📄 审计范围:lib/ 全部 159 个 .dart 文件 · plugins/ 14 个 .html 插件 · android/ 配置 🔬 审计方法:跨文件交叉验证 + 自底向上分层审计
1
严重
3
7
6
10
确认安全设计

总体评价:项目整体安全态势良好。Hive 敏感数据加密、沙箱隔离、HTTPS 强制等核心安全机制实现到位。 主要问题集中在 Android 构建机密钥管理、个别 Hive Box 未纳入加密范围、插件层密码输入方式等。

🔧
报告发布后的修复进展:报告之后发布的版本已陆续修复多项问题——API Key 改为按厂商分桶加密存储(v1.7.0)、 密码管理器假加密重写为真 AES-256-GCM(v1.7.0)、2FA 持久化(v1.7.0)、网络工具箱 SSL 证书严格校验(v1.7.0)、 剪贴板敏感字段过滤(v1.7.0)、改密自动迁移加密数据(v1.1.0)。最新修复明细见 更新日志

已确认真实问题

🔴 严重

严重
#1 Android 签名密钥密码明文存储 — 构建机上的签名密钥口令以明文形式保存在配置中,泄露构建机即等于泄露签名密钥。

🟠 高

#2 ai_plugin_projects Box 存储 aiApiKey 但未加密 — 项目级 AI Key 明文落盘于 Hive,未纳入加密范围。
#3 插件市场存在硬编码测试许可密钥 — 测试凭据不应出现在发布包中。
#4 REQUEST_INSTALL_PACKAGES 权限 — 申请了安装未知来源应用的权限,需最小化使用场景。

🟡 中

#5 百度翻译 API 密钥经 GET URL 参数传输 — Key 可能出现在访问日志 / 历史记录中。
#6 插件通过 prompt() 输入加密密码 — 沙箱内密码输入应使用宿主提供的安全键盘通道。
#7 WebDAV 自动备份密码保存在 Hive 中 — 需确认已纳入加密 box 范围。
#8 RECORD_AUDIO 权限 — 应仅在录音场景按需申请,避免常驻授权。

🟢 低

#9 sticky_notes Box 存储用户便签但未加密
#10 记账插件明文存储财务数据
#11 requestLegacyExternalStorage 兼容标志 — 建议随 targetSdk 升级移除
#12 书签插件允许 http:// URL — 明文传输页面应默认降级提示
#13 错误日志导出可能暴露内部路径 — 堆栈追踪含文件路径与代码结构

⚪ 需人工确认的疑似问题

疑似
S1 插件 innerHTML 广泛使用(13/14 插件)— 大多数已实现 escapeHtml(),沙箱 CSP 限制外部脚本,但仍存在遗漏转义即 DOM XSS 的可能。
疑似
S2 插件 console.log / console.error 调用 — 输出写入 logcat,内容仅含错误对象不含用户数据,风险低。

确认安全的设计

以下安全机制经过跨文件交叉验证,确认为安全有效:

#安全机制验证路径状态
1Hive 加密密钥硬件保护FlutterSecureStorage → Android Keystore / iOS Keychain
27/7 敏感 Box 全部加密main.dart 交叉验证,敏感 box 均以 cipher 打开
3备份强制加密无密码 → UnencryptedBackupException
4备份加密算法PBKDF2(300k 轮)+ AES-256-GCM
5Release 日志零开销所有日志输出均在 kDebugMode
6WebDAV HTTPS 强制HTTP 配置直接拒绝
7沙箱 eval / Function 禁用Object.defineProperty 全覆盖
8沙箱 CSP 注入meta 标签 + HTTP 头双路径
9路径穿越防护插件导入与备份恢复均有安全校验
10其他确认项加密备份算法 v3、恢复流程原子化、敏感页面 FLAG_SECURE 等
🔬
完整报告(含逐条代码位置与修复建议)随开源仓库公开。当前为要点版。安全是我们的地基——任何问题欢迎通过 问题反馈 告诉我们。
MATRIX MODE: ON — 再输入一次或按 ESC 退出