@renger185/dsh-phone-remote avatar

@renger185/dsh-phone-remote

手机远程操控 DSH:手机浏览器原生页面 + 限时门 + 企微机器人长连接

Plugin浏览器
验证
L4 · 安装已测
失败
风险
严重
健康
活跃
信任
银

安装验证:沙盒安装通过,Web 冒烟失败 (L5 failed) · 验证于 dsh 0.2.1-rc.2 · 验证日期 安装验证详情 →

功能介绍

手机远程操控 DSH:手机浏览器原生页面 + 限时门 + 企微机器人长连接

安装

dsh plugin --profile web add github:renger185/dsh-phone-remote
已验证

安装方式: GitHub · 沙盒安装通过,Web 冒烟失败 (L5 failed)

验证与兼容性

按插件版本分组:每张卡是该插件版本实测过的 dsh 版本与安装兼容结论(L5 优先)。只列真测过的组合——未列出 = 未实测,不推定兼容。L1–L3 为插件级静态档(与 dsh 版本无关,各 dsh 行同值):在行内「验证等级」格里与 L4/L5 并列显示、标注「静态」,证据体为插件级单份、随行内「查看检查项与证据」出现,不在各版本重复存储。

External credentials(插件级):未检测到

原插件兼容声明来自 package.json · peerDependencies
作者未声明 dsh 版本要求

○ 作者未声明 dsh 版本要求 —— 安装不会因版本被拒。

安装兼容矩阵(速览 · 行 = 插件版本〔最近 5〕,列 = dsh 版本〔最近 5〕)
结论一览 → 证据在下方分版本卡片
插件版本 \ dshdsh 0.2.1-rc.2
v0.3.0·
安装兼容实测(按插件版本,组内按 dsh 版本)
图例:✓ L5 运行验证通过○ 生态插件◼ 生态应用✗ 失败
v0.3.0github2026-10-21

https://github.com/renger185/dsh-phone-remote

该版本无运行时安装实测(仅静态扫描)——兼容性未知,不推定。

仅展示最近 3 个已发布版本;源码快照(commit hash)组、未标注工件组与更早版本不展示——全量档案保留在数据层(插件无任何已发布版本时,快照/未标注组才照常展示)。

作者徽章

将官方徽章嵌入你的 README,展示插件的安全与安装检测状态:

dsh.so risk
`[![dsh.so risk](https://www.dsh.so/badge/dsh-phone-remote-2.svg)](https://www.dsh.so/artifact/dsh-phone-remote-2/)`

安全报告

两层自动化检查,都不是人工审核:静态扫描(逐插件规则判定)与模型驱动的动态安全审计(只覆盖静态判定 warn 及以上的插件子集,不执行插件代码)。

dsh-phone-remote-2自动审查 · 每日更新

静态扫描 低,动态审计最高 高,按「取更严者」→ 总评级 高。

静态 低→动态 高→总评级 高
0 严重·0 高
高总评级 · 高
1静态扫描 · vet 主判vet AST 静态分析(npm 发布物或 git 源码)
插件版本v0.3.0dsh 清单
扫描版本v0.3.0git2026-10-21
当前版本v0.3.0版本一致
vet 判定clean · git

vet 为 AST 静态扫描(npm 发布物或 git 源码)。

