Skip to content

Security: styisme/android-nas

Security

SECURITY.md

安全策略与高危警告

由于本项目(Android NAS)拥有极其底层的系统权限、实时的屏幕画面捕获能力、短信隐私读取能力、多用户数据隔离以及强大的网络穿透能力,请在使用前务必、务必、务必仔细阅读本安全声明。

本项目的设计初衷是在完全受信任的局域网环境下提供极致的极客体验。任何将其直接暴露在公共互联网、或在不可信的设备上开启高危功能的操作,都可能带来不可逆的灾难性后果。


🚨 极高危功能警告(高危必读)

1. 多模态远程控制 (Remote Desktop & WebSocket)

本项目内置了基于 WebSocket 的 H264 实时推流与反向触控引擎。在 v4.5.0 中,已强制加入 Token 鉴权机制且仅限 Admin,但仍需高度警惕:

  • 画面泄露风险:一旦你开启了【请求录屏授权】或【Root 截图流】,且管理员账号密码泄露,任何能够连接到 8082 端口的设备,都能截获你的实时屏幕画面(包括你输入的密码、聊天记录、私密照片)。
  • 完全接管风险:由于集成了【无障碍服务】与【Root 触控注入】,攻击者只要拿到 Admin 权限,就可以完全操控你的手机,包括模拟点击卸载应用、发送勒索信息或窃取网银。
  • 严禁操作:请绝对不要在公共 Wi-Fi 下开启远程控制。 使用完毕或不需要时,请务必在手机端下拉菜单或设置中关闭无障碍服务,并在网页端断开 WebSocket 连接。

2. 全盘模式与 Web Shell 终端

  • 彻底打破沙盒:开启“全盘模式”后,网页端、WebDAV、FTP 将突破 Android 沙盒,直接拥有访问 /data、/system、/vendor 等底层系统目录的读写权限。
  • 极其危险的 Web 终端:网页端的 Web Shell 拥有 su 级 Root 权限。虽然服务端内置了针对 rm -rf /、mkfs、dd if= 等极危指令的文本拦截,但这并不能防御所有变种命令或恶意脚本。
  • 后果自负:请绝对不要在公共网络(如咖啡厅 WiFi)下开启全盘模式并暴露端口。任何因误操作(如误删系统核心文件、错误修改权限)导致的系统变砖、无限重启、数据永久丢失,开发者概不负责。

3. Root 高级保活矩阵的副作用

为了对抗严苛的系统杀后台机制,我们提供了极其激进的保活策略。

  • OOM 免死与流氓化:通过 Root 注入 oom_score_adj=-1000,你的 NAS 进程将获得比系统桌面还高的内存优先级。这可能导致在手机极度卡顿时,系统无法通过清理后台来释放内存,进而引发系统崩溃。
  • 系统服务冻结:一键保活功能会强制冻结各大厂商的底层流氓服务(如 com.miui.powerkeeper)。这可能会导致你的手机无法正常接收微信消息通知,或导致手机日常耗电异常增加。
  • 卸载残留(PMS Hook):如果你在开启了 Magisk 特权模块的情况下尝试卸载应用,可能会被系统包管理器(PMS)拦截,提示“应用未卸载”。遇到此情况,请先在 Magisk 中禁用或移除保活模块,重启手机后再使用 pm uninstall --user 0 com.androidnas.all.server 命令强行卸载(注意:自 v4.4.1 起包名已迁移至 com.androidnas.all.*)。

4. ☢️ 终极自毁模式 (Panic Wipe) 的毁灭性风险

我们在 v4.4.1 引入了特工级的“核按钮”——自毁模式。

  • 彻底的数据销毁:在网页端或手机客户端发起自毁(并经过多重验证)后,服务端会不可逆地清空所有物理存储。如果勾选了“包含系统 Root 级擦除”,旧手机将直接被格式化并重启,系统彻底变砖。
  • 防误触警告:请绝对不要在主力机上测试此功能! 仅在准备丢弃的废旧测试机上验证。由用户误触或输入错误而导致的任何数据丢失及设备损坏,开发者概不负责。

5. 🛡️ 企业级安全防线配置的“锁死”风险 (v4.5.0 全面升级)

我们在 v4.5.0 中实装了极其严苛的多重安全机制,但这也意味着配置错误会导致自己将自己锁在门外:

  • 2FA 两步验证丢失:开启 2FA 后,如果用于绑定的手机(Authenticator)丢失或清除了数据,且浏览器也没有残留的登录态,你绝对无法再通过正常途径登录。唯一的补救方法是物理接触设备并清除 NAS 应用数据(会导致数据库丢失)。请务必妥善保存密钥。
  • 隐藏入口暗号遗忘:如果你开启了“隐藏入口”并设置了 secretPath,那么以后访问网页必须带上 ?s=你的暗号。如果暗号遗忘,网页端会永远返回 404。补救方法:使用同一局域网下的手机端进入驾驶舱,或直接清空应用数据。
  • 局域网物理锁的“误伤”:v4.5.0 默认开启了“高危 API 局域网锁”,禁止公网 IP 修改设置、执行终端或触发自毁。如果你在外网突然想修改系统配置,会直接被 403 拦截。此时必须通过 VPN 或 SSH 隧道回到内网才能修改。
  • CC 限流与防爆破误伤:连续输错 5 次密码会封禁 IP 15 分钟;单 IP 每秒请求超 30 次也会被直接熔断封禁。如果不小心把家人或自己锁在门外,请耐心等待时间到期。
  • 密码遗忘:所有密码均采用 SHA-256 加盐哈希,密码绝对无法找回,一旦遗忘只能清除应用数据重来。

