{"schemaVersion":2,"dataVersion":"20260822T105549Z-0a0b366f","generatedAt":"2026-08-22T10:55:49.138Z","source":{"id":"howmp-dsh-pentest","slug":"howmp-dsh-pentest","rank":45,"url":"https://github.com/howmp/dsh-pentest","name":"howmp/dsh-pentest","category":"security","description":{"zh":"面向 DeepSeek Harness 的授权渗透模式：以探索链路记录目标、线索、资产与漏洞，并在 Web 中可视化展示。","en":"Authorized pentest mode for DeepSeek Harness — exploration chain, assets and findings with a Web view."},"stars":177,"starsCheckedAt":"2026-08-21","repository":{"owner":"howmp","repo":"dsh-pentest","requestedRef":null,"subpath":""},"npm":null,"downloads":null,"installMode":"github-source","upstreamInstall":"dsh plugin --profile web add github:howmp/dsh-pentest","tarball":null,"added":"2026-08-20","page":"https://awesome-dsh-plugin.com/p/howmp/dsh-pentest/","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":"howmp-dsh-pentest","slug":"howmp-dsh-pentest","policyVersion":"HT-DSH-0.2.2","scannedAt":"2026-08-21T13:16:27.147Z","scanStatus":"static-complete","verdict":"caution","score":85,"commit":"6ec87675cc88b64547bb530274696e5df3b802cc","commitDate":"2026-08-20T13:28:29+08:00","artifactDigest":"sha256:83286984d92a1c384b9a5be31f4e00362f7b1192706c0603b50721dcc721db8f","downloadUrl":"https://github.com/howmp/dsh-pentest/archive/6ec87675cc88b64547bb530274696e5df3b802cc.tar.gz","installMode":"github-source","installCommand":"dsh plugin --profile web add github:howmp/dsh-pentest","manifest":{"found":true,"path":"package.json","parseError":null,"packageName":"@howmp/dsh-pentest","packageVersion":"0.1.0-rc.24","bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-conversation"],"platform":"web"},"lifecycleScripts":{},"peerDependencies":["@deepseek-ai/cordis","@deepseek-ai/dsh-invariants","@deepseek-ai/dsh-storage","@deepseek-ai/dsh-storage-domain","@deepseek-ai/dsh-tools"]},"identity":{"status":"not-published","installMode":"github-source","upstreamNpm":null,"manifestName":"@howmp/dsh-pentest","nameMatch":null,"npm":null,"repositoryMatch":"not-checked","provenance":"not-checked","tarballHost":null},"permissions":{"bundlePatch":"cordis.patch.yml","inserts":[{"id":"ui-pentest","name":"@howmp/dsh-pentest/ui-pentest","path":"cordis.patch.yml","disabled":false},{"id":"storage-sqlite","name":"@howmp/dsh-pentest/storage-sqlite","path":"cordis.patch.yml","disabled":false},{"id":"pentest-preset-root","name":"@howmp/dsh-pentest/preset-root","path":"cordis.patch.yml","disabled":false}],"overrides":[{"id":"storage-domain","tier":"normal","mode":"override","disabled":false,"replacesImplementation":false,"name":null,"keys":["backend","routes"],"path":"cordis.patch.yml"},{"id":"persona","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-persona","keys":["text"],"path":"preset/pentest/agent.cordis.yml"},{"id":"agent-instructions","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-agent-instructions","keys":["maxBytes"],"path":"preset/pentest/agent.cordis.yml"},{"id":"tool-bash","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-tool-bash","keys":[],"path":"preset/pentest/agent.cordis.yml"},{"id":"tool-pwsh","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-tool-pwsh","keys":[],"path":"preset/pentest/agent.cordis.yml"},{"id":"tool-fs","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-tool-fs","keys":[],"path":"preset/pentest/agent.cordis.yml"},{"id":"tool-fs-search","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-tool-fs-search","keys":["sampleOverCapGlobResults"],"path":"preset/pentest/agent.cordis.yml"},{"id":"tool-jobs","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-tool-jobs","keys":[],"path":"preset/pentest/agent.cordis.yml"},{"id":"skill-filesystem","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-skill-filesystem","keys":[],"path":"preset/pentest/agent.cordis.yml"},{"id":"tool-skill","tier":"sensitive","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-tool-skill","keys":[],"path":"preset/pentest/agent.cordis.yml"},{"id":"tool-goal","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-tool-goal","keys":[],"path":"preset/pentest/agent.cordis.yml"},{"id":"planning","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"cordis:group","keys":["0"],"path":"preset/pentest/agent.cordis.yml"},{"id":"compaction","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"cordis:group","keys":["0","1","2"],"path":"preset/pentest/agent.cordis.yml"},{"id":"delegation","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"cordis:group","keys":["0","1","2","3","4","5","6","7","8"],"path":"preset/pentest/agent.cordis.yml"},{"id":"tool-ask-user","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-tool-ask-user","keys":[],"path":"preset/pentest/agent.cordis.yml"},{"id":"tool-todo","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-tool-todo","keys":["allowParallelInProgress"],"path":"preset/pentest/agent.cordis.yml"},{"id":"tool-web","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@deepseek-ai/dsh-tool-web","keys":["fetch","searchTimeoutMs"],"path":"preset/pentest/agent.cordis.yml"},{"id":"pentest","tier":"normal","mode":"override","disabled":false,"replacesImplementation":true,"name":"@howmp/dsh-pentest/pentest","keys":[],"path":"preset/pentest/agent.cordis.yml"}],"jsExpressions":3,"clientPlatform":"web","parseErrors":[]},"capabilities":["agent-control","browser-ui","filesystem","host-bundle","session","subprocess","telemetry"],"outboundHosts":[{"host":"reactflow.dev","count":6},{"host":"react.dev","count":2}],"findings":[{"id":"HT-CONFIG-001","title":"Cordis 配置包含可执行 !!js 表达式","severity":"low","confidence":"high","layer":"dsh-semantics","path":"cordis.patch.yml","pathClass":"cordis","line":25,"evidence":"!!js dshHomePath('storages', 'pentest-sessions.db')","remediation":"!!js 是 DSH 的官方配置机制；只在表达式引入模块、访问进程或网络时需要额外解释。","hash":"ffb1ff3cbd4d7dabc50e914d"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"lib/ui-pentest.client.js","pathClass":"source","line":613,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"b6467a65cce9c177dce7c462"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"lib/ui-pentest.client.js","pathClass":"source","line":617,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"b6467a65cce9c177dce7c462"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"packages/dsh-client-ui-pentest/lib/client.js","pathClass":"source","line":613,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"1818930c6edda50ba635c7e6"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"packages/dsh-client-ui-pentest/lib/client.js","pathClass":"source","line":617,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"1818930c6edda50ba635c7e6"},{"id":"HT-CONFIG-001","title":"Cordis 配置包含可执行 !!js 表达式","severity":"medium","confidence":"high","layer":"dsh-semantics","path":"preset/pentest/agent.cordis.yml","pathClass":"cordis","line":47,"evidence":"!!js process.platform === 'win32'","remediation":"!!js 是 DSH 的官方配置机制；只在表达式引入模块、访问进程或网络时需要额外解释。","note":"表达式访问模块、进程或网络，超出读取注入服务的常规用法","hash":"ce088e34d48eed6a03f4aadd"},{"id":"HT-CONFIG-001","title":"Cordis 配置包含可执行 !!js 表达式","severity":"medium","confidence":"high","layer":"dsh-semantics","path":"preset/pentest/agent.cordis.yml","pathClass":"cordis","line":51,"evidence":"!!js process.platform !== 'win32'","remediation":"!!js 是 DSH 的官方配置机制；只在表达式引入模块、访问进程或网络时需要额外解释。","note":"表达式访问模块、进程或网络，超出读取注入服务的常规用法","hash":"b3f42f4b1ab29bc1fbd07097"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"preset/pentest/agent.cordis.yml","line":30,"evidence":"override: id=agent-instructions name=@deepseek-ai/dsh-agent-instructions config[maxBytes]","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 Agent 指令（agent-instructions）；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"22eb8a8a498c12b0c26fb78f"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"preset/pentest/agent.cordis.yml","line":45,"evidence":"override: id=tool-bash name=@deepseek-ai/dsh-tool-bash","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 Bash 工具（tool-bash）；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"d573303ecd277dc8764ca128"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"preset/pentest/agent.cordis.yml","line":48,"evidence":"override: id=tool-pwsh name=@deepseek-ai/dsh-tool-pwsh","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 tool-pwsh；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"d069ef83c021baa5f25f22b7"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"preset/pentest/agent.cordis.yml","line":57,"evidence":"override: id=tool-fs name=@deepseek-ai/dsh-tool-fs","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 文件工具（tool-fs）；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"789947c4c584fee3f6f42f30"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"preset/pentest/agent.cordis.yml","line":59,"evidence":"override: id=tool-fs-search name=@deepseek-ai/dsh-tool-fs-search config[sampleOverCapGlobResults]","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 tool-fs-search；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"fa94d576e7ee463315054827"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"preset/pentest/agent.cordis.yml","line":74,"evidence":"override: id=tool-jobs name=@deepseek-ai/dsh-tool-jobs","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 tool-jobs；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"b01a0aa8041faa57a0443062"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"preset/pentest/agent.cordis.yml","line":84,"evidence":"override: id=skill-filesystem name=@deepseek-ai/dsh-skill-filesystem","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 skill-filesystem；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"99bbf107055172048714d1f1"},{"id":"HT-PERMISSION-002","title":"覆盖敏感宿主能力","severity":"medium","confidence":"medium","path":"preset/pentest/agent.cordis.yml","line":86,"evidence":"override: id=tool-skill name=@deepseek-ai/dsh-tool-skill","remediation":"安全关键 seam 的替换必须逐项解释、最小化，并接受人工复核；用户安装前应知晓该能力被谁接管。","note":"替换实现 tool-skill；该配置随包分发但未被 dsh.bundle 引用，只有用户手动应用时才生效","layer":"dsh-semantics","pathClass":"cordis","hash":"5805738d1666c886ef117239"}],"counts":{"critical":0,"high":0,"medium":14,"low":1},"rawCounts":{"critical":0,"high":0,"medium":14,"low":1},"vulnerabilities":[],"coverage":{"source":"complete","manifest":"complete","bundleConfig":"complete","dependencies":"lockfile-present","vulnerabilities":"complete","identity":"complete","artifact":"not-compared","llmReview":"not-needed","dynamicRuntime":"not-run","humanReview":"not-run"},"inventory":{"filesScanned":134,"bytesScanned":2755184,"truncated":false,"lockfiles":["package-lock.json"],"pathClasses":{"test-example-docs":14,"markdown":10,"cordis":2,"source":95,"data":6,"manifest":6,"yaml":1}},"limitations":["此结果为源码静态检测，不等同于无漏洞证明。","尚未比对 npm 发布包与源码的一致性，也未执行隔离运行和人工复核。","危险能力可能是插件功能所需，需结合用途与证据人工判断。"],"limitationKeys":["static-analysis-only","no-artifact-runtime-human-review","capability-needs-context"]},"timeline":[{"scannedAt":"2026-08-21T13:16:27.147Z","commit":"6ec87675cc88b64547bb530274696e5df3b802cc","policyVersion":"HT-DSH-0.2.2","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T13:16:09.847Z","commit":"6ec87675cc88b64547bb530274696e5df3b802cc","policyVersion":"HT-DSH-0.2.2","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T11:18:38.389Z","commit":"6ec87675cc88b64547bb530274696e5df3b802cc","policyVersion":"HT-DSH-0.2.1","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T10:46:29.445Z","commit":"6ec87675cc88b64547bb530274696e5df3b802cc","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":"6ec87675cc88b64547bb530274696e5df3b802cc","policyVersion":"HT-DSH-0.2.2","at":"2026-08-21T13:16:09.847Z"},{"kind":"policy-change","from":"HT-DSH-0.2.0","to":"HT-DSH-0.2.1","commit":"6ec87675cc88b64547bb530274696e5df3b802cc","policyVersion":"HT-DSH-0.2.1","at":"2026-08-21T11:18:38.389Z"},{"kind":"first-scan","from":null,"to":"caution","commit":"6ec87675cc88b64547bb530274696e5df3b802cc","policyVersion":"HT-DSH-0.2.0","at":"2026-08-21T10:46:29.445Z"}]}