静态发现(10 条)
  • 警告childProcess · code-execcompanion/phone-proxy-supervisor.mjs:53

    child = spawn(process.execPath, [PROXY], { stdio: 'inherit', cwd: HERE, windowsHide: true })

  • 警告fsWrite · filescompanion/phone-proxy-supervisor.mjs:22

    fs.appendFileSync(SUPERVISOR_LOG, text + '\n', 'utf8')

  • 警告fsWrite · filescompanion/phone-proxy.mjs:36

    fs.appendFileSync(LOG_FILE, `[${new Date().toISOString()}] ${line}\n`, 'utf8')

  • 警告childProcess · code-execcompanion/temp-door.mjs:146

    const child = spawn(cloudflared, ['tunnel', '--url', `http://127.0.0.1:${PROXY_PORT}`, '--no-autoupdate'], {

  • 警告netIp · networkcompanion/temp-door.mjs:146

    const child = spawn(cloudflared, ['tunnel', '--url', `http://127.0.0.1:${PROXY_PORT}`, '--no-autoupdate'], {

  • 警告fsWrite · filescompanion/temp-door.mjs:56

    fs.appendFileSync(LOG_FILE, text + '\n', 'utf8')

  • 警告fsWrite · filescompanion/temp-door.mjs:249

    fs.writeFileSync(STATE_FILE, JSON.stringify({

  • 警告childProcess · code-execcompanion/wecom-bot.mjs:55

    const child = spawn(process.execPath, [path.join(HERE, 'temp-door.mjs'), '--minutes', String(minutes)], {

  • 警告fsWrite · filescompanion/wecom-bot.mjs:40

    fs.appendFileSync(LOG_FILE, text + '\n', 'utf8')

  • 警告childProcess · code-execindex.js:104

    const child = spawn(process.execPath, [doorScript, '--minutes', String(doorMinutes), '--quiet'], {

2模型读脱敏源码上下文 · 不执行插件代码
最高等级高
并入后总评级 高
审计时间2026-10-19
发现计数0 严重·2 高另有 3 条中 / 0 条低未展开
展开 5 条审计发现
  • high随附代理监听 0.0.0.0,向任何未认证访问者重定向下发真实登录令牌companion/phone-proxy.mjs:92

    currentToken() 读取的正是插件写入 login-link.txt 的连接令牌,即可换取 30 天 cookie 的完全控制凭据。监听绑定在 0.0.0.0(第 151 行),局域网内任意主机或经 temp-door/Tailscale 到达该端口的任何人都能 GET / 直接拿到令牌并换取登录会话,构成完全认证绕过。

  • hightemp-door 通过 cloudflared 将泄露令牌的代理发布到公网companion/temp-door.mjs:122

    注释声称『没有登录钥匙进不去』,但隧道指向的 phone-proxy 会对任何未认证 GET / 自动下发 ?token=。30 分钟窗口内,任何拿到或猜到 trycloudflare 地址(该地址被发到企微聊天记录)的公网用户即可完全控制 Harness,注释中的安全前提不成立。

  • medium代理改写 Host 与 Origin,绕过 Harness 的 loopback 信任校验companion/phone-proxy.mjs:82

    Host/Origin 校验是 Harness 防御 DNS rebinding 与跨站 WebSocket 劫持的主要手段。代理把二者统一改成 127.0.0.1:<upstream> 并删除 forwarded-for 头,使所有请求看起来同源,上游无法再识别浏览器跨源攻击。

  • medium企微聊天文本含「开门」即可远程开启公网隧道companion/wecom-bot.mjs:82

    任何能给机器人发消息的主体(机器人所在群的任意成员)都会触发 temp-door 并在会话中回传公网地址。没有发送者白名单、没有二次确认、没有频率限制,暴露窗口可被无限次重新触发。

  • medium插件将原始连接令牌推送到第三方 webhook / 聊天记录index.js:139

    link 来自 ctx.connection.authenticatedUrl(base),内含进程连接令牌。每次激活都会 POST 到配置的企微 webhook(或 ntfy),完全控制凭据因此进入群聊天记录与第三方服务,任何能访问该通道的人在令牌轮换前均可使用。

宿主插件本身无害,但随附代理监听 0.0.0.0 并向任何未认证请求直接下发登录令牌,temp-door 又把该入口暴露到公网。

口径:动态审计只会把风险往严重里判,不会把风险降下来(只升不降,不构成豁免);模型判错时由人工复核撤回,撤回后回到静态判定。合并判定 = 两层中更严的那一个。

免责声明:静态扫描与动态安全审计都是自动化分析,不构成安全保证。安装前请自行审查。

活跃度

最近提交 2026-10-21 · 活跃度:活跃

• 仓库创建: 2026-10-18

• 星标: ★ 1 · 复刻: 0

• 健康度: 活跃 — 近 30 天有提交

来源

GitHub: github.com/renger185/dsh-phone-remote

这页有帮助吗?