6. ✉️ 短信中心的隐私与通信风险 (v4.5.0 新增)

我们在 v4.5.0 中新增了接管旧手机短信的能力。

  • 短信隐私泄露:开启短信中心后,旧手机收到的所有短信(包括银行验证码、私人聊天)都会缓存在内存日志中,并可通过 API 读取。任何获得 Admin 权限的人都能看到你的所有短信。
  • Webhook 隐私:如果你配置了 Webhook 转发,所有的短信正文都会通过明文或加密 HTTP 发送给你配置的第三方服务器(如 TG、企微)。请务必确保该服务器安全可靠,绝对不要将 Webhook 配置为不可信的第三方地址。
  • 恶意扣费风险:网页端提供了发送短信的功能。如果账号被黑客攻破,黑客可利用你旧手机的话费发送大量短信,导致严重财产损失。

7. 多用户体系与敏感 API 暴露

  • SQLite 权限提权:项目引入了多用户机制。admin 账号拥有上帝视角与用户管理 API (/api/users)。如果 admin 密码泄露,攻击者可直接创建一个拥有全盘权限的新账号,彻底接管设备。
  • 硬件监控信息泄露:/api/monitor 接口会暴露手机当前的 CPU 占用、内存、电池状态与物理温度。如果暴露在公网,可能被黑客用来分析设备负载,选择发起 DoS 攻击的最佳时机。
  • ZIP 打包服务器资源耗尽:/api/download/zip 允许用户请求打包下载多个文件。恶意并发请求可能导致服务端产生海量临时 ZIP 文件,迅速撑爆手机存储空间(OOM)导致服务崩溃。
  • 分享链接弱口令:如果使用带提取码的免密分享功能,请设置 4 位以上的复杂提取码,并务必设置过期时间,防止被暴力破解。

8. Webhook 推送、分片上传与元数据刮削风险

  • Webhook SSRF 与信息泄露风险:Webhook 允许服务端向外发起 HTTP POST 请求。如果恶意攻击者获取了 NAS 管理员权限并篡改了 Webhook URL,他不仅能窃取到所有文件上传、报警、短信日志,还可能利用服务端网络发起内网渗透(SSRF)。请务必妥善保管 Webhook 地址。
  • 大文件秒传与断点续传的资源耗尽:MD5 秒传校验与分片合并会消耗大量的 CPU 计算资源与临时磁盘空间。在极低配置(如 API 8 老设备)上并发上传大文件,极易导致 NAS 服务卡死(ANR)。
  • 影视刮削的隐私泄露:启用“影视海报墙”功能时,服务端会剥离视频文件名并发送给第三方开源 API 以获取海报与简介。如果你在根目录存放了带有敏感名称的视频文件(如私密录像),请谨慎使用此功能。
  • PWA 本地缓存残留:将网页端“添加到主屏幕”后,Service Worker 会缓存一部分页面静态资源。如果你在网吧或公共电脑上访问,请及时清理浏览器缓存,防止暴露你的 NAS 局域网 IP 与页面结构。

9. 公网穿透、HTTPS 与网络传输

  • 内网穿透暴露:如果你将穿透生成的公网链接分享给他人,请务必开启【账号验证】。若必须公网访问,请务必修改默认密码,并强烈建议使用支持 HTTPS 的自定义 SSH 穿透进行加密。
  • 自签证书警告:本项目支持原生 HTTPS,但由于是动态生成的自签证书,浏览器首次访问时会提示“连接不是私密连接”。这是正常现象,点击“高级 -> 继续前往”即可。但请绝对不要在公共 Wi-Fi 下使用未加密的降级 HTTP 模式。

🛡️ 安全部署与防范建议

  1. 网络物理隔离:最安全的 NAS 是永远不连外网的 NAS。建议将服务端放在一个专用的 IoT 访客路由器下,与主力办公电脑隔离。
  2. 强密码与二次验证策略:不要使用默认的 admin/admin。请使用 12 位以上的复杂密码。强烈建议开启“2FA 两步验证”与“紧急安全码”功能。
  3. 最小权限原则:
    • 为家庭成员分配独立的普通账号,切勿把 admin 密码到处发。
    • 如果只需要基础功能,请绝对不要开启全盘模式和远控。
    • 如果开放了 guest 访客账号,请限制其只能访问 /Public 目录,切勿在 Public 目录放敏感文件(如私钥、证件照片)。
  4. 定期审计:利用“在线设备”与“安全审计日志”功能,定期检查是否有未知 IP 尝试连接或发生敏感操作。
  5. 警惕未知来源的指令:不要随意在网页终端粘贴从网络上复制的未知脚本,防止被植入挖矿程序或后门。

报告漏洞

如果你发现了严重的安全漏洞(如未授权访问、任意文件读取/写入、远程代码执行等),请不要直接提交 Public Issue。

请通过 GitHub 仓库的 Security Advisory 功能私密提交,或直接联系项目维护者。我们将在确认漏洞后,以最快的速度发布安全补丁,并在更新日志中致谢。

免责声明

本项目按“原样”提供,不提供任何明示或暗示的担保。 使用本项目所带来的任何风险(包括但不限于设备损坏、数据泄露、隐私暴露、法律纠纷)均由使用者自行承担。如果你不同意此声明,请立即停止使用并删除本项目。

There aren't any published security advisories