【免费下载链接】DSHA
免 ROOT 免 Termux,在手机上跑 DeepSeek Harness。完整 Ubuntu 环境 + proroot 零 ptrace 开销 · AI 输出实时上屏 · ADB 直连 · 数据不丢
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):
| 命令 | 放行 | 拒绝 |
|---|---|---|
pm | pm list packages、pm path 包名 | pm uninstall、pm clear、pm grant("安装、卸载、清数据和授权不开放") |
settings | settings get / list | settings 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 用一张"威胁 × 控制 × 限制"表格,把已知弱点全部摊开:
- 插件没有沙箱:正式终端与第三方插件按 ADR 0001 开放 shell、生命周期脚本与自动安装启用。插件在安装通过包格式、摘要与事务检查后自动生效,但"自动安装不是独立安全认证",恶意插件与 App 同 UID。
- LAN 是明文 HTTP:局域网访问有独立开关和鉴权,但没有 TLS,公开 Wi-Fi 下流量可被窃听。
- 新备份不带密码:新导出的
DSHA-data-v5-*.tar.gz无需密码(docs/adr/0001-build154-boundaries.md),文件丢失即数据丢失;内部自动副本才用本机随机密钥加密,而卸载可能连同密钥一起消失。 - 更新清单无独立签名:更新走 HTTPS + 完整 APK SHA 校验,但清单本身没有独立签名,服务器受损时仍可描述错误版本。
- 敏感窗口识别是启发式:录音/读屏按"当前来源 + 运行代次"校验,拒绝摄像头与屏幕音频,但"不能保证识别所有私人页面"。
- 日志脱敏有上限:已知秘密与常见凭据格式会脱敏,但"任意第三方输出不保证识别所有秘密"。
给普通用户的三条实践建议 ✅
- 不装来路不明的插件——这是当前模型下最大的攻击面;
- LAN 功能只在可信网络开启,用完即关;
- 定期导出备份并保存一份到手机外,因为新格式备份不加密。
六、结语:安全模型的价值在于"说实话"
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 直连 · 数据不丢
相关推荐
AI Agent安全设计深水区:eve-software-factory-template的deny-by-default信任模型如何管住无人值守运行
AI Agent安全设计深水区:eve software factory template的deny by default信任模型如何管住无人值守运行 eve
autocontext 安全模型完全解析:Loopback 绑定、Bearer Token 与沙箱执行边界如何守住 3 道防线
autocontext 安全模型完全解析:Loopback 绑定、Bearer Token 与沙箱执行边界如何守住 3 道防线 autocontext 是一个递
FlyingMouse Format 0.7.8 启动兼容性修复全解析:原生启动器资源自检、ACL 最小修复与沙箱保持
FlyingMouse Format 0.7.8 启动兼容性修复全解析:原生启动器资源自检、ACL 最小修复与沙箱保持 本篇技术指南以 0.7.8 启动兼容性候
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考