ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

DSHA 安全模型深度解析:危险命令白名单守门人如何守住手机 AI,附信任边界与已知弱点全解

DSHA 安全模型深度解析:危险命令白名单守门人如何守住手机 AI,附信任边界与已知弱点全解

【免费下载链接】DSHA

免 ROOT 免 Termux,在手机上跑 DeepSeek Harness。完整 Ubuntu 环境 + proroot 零 ptrace 开销 · AI 输出实时上屏 · ADB 直连 · 数据不丢

项目地址:https://gitcode.com/gh_mirrors/ds/DSHA
点击查看免费下载

DSHA 是一款免 ROOT、免 Termux 的 Android 应用,装好即可在手机上跑完整的 DeepSeek Harness 和 Ubuntu 环境。正因为 AI 真的能在你手机里执行命令,DSHA 的安全模型才格外重要:它用信任边界划分能力、用危险命令白名单当守门人、并如实列出已知弱点。这篇文章带你从新手视角看懂这三件事。

本文依据仓库现行安全文档与源码撰写,核心资料:docs/security-model.md(中文安全模型)、docs/adr/0002-current-threat-model.md(威胁模型 ADR)。

一、为什么跑 AI 的手机应用最需要安全模型?

先说清楚 DSHA 在做什么 🤖:

  • 把一个完整的 Ubuntu 环境(proot 方案)封装进 APK,apt、交互式终端都能用;
  • AI 可以读写文件、执行 shell、安装插件,还能通过 ADB / Root / Shizuku 通道操作手机系统本身(查属性、看日志、管理应用)。

问题也随之而来:AI 是会犯错的。模型幻觉可能让它误判坐标、误输命令,第三方插件更可能包含恶意代码。DSHA 的安全模型回答的就是:哪些边界是可靠的、哪些命令必须拦截、哪些弱点是明知但仍存在的。

二、信任边界:一层层"能防什么、防不了什么"

官方安全模型把系统拆成六道边界,每一道都诚实标注了"实际保证"与"不能推导的保证"(见 docs/security-model.md):

信任边界实际能挡住什么挡不住什么
Android 应用 UID其他普通 App 访问 DSHA 私有数据proot 里的 root不是Android root,同 UID 代码不隔离
Ubuntu 与插件包格式、路径、摘要、事务核验第三方插件与应用同 UID,不是独立沙箱
loopback 桥(127.0.0.1:3090)token 鉴权、路由与能力约束、未知结果不重放本机 TCP 理论上可被同机其他进程连接
内嵌网页来源、端口、页面与运行代次校验不能批准任意网页、旧回调或摄像头
局域网(LAN)独立开关 + 鉴权 + 有界连接LAN 走HTTP 明文,无 TLS、无受信配对
用户备份归档完整认证/摘要后预检,私有槽位写入归档自述"健康"不等于本机证明

一句话总结:DSHA 的信任边界是"防误操作 + 防外部 App",而不是"防同 UID 恶意代码"。这一点在威胁模型 ADR 0002 中被反复强调:

同 UID 的 guest、插件与终端共享权限,proot 不隔离恶意代码。

三、危险命令白名单守门人:DeviceShellPolicy 是怎么拦命令的

这是整个安全模型里最硬核的部分。当 AI 想执行一条"设备命令"(经 ADB 通道操作 Android 系统),它必须通过 DeviceShellPolicy.java 这道关卡。设计哲学是八个字:默认拒绝,精确放行🛡️

3.1 命令分级:只有三类命令能过

源码开头就把所有命令分成READ(只读)、FILE(文件操作)、SENSITIVE_READ(敏感读取)和DENY(拒绝)四类(DeviceShellPolicy.java):

  • ✅只读白名单:id、getprop、dumpsys、logcat、ps、cat等三十来个"看"类命令;
  • ❌破坏性黑名单:dd、mkfs.*、fastboot、reboot、shutdown、setenforce等 30 多个分区/刷机/SELinux 命令一律拒绝;
  • ⚠️文件写操作:只允许mkdir/touch/cp/mv/rm等,且必须使用明确绝对路径,禁止通配符(*、?)和..上级跳转;
  • 🚫其余一切命令:不认识的命令不执行,直接DENY。

3.2 子命令级精确匹配:pm能查不能删

很多"只读白名单"翻车,是因为只认命令族名。DSHA 的做法是钻到子命令层(DeviceShellPolicy.java):

命令放行拒绝
pmpm list packages、pm path 包名pm uninstall、pm clear、pm grant("安装、卸载、清数据和授权不开放")
settingssettings get / listsettings put("系统设置只允许 get/list,禁止写入")
kill / pkill指定完整包名或正数 PID整组/全部进程信号、模糊匹配
find只读条件(-name、-maxdepth…)-exec、-delete等一切动作
logcat-d或-t 行数的有限读取清日志、无界读取

