安装验证:运行验证通过 (L5) · 验证于 dsh 0.2.1-rc.2 · 验证日期 安装验证详情 →
功能介绍
专为 DSH iOS App 与多终端协同打造:多设备同时在线无缝切换、实时同屏收发、锁屏秒级自愈(Fast-Resume),支持局域网 3082/3083 隔离与三层通用稳定外网通道。
安装
dsh plugin --profile web add github:liushQAQ/dsh-anywhere安装方式: GitHub · 运行验证通过 (L5)
验证与兼容性
按插件版本分组:每张卡是该插件版本实测过的 dsh 版本与安装兼容结论(L5 优先)。只列真测过的组合——未列出 = 未实测,不推定兼容。L1–L3 为插件级静态档(与 dsh 版本无关,各 dsh 行同值):在行内「验证等级」格里与 L4/L5 并列显示、标注「静态」,证据体为插件级单份、随行内「查看检查项与证据」出现,不在各版本重复存储。
External credentials(插件级):未检测到
○ 作者未声明 dsh 版本要求 —— 安装不会因版本被拒。
| 插件版本 \ dsh | dsh 0.2.1-rc.2 |
|---|---|
| v1.0.8 | · |
v1.0.8github2026-10-21
https://github.com/liushQAQ/dsh-anywhere
该版本无运行时安装实测(仅静态扫描)——兼容性未知,不推定。
仅展示最近 3 个已发布版本;源码快照(commit hash)组、未标注工件组与更早版本不展示——全量档案保留在数据层(插件无任何已发布版本时,快照/未标注组才照常展示)。
作者徽章
将官方徽章嵌入你的 README,展示插件的安全与安装检测状态:
`[](https://www.dsh.so/artifact/dsh-anywhere-2/)``[](https://www.dsh.so/artifact/dsh-anywhere-2/)`安全报告
两层自动化检查,都不是人工审核:静态扫描(逐插件规则判定)与模型驱动的动态安全审计(只覆盖静态判定 warn 及以上的插件子集,不执行插件代码)。
静态扫描 低,动态审计最高 中,按「取更严者」→ 总评级 中。
v1.0.9dsh 清单v1.0.9git2026-10-21v1.0.9版本一致clean · gitvet 为 AST 静态扫描(npm 发布物或 git 源码)。
静态发现(5 条)
- 警告netIp · network
client/anywhere-locales.js:94'namedHow': '在 Cloudflare Zero Trust → Networks → Tunnels 创建隧道并复制 Token;把域名的 Service 指向 http://127.0.0.1:3081(代理端口)。地址固定,重启不再变化。', - 警告netIp · network
client/anywhere-locales.js:200'namedHow': 'Create a tunnel in Cloudflare Zero Trust → Networks → Tunnels and copy the token; point the hostname\'s Service at http://127.0 - 警告childProcess · code-exec
lib/restart.js:69' const child = spawn(file, args, { cwd, detached: true, stdio: ["ignore", out, err], env: process.env })', - 警告fsWrite · files
lib/restart.js:72' try { fs.appendFileSync(logErr, "restart helper failed: " + (ex && ex.message) + "\\n") } catch {}', - 警告shellExec · shell
lib/service.mjs:75execFile('ipconfig.exe', { timeout: 3000 }, (err, stdout) => {
展开 3 条审计发现
- medium网络可达的 RPC 允许已认证客户端读取主机任意文件
client/api.js:20client/host 共享契约暴露了 fileRead 端点,其用途就是把主机文件正文返回给浏览器。client/mobile/fileGuard.ts 直接把从 DOM 文本里抓到的路径传入(`const filePath = (el.textContent ?? '').trim(); const res = await readFile(filePath)`),即任意绝对路径字符串过线。由于该页面还会经 0.0.0.0:3083 局域网代理与公网隧道发布,任何通过 PIN 校验的人(或用户关闭局域网密码后同网段任意设备)都可读取如 ~/.dsh/dsh-anywhere/settings.json(含 Tunnel Token)或 SSH 私钥。宿主处理逻辑在未采集的 lib/index.js 中,无法确认是否存在路径白名单。
- low远程可触发的宿主重启:派生 detached node 辅助进程并 SIGTERM 当前进程
lib/restart.js:98restartHost() 用 process.argv 重建启动命令,detached 派生 `node -e <生成脚本>`,500ms 后杀掉自身 PID;暴露的 anywhere.restart RPC 可被任何通过 PIN 校验的远端客户端调用。生成脚本只嵌入经 JSON.stringify 的可信 argv/日志路径,不存在命令注入,但远端可反复重启宿主(可用性影响),若辅助进程失败 DSH 会一直起不来。
- low代理默认监听 0.0.0.0 且局域网访问默认开启
lib/service.mjs:180面向可执行代码的 DSH 界面的代理绑定所有网卡,且局域网访问默认开启(`getLanEnabled = () => true`,settings.lanEnabled !== false),同网段设备开箱即可访问;唯一屏障是未采集的 lib/proxy.mjs 中的 PIN 校验,其强度(爆破防护、时序安全、lanAccessEnabled() 为 false 时是否仍强制)无法验证。
插件把 DSH Web 经代理与隧道暴露到局域网/公网:主要风险是网络可达的 fileRead 读取主机文件,且鉴权与代理实现未纳入本次源码。
口径:动态审计只会把风险往严重里判,不会把风险降下来(只升不降,不构成豁免);模型判错时由人工复核撤回,撤回后回到静态判定。合并判定 = 两层中更严的那一个。
免责声明:静态扫描与动态安全审计都是自动化分析,不构成安全保证。安装前请自行审查。
活跃度
最近提交 2026-10-21 · 活跃度:活跃
• 仓库创建: 2026-10-12
• 星标: ★ 0 · 复刻: 0
• 健康度: 活跃 — 近 30 天有提交
来源
GitHub: github.com/liushQAQ/dsh-anywhere
作者 README
GitHub 原文 ↗展示作者仓库中的原始 README 内容,实时抓取、未做改写;优先加载中文版(README.zh-CN.md 等),无中文版时回退英文。
