dsh-market 插件市场安全机制完全指南请求围栏、allowBuilds 拦截与零遥测【免费下载链接】dsh-marketThe plugin market inside DeepSeek Harness — browse, search, one-click install · DSH 可视化插件市场项目地址: https://gitcode.com/gh_mirrors/ds/dsh-marketdsh-market 是 DeepSeek Harness 内置的可视化插件市场支持浏览社区目录并一键安装。本文拆解它的三层安全设计同源 POST 请求围栏、pnpm allowBuilds 构建脚本拦截、零遥测下的凭据流向读完即可在安装插件前确认每道边界。结论任何会改变本机状态的请求必须先过「同源 回环 注册表白名单」三道校验安装阶段能执行的代码被 pnpm 默认挡住放行只接受逐包显式授权市场自身不主动外联凭据用完即弃、不落盘。插件市场听起来只是「商店 UI」但 dsh-market 运行在宿主进程内部路由注册在宿主 Web 服务器上安装插件时会在你的 profile 目录里真实执行pnpm、dsh plugin、git命令。SECURITY.md 的原文It runs shell commands (pnpm,dsh plugin,git) against the users own profile, by design — that is what installing a plugin is.也就是说它同时持有三类能力接收 HTTP 请求、读写 profile 文件、执行 Shell 命令。下文按「谁能发请求 → 请求进来后发生什么 → 数据与凭据流向哪里」三个问题展开。谁能对插件市场发请求同源 POST 与回环校验市场没有自己的登录请求能否触发安装由 src/http.ts 的sameOrigin校验决定。src/routes.ts 的开篇注释直接给出理由Security: the install route executes a shell command, so it accepts only same-origin POSTs and only sources present in the curated registry.规则跨站页面无法驱动安装所有改变状态的路线安装、卸载、更新、放行构建、重启等必须 POST 且通过同源校验失败一律 403untrusted originOrigin 存在时必须与 Host 一致Origin: null沙箱 iframe、data:文档和空 Origin 一律拒绝浏览器标记sec-fetch-site: cross-site的请求直接拒绝Origin 缺失非浏览器客户端、Desktop 构建的内置代理会剥掉它则放行——因为非浏览器客户端本就能伪造任意 Origin这条规则只拦「页面」对你的实际影响攻击者的网页无法「遥控」你本地的安装端点误开一个恶意页面不会触发任何安装。宿主若开启了登录市场路由还会先经过宿主自己的请求门refuseUnadmitted无会话的请求在读取阶段就被拦下市场不自建第二套登录。实现Host 必须指向回环堵住 DNS RebindingOrigin Host并不足够DNS Rebinding 攻击中攻击者让自己的域名解析到 127.0.0.1此时 Origin 与 Host 恰好相等。所以校验额外要求 Host 必须是回环地址127.0.0.1/localhost/[::1]见loopbackAuthoritysrc/http.ts。宿主跑在反向代理、隧道或局域网主机名后面时纯回环规则会让所有变更路线 403。市场的答案是「声明式权威」只有写进部署配置如dsh web --trusted-host的主机名进入可信列表未声明的名字照旧拒绝。请求进来后发生什么注册表白名单与 pnpm 构建脚本默认拦截过了请求围栏只是第一步。进入安装逻辑后还有两层「不执行不该执行的不写不该写的」。规则安装来源只认精选注册表安装目标只能来自精选注册表awesome-dsh-plugin 目录里的条目npm 包、预构建 tarball 或 git 来源目录之外的一律拒绝src/registry.ts目录每次请求实时拉取没有打包内置的快照兜底——README 的说法是对每日增长的目录过期答案「不是降级而是错误」变更路线的请求体上限 4 KiB包名按严格的 npm 命名规则校验非法名字直接 400/404..这类穿越文本进不了后续路径拼接对你的实际影响绕过前端手工构造请求也无法让市场安装目录之外的任意包。「在目录里」是审核边界而非信任保证README 同样标注 Listing ≠ endorsement。规则pnpm allowBuilds 构建脚本默认拦截策略恶意代码常藏在postinstall这类构建脚本里。dsh-market 的做法是依赖 pnpm ≥10 的原生机制不在白名单里的包构建脚本一律不执行安装结果会报出被拦截的包名。确实需要放行时市场 UI 的「放行构建脚本并重试」会把具体那个包写进 profile 的pnpm-workspace.yaml的allowBuilds块setAllowBuildssrc/profile.ts。写入前有严格的形式校验源码注释写得很直白只接受 npm 包名、git 克隆地址键、固定 commit 的压缩包地址三种形态「What may be written, and nothing else」——不允许把任意文本塞进会被 pnpm 解析的配置文件。如何验证 allowBuilds 是否生效打开 profile 目录的pnpm-workspace.yamlallowBuilds块里应当只有你显式放行过的包若市场 UI 再次弹出拦截列表说明那个包仍未在白名单内拦截仍然有效。数据与凭据会流到哪里去零遥测与备份边界零遥测市场从不主动外联没有账号、没有官方服务器、没有埋点。隐私页 的表述插件不会把关于你的任何信息发到任何地方市场唯一的网络行为是按需拉取精选目录以及你明确发起的安装、下载、备份Gist 备份的 token 每次操作粘贴或宿主环境变量提供用完即弃源码注释明确「Tokens are never persisted」src/gist.ts带 token 的请求直连api.github.com不经过任何公共加速服务「导出日志排障」同样是脱敏的主目录路径与凭据形状被打码src/log-redaction.ts日志只留在本机由你自己决定是否分享对你的实际影响这个市场不构成你的数据外泄通道它也不持有任何长期凭据。备份目标受校验凭据不落盘WebDAV 备份仅 https目标域名会先做 DNS 解析指向私有或保留地址内网段、169.254.169.254等直接拒绝防止同源脚本借它打通内网密码永不存进浏览器src/backup.ts备份可能包含 profile 配置里的凭据因此导出与上传前 UI 会明确警告Gist 通道的 API 主机硬编码为api.github.com不存在用户输入 URL 的注入面Gist ID 也按严格字符白名单校验边界与例外设计点具体规则为什么这么定一键重启要求直连回环客户端带forwarded/x-forwarded-for的请求一律拒绝原样复现 DSH 入口、参数、环境、工作目录src/restart.ts重启端点近似进程级控制代理无法证明请求「就是你本人」托管环境宿主是 systemd 服务主进程时重启按钮自动隐藏pm2 / launchd 需显式allowRestart: false否则连宿主带 cgroup 一起杀掉服务起不来WebDAV 备份仅 https私有/保留地址拒绝密码不存浏览器用户输入 URL 不能成为内网探测通道Gist 同步token 不落盘请求直连api.github.com无长期凭据主机固定消除注入面Origin: null/ 空 Origin一律拒绝沙箱 iframe、data:文档无法解析不能证明同源终端/CLI 类插件安装进 web profile 前在确认框打标提醒终端界面在 web profile 里不生效需提前告知 60 秒自查安装前核对来源确认插件卡片的来源、作者、star 数与精选注册表一致终端/CLI 类插件带醒目标记目录之外的包市场根本装不了检查构建授权安装提示 allowBuilds 时打开 profile 的pnpm-workspace.yaml核对已放行的包逐包放行该文件里应当只有你主动加过的条目管好重启权限DSH 跑在 systemd / launchd / pm2 下时在 profile 的 patch 里config:下写allowRestart: false不能写在顶层随后/dsh-market/status返回restart: false即为生效- id: dsh-market config: allowRestart: false请求围栏决定「谁能让它动」白名单与构建拦截决定「它能做什么」零遥测决定「数据去哪儿」——下次点安装前把这三层边界对一遍即可。更完整的说明见 README.md 的 Security 章节、SECURITY.md 的漏洞报告指南与 site/privacy.zh.html 的隐私说明。【免费下载链接】dsh-marketThe plugin market inside DeepSeek Harness — browse, search, one-click install · DSH 可视化插件市场项目地址: https://gitcode.com/gh_mirrors/ds/dsh-market创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考