3.3 路径守门:照片目录只读

即使文件操作被放行,写入路径还要再过一层目录规则(DeviceShellPolicy.java):

  • 可写范围仅限/data/local/tmp/和受管的共享存储子路径;
  • DCIM、Pictures、Android/data、Android/obb及其祖先目录一律只读,防止 AI 误删你的照片和 App 私有数据;
  • 短信提供者的数据树(com.android.providers.telephony)对递归读取(find/ls -R)单独设防,防止被批量枚举。

3.4 语法层封锁:管道、重定向、变量全部禁止

更巧妙的是命令解析器本身(DeviceShellPolicy.java)。它不接受 shell 字符串,而是逐字符解析成 argv,遇到这些字符直接抛错拒绝:

  • ;&|><—— 脚本串联、管道、重定向(防echo x > file绕过);
  • $`()—— 变量展开与命令替换(防$(危险命令)注入);
  • 多行脚本与控制字符 —— 防换行注入。

也就是说,即使某条命令"长得像"白名单命令,只要带了任何 shell 元字符,就进不了执行层。官方技能文档 agent-skills/device-shell/SKILL.md 也明确要求:guest 终端的开放权限不代表可以绕过设备命令执行侧策略。

四、通道与确认:Root / Shizuku / ADB 之前还有一道桥

设备命令的实际执行通道在发送前由原生层按可用性选择 Root、Shizuku 或 ADB,且结果未知时禁止换通道重放(见 docs/security-model.md)。容器侧调用本机桥时,凭据从私有请求头文件读取,token 不进 URL、不进命令参数、不进日志。

这道确认桥并非天生可靠。仓库的 bug 记录 bug/dsha-bug-report.md 完整复盘过一次事故:早期 3090 确认端点无条件返回 YES,用户确认形同虚设。修复后,确认机制才真正"阻塞等待用户点击"。这类历史缺陷文档保留在仓库里,本身也说明了 DSHA 安全机制的演进方式:问题公开、修复留痕、验证可复现(对照分析见 bug/adb只读白名单过宽分析.md)。

五、已知弱点:官方诚实承认的边界

DSHA 的 威胁模型 ADR 用一张"威胁 × 控制 × 限制"表格,把已知弱点全部摊开:

  1. 插件没有沙箱:正式终端与第三方插件按 ADR 0001 开放 shell、生命周期脚本与自动安装启用。插件在安装通过包格式、摘要与事务检查后自动生效,但"自动安装不是独立安全认证",恶意插件与 App 同 UID。
  2. LAN 是明文 HTTP:局域网访问有独立开关和鉴权,但没有 TLS,公开 Wi-Fi 下流量可被窃听。
  3. 新备份不带密码:新导出的DSHA-data-v5-*.tar.gz无需密码(docs/adr/0001-build154-boundaries.md),文件丢失即数据丢失;内部自动副本才用本机随机密钥加密,而卸载可能连同密钥一起消失。
  4. 更新清单无独立签名:更新走 HTTPS + 完整 APK SHA 校验,但清单本身没有独立签名,服务器受损时仍可描述错误版本。
  5. 敏感窗口识别是启发式:录音/读屏按"当前来源 + 运行代次"校验,拒绝摄像头与屏幕音频,但"不能保证识别所有私人页面"。
  6. 日志脱敏有上限:已知秘密与常见凭据格式会脱敏,但"任意第三方输出不保证识别所有秘密"。

给普通用户的三条实践建议 ✅

  1. 不装来路不明的插件——这是当前模型下最大的攻击面;
  2. LAN 功能只在可信网络开启,用完即关;
  3. 定期导出备份并保存一份到手机外,因为新格式备份不加密。

六、结语:安全模型的价值在于"说实话"

DSHA 没有宣称自己是全封闭沙箱,而是明确告诉你:它防的是其他 App、误操作和不可信设备命令,防不住的是同 UID 的恶意插件与 LAN 窃听。白名单守门人DeviceShellPolicy用"默认拒绝 + 子命令精确匹配 + 路径保护 + 语法封锁"四层防线,挡住了 AI 手滑造成卸载、改设置、删文件的绝大部分高危场景。了解这些边界之后,你才能把手机 AI 用得既放心又高效。

📌 延伸阅读:docs/security-model.en.md(英文安全模型)、docs/module-map.md(模块结构图)、app/src/test/java/com/deepseekharness/app/util/DeviceShellPolicyTest.java(守门人单元测试)。

感谢赞助商 Axis AI 对本项目的支持:

【免费下载链接】DSHA

免 ROOT 免 Termux,在手机上跑 DeepSeek Harness。完整 Ubuntu 环境 + proroot 零 ptrace 开销 · AI 输出实时上屏 · ADB 直连 · 数据不丢

项目地址:https://gitcode.com/gh_mirrors/ds/DSHA
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进