{"schemaVersion":2,"dataVersion":"20260822T105549Z-0a0b366f","generatedAt":"2026-08-22T10:55:49.138Z","source":{"id":"e2mcc-dsh-popout-sidebar","slug":"e2mcc-dsh-popout-sidebar","rank":108,"url":"https://github.com/e2mcc/dsh-popout-sidebar","name":"e2mcc/dsh-popout-sidebar","category":"ui","description":{"zh":"可弹出式侧边栏：侧边栏展示产物与文件树，支持多种文件预览形式；并可弹出为独立浏览器标签页（可拖至另一显示器）；兼容其他sidebar插件，可以同时显示。","en":"Pop-out sidebar: lists artifacts and a file tree with multiple preview formats, pops out into a separate browser tab you can drag to another monitor, and coexists with other sidebar plugins simultaneously."},"stars":43,"starsCheckedAt":"2026-08-21","repository":{"owner":"e2mcc","repo":"dsh-popout-sidebar","requestedRef":null,"subpath":""},"npm":"dsh-popout-sidebar","downloads":117,"installMode":"npm","upstreamInstall":"dsh plugin --profile web add dsh-popout-sidebar","tarball":null,"added":"2026-08-17","page":"https://awesome-dsh-plugin.com/p/e2mcc/dsh-popout-sidebar/","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":"e2mcc-dsh-popout-sidebar","slug":"e2mcc-dsh-popout-sidebar","policyVersion":"HT-DSH-0.2.2","scannedAt":"2026-08-22T08:20:56.136Z","scanStatus":"static-complete","verdict":"review","score":79,"commit":"e9a8458cb65c0a863ba5c86bf4ad272b1e0e3162","commitDate":"2026-08-21T00:51:20+08:00","artifactDigest":"sha256:d0c83de91bdf9e47fc1d13508935169f6ed21f7ea44fc0a0cc9f58ee9714bdf3","downloadUrl":"https://github.com/e2mcc/dsh-popout-sidebar/archive/e9a8458cb65c0a863ba5c86bf4ad272b1e0e3162.tar.gz","installMode":"npm","installCommand":"dsh plugin --profile web add dsh-popout-sidebar","manifest":{"found":true,"path":"package.json","parseError":null,"packageName":"dsh-popout-sidebar","packageVersion":"1.0.1","bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web","inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-theme","@deepseek-ai/dsh-client-ui-conversation"]},"lifecycleScripts":{},"peerDependencies":[]},"identity":{"status":"found","installMode":"npm","upstreamNpm":"dsh-popout-sidebar","manifestName":"dsh-popout-sidebar","nameMatch":true,"npm":{"name":"dsh-popout-sidebar","latestVersion":"1.0.1","publishedAt":"2026-08-20T16:54:49.245Z","createdAt":"2026-08-19T11:43:17.886Z","versionCount":2,"maintainers":1,"repository":"git+https://github.com/e2mcc/dsh-popout-sidebar.git","hasInstallScripts":false,"deprecated":false},"repositoryMatch":"match","provenance":"none","tarballHost":null,"versionMatch":"match"},"permissions":{"bundlePatch":"cordis.patch.yml","inserts":[{"id":"popout-sidebar","name":"dsh-popout-sidebar","path":"cordis.patch.yml","disabled":false}],"overrides":[],"jsExpressions":0,"clientPlatform":"web","parseErrors":[]},"capabilities":["browser-ui","filesystem","host-bundle","network","subprocess","telemetry"],"outboundHosts":[{"host":"www.apache.org","count":1}],"findings":[{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"src/client.js","pathClass":"source","line":1053,"evidence":"dangerouslySetInnerHTML","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"fb69d878c8203d81f6dcd9ed"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"src/client/preview.js","pathClass":"source","line":229,"evidence":"dangerouslySetInnerHTML","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"848f73d2d4458727c52449c2"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"src/host/page.js","pathClass":"source","line":404,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"7b141f985f190c2abb447bdf"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"src/host/page.js","pathClass":"source","line":422,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"7b141f985f190c2abb447bdf"},{"id":"HT-RUNTIME-001","title":"动态代码执行","severity":"medium","confidence":"medium","layer":"static","path":"src/index.js","pathClass":"source","line":15,"evidence":"new Function(","remediation":"使用静态模块和受约束的配置解析器，避免在宿主权限下执行动态字符串。","hash":"4adb6a763a146e5af582058d","review":{"verdict":"functional","reason":"new Function仅用于把本地随包分发的host.js文本包装成函数并调用，读取的是插件自身文件而非远程/用户输入，用于兼容cordis动态与静态加载两种模式。","model":"sonnet@p2","reviewedAt":"2026-08-21T11:20:07.082Z"}},{"id":"HT-RUNTIME-001","title":"动态代码执行","severity":"high","confidence":"high","layer":"static","path":"src/vendor/pdfjs/pdf.min.js","pathClass":"source","line":22,"evidence":"new Function(","remediation":"使用静态模块和受约束的配置解析器，避免在宿主权限下执行动态字符串。","note":"动态执行与编码解码出现在同一语句，是典型的载荷隐藏模式","hash":"b7cb1b9435ca299c55203c71","review":{"verdict":"functional","reason":"该行是Mozilla pdf.js官方压缩包的入口行（webpack UMD封装），new Function出现在知名开源PDF渲染库内部而非插件自写载荷隐藏代码，用于支持文件预览功能。","model":"sonnet@p2","reviewedAt":"2026-08-21T11:20:07.082Z"}},{"id":"HT-RUNTIME-001","title":"动态代码执行","severity":"high","confidence":"high","layer":"static","path":"src/vendor/pdfjs/pdf.min.js","pathClass":"source","line":22,"evidence":"eval(","remediation":"使用静态模块和受约束的配置解析器，避免在宿主权限下执行动态字符串。","note":"动态执行与编码解码出现在同一语句，是典型的载荷隐藏模式","hash":"bc766c8cf7b6d5cf1d9e2d25","review":{"verdict":"functional","reason":"同一压缩文件第22行内的eval匹配来自Mozilla pdf.js库自身实现，是PDF预览所需的第三方库标准代码，非插件自定义远程载荷执行。","model":"sonnet@p2","reviewedAt":"2026-08-21T11:20:07.082Z"}},{"id":"HT-OBFUSCATION-001","title":"源码呈现混淆或载荷隐藏特征","severity":"high","confidence":"low","layer":"static","path":"src/vendor/pdfjs/pdf.min.js","pathClass":"source","line":22,"evidence":"Buffer.from(t),i=require(","remediation":"以可读源码分发；若必须打包，请同时提供可复现构建与 source map。","note":"已命名为压缩产物","hash":"a30cd404af62e9b54a917df0"}],"counts":{"critical":0,"high":2,"medium":5,"low":0},"rawCounts":{"critical":0,"high":3,"medium":5,"low":0},"vulnerabilities":[],"coverage":{"source":"complete","manifest":"complete","bundleConfig":"complete","dependencies":"lockfile-present","vulnerabilities":"complete","identity":"complete","artifact":"not-compared","llmReview":"complete","dynamicRuntime":"not-run","humanReview":"not-run"},"inventory":{"filesScanned":22,"bytesScanned":581903,"truncated":false,"lockfiles":["pnpm-lock.yaml"],"pathClasses":{"markdown":1,"cordis":1,"manifest":1,"yaml":1,"source":17,"script":1}},"limitations":["此结果为源码静态检测，不等同于无漏洞证明。","尚未比对 npm 发布包与源码的一致性，也未执行隔离运行和人工复核。","危险能力可能是插件功能所需，需结合用途与证据人工判断。"],"limitationKeys":["static-analysis-only","no-artifact-runtime-human-review","capability-needs-context"],"review":{"model":"sonnet","reviewedAt":"2026-08-22T08:20:56.136Z","summary":null,"intentMatch":null,"findingsReviewed":3,"findingsCandidates":3,"fromCache":3,"usage":null}},"timeline":[{"scannedAt":"2026-08-22T08:20:56.136Z","commit":"e9a8458cb65c0a863ba5c86bf4ad272b1e0e3162","policyVersion":"HT-DSH-0.2.2","verdict":"review","status":"static-complete"},{"scannedAt":"2026-08-21T11:20:07.082Z","commit":"e9a8458cb65c0a863ba5c86bf4ad272b1e0e3162","policyVersion":"HT-DSH-0.2.1","verdict":"review","status":"static-complete"},{"scannedAt":"2026-08-21T10:47:58.140Z","commit":"e9a8458cb65c0a863ba5c86bf4ad272b1e0e3162","policyVersion":"HT-DSH-0.2.0","verdict":"review","status":"static-complete"}],"events":[{"kind":"policy-change","from":"HT-DSH-0.2.1","to":"HT-DSH-0.2.2","commit":"e9a8458cb65c0a863ba5c86bf4ad272b1e0e3162","policyVersion":"HT-DSH-0.2.2","at":"2026-08-22T08:20:56.136Z"},{"kind":"policy-change","from":"HT-DSH-0.2.0","to":"HT-DSH-0.2.1","commit":"e9a8458cb65c0a863ba5c86bf4ad272b1e0e3162","policyVersion":"HT-DSH-0.2.1","at":"2026-08-21T11:20:07.082Z"},{"kind":"first-scan","from":null,"to":"review","commit":"e9a8458cb65c0a863ba5c86bf4ad272b1e0e3162","policyVersion":"HT-DSH-0.2.0","at":"2026-08-21T10:47:58.140Z"}]}