{"schemaVersion":2,"dataVersion":"20260822T105549Z-0a0b366f","generatedAt":"2026-08-22T10:55:49.138Z","source":{"id":"botonj-dsh-remote-link","slug":"botonj-dsh-remote-link","rank":522,"url":"https://github.com/BotonJ/dsh-remote-link","name":"BotonJ/dsh-remote-link","category":"remote","description":{"zh":"官方 Web UI 的安全远程接入：带认证的局域网/隧道网关，QR + HMAC 一次性配对、按设备吊销，mDNS 发现，附 fork_session 会话分叉工具。","en":"Secure remote access for the official Web UI: authenticated LAN/tunnel gateway with QR + HMAC one-time pairing, per-device sessions and revocation, mDNS discovery, and a fork_session tool."},"stars":5,"starsCheckedAt":"2026-08-21","repository":{"owner":"BotonJ","repo":"dsh-remote-link","requestedRef":null,"subpath":""},"npm":null,"downloads":null,"installMode":"github-source","upstreamInstall":"dsh plugin --profile web add github:BotonJ/dsh-remote-link","tarball":null,"added":"2026-08-15","page":"https://awesome-dsh-plugin.com/p/BotonJ/dsh-remote-link/","screenshots":[],"discovery":{"provider":"awesome-dsh-plugin","channel":"plugins.json","indexUrl":"https://github.com/awesome-dsh-plugin/awesome-dsh-plugin","selection":"all curated entries"}},"report":{"sourceId":"botonj-dsh-remote-link","slug":"botonj-dsh-remote-link","policyVersion":"HT-DSH-0.2.2","scannedAt":"2026-08-22T08:25:47.095Z","scanStatus":"static-complete","verdict":"caution","score":94,"commit":"f7a444eb6e0254c1c2f79a54d8389c01886dfc7f","commitDate":"2026-08-19T10:42:38+08:00","artifactDigest":"sha256:726d18e38bbab051a1bcb2c08ed387f5d251c8afa036591342034816ba9ae414","downloadUrl":"https://github.com/BotonJ/dsh-remote-link/archive/f7a444eb6e0254c1c2f79a54d8389c01886dfc7f.tar.gz","installMode":"github-source","installCommand":"dsh plugin --profile web add github:BotonJ/dsh-remote-link","manifest":{"found":true,"path":"package.json","parseError":null,"packageName":"dsh-remote-link","packageVersion":"0.1.0","bundle":{"patch":"./cordis.patch.yml"},"client":null,"lifecycleScripts":{},"peerDependencies":[]},"identity":{"status":"not-published","installMode":"github-source","upstreamNpm":null,"manifestName":"dsh-remote-link","nameMatch":null,"npm":null,"repositoryMatch":"not-checked","provenance":"not-checked","tarballHost":null},"permissions":{"bundlePatch":"cordis.patch.yml","inserts":[{"id":"remote-link","name":"dsh-remote-link","path":"cordis.patch.yml","disabled":false}],"overrides":[],"jsExpressions":0,"clientPlatform":null,"parseErrors":[]},"capabilities":["browser-ui","environment","filesystem","host-bundle","network","subprocess","telemetry"],"outboundHosts":[{"host":"www.d-project.com","count":2},{"host":"www.opensource.org","count":2},{"host":"www.denso-wave.com","count":2},{"host":"xxx.trycloudflare.com","count":1},{"host":"pairing.local","count":1}],"findings":[{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"mimo/ui.html","pathClass":"html","line":442,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"436be26079a10c8c54a4fc7c"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"low","layer":"static","path":"mimo/ui.html","pathClass":"html","line":458,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","note":"附近存在清洗/转义调用","hash":"436be26079a10c8c54a4fc7c"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/vision-decode.mjs","pathClass":"source","line":11,"evidence":"execFileSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"a1578f7590e9df596013c2bc"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"scripts/vision-decode.mjs","pathClass":"source","line":11,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"8a70c672a5250a364d16800f"},{"id":"HT-OBFUSCATION-001","title":"源码呈现混淆或载荷隐藏特征","severity":"high","confidence":"low","layer":"static","path":"test/host-probe.test.js","pathClass":"test-example-docs","line":10,"evidence":"Buffer.from('dsh:s3cret').toString('base64')}` /** Minimal DSH-shaped upstream: host.describe RPC + host event SSE stream. */ function startDshUpstream(describeVal","remediation":"以可读源码分发；若必须打包，请同时提供可复现构建与 source map。","note":"解码后直接进入执行；位于测试、示例或文档目录","hash":"d9c539e88f393d8ad0e6eed4"},{"id":"HT-RUNTIME-001","title":"动态代码执行","severity":"high","confidence":"low","layer":"static","path":"test/index.test.js","pathClass":"test-example-docs","line":204,"evidence":"new Function(","remediation":"使用静态模块和受约束的配置解析器，避免在宿主权限下执行动态字符串。","note":"位于测试、示例或文档目录","hash":"76efa7f7d63bef67ce4175f2"},{"id":"HT-RUNTIME-001","title":"动态代码执行","severity":"high","confidence":"low","layer":"static","path":"test/pairing-page.test.js","pathClass":"test-example-docs","line":6,"evidence":"new Function(","remediation":"使用静态模块和受约束的配置解析器，避免在宿主权限下执行动态字符串。","note":"位于测试、示例或文档目录","hash":"88a912958ba2e43f47adcee7"}],"counts":{"critical":0,"high":0,"medium":1,"low":2},"rawCounts":{"critical":0,"high":3,"medium":2,"low":2},"vulnerabilities":[],"coverage":{"source":"complete","manifest":"complete","bundleConfig":"complete","dependencies":"lockfile-missing","vulnerabilities":"lockfile-missing","identity":"complete","artifact":"not-compared","llmReview":"not-needed","dynamicRuntime":"not-run","humanReview":"not-run"},"inventory":{"filesScanned":60,"bytesScanned":381792,"truncated":false,"lockfiles":[],"pathClasses":{"markdown":6,"cordis":1,"html":1,"source":32,"manifest":3,"script":1,"test-example-docs":16}},"limitations":["此结果为源码静态检测，不等同于无漏洞证明。","尚未比对 npm 发布包与源码的一致性，也未执行隔离运行和人工复核。","危险能力可能是插件功能所需，需结合用途与证据人工判断。"],"limitationKeys":["static-analysis-only","no-artifact-runtime-human-review","capability-needs-context"]},"timeline":[{"scannedAt":"2026-08-22T08:25:47.095Z","commit":"f7a444eb6e0254c1c2f79a54d8389c01886dfc7f","policyVersion":"HT-DSH-0.2.2","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T11:27:09.253Z","commit":"f7a444eb6e0254c1c2f79a54d8389c01886dfc7f","policyVersion":"HT-DSH-0.2.1","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T10:56:00.874Z","commit":"f7a444eb6e0254c1c2f79a54d8389c01886dfc7f","policyVersion":"HT-DSH-0.2.0","verdict":"caution","status":"static-complete"}],"events":[{"kind":"policy-change","from":"HT-DSH-0.2.1","to":"HT-DSH-0.2.2","commit":"f7a444eb6e0254c1c2f79a54d8389c01886dfc7f","policyVersion":"HT-DSH-0.2.2","at":"2026-08-22T08:25:47.095Z"},{"kind":"policy-change","from":"HT-DSH-0.2.0","to":"HT-DSH-0.2.1","commit":"f7a444eb6e0254c1c2f79a54d8389c01886dfc7f","policyVersion":"HT-DSH-0.2.1","at":"2026-08-21T11:27:09.253Z"},{"kind":"first-scan","from":null,"to":"caution","commit":"f7a444eb6e0254c1c2f79a54d8389c01886dfc7f","policyVersion":"HT-DSH-0.2.0","at":"2026-08-21T10:56:00.874Z"}]}