方法与策略 · HT-DSH-0.2.2

先有证据,再谈信任

Harness Trust 评估的是一个固定 commit 下的插件源码快照,不对插件名称、默认分支或未来版本作永久背书。每份报告绑定 Git commit、内容 SHA-256、策略版本与扫描时间;我们发布的是可核对的检测证据,不是安全认证。

为什么 DSH 插件需要专门的检测

DSH 的 bundle 以 Cordis 配置层进入宿主进程:Host 插件可以访问文件、网络、环境变量、凭据、会话、工具注册和 Agent 控制链;Client 插件还会在浏览器中执行。cordis.patch.yml 可以按 id 覆盖 dsh-base 的任何一行——包括 sandbox、approval、credentials。从 GitHub 源码安装时,prepare 脚本在 allowBuilds 授权下于用户机器、沙箱之外执行。模型工具的 sandbox 与 approval 因此不能被当作第三方插件代码的隔离边界。

六层证据,一个判定

L0

来源身份

固定 commit 与内容 SHA-256;用 npm registry 元数据核对包的 repository 字段是否指回同一仓库、包名是否一致、是否有 provenance 证明、Release tarball 是否托管在同一仓库。只用元数据,不下载发布包。

HT-IDENTITY-001…004
L1

供应链与已知漏洞

安装期生命周期脚本、源码安装的 prepare 构建、未固定的 Git/latest 依赖;有锁文件时解析生产依赖闭包并批量查询 OSV.dev,开发依赖及其传递链不计入。

HT-INSTALL-001/002 · HT-SUPPLY-001 · HT-VULN-001
L2

静态分析

远程脚本直连 Shell、动态代码执行、混淆与载荷隐藏、浏览器注入点与第三方脚本、硬编码凭据(带熵与占位符检测)、同一模块同时接触凭据与网络。每条命中带路径分类(源码 / 测试示例文档 / i18n / 配置)与置信度。

HT-EXEC · HT-RUNTIME · HT-OBFUSCATION · HT-CLIENT · HT-SECRET · HT-DATA
L2.5

模型辅助研判

对置信度 ≥ 中的高/严重命中,把 ±40 行上下文、bundle patch 与 package.json 交给模型(sonnet),在“已确认 / 占位示例 / 功能所需 / 已清洗 / 未能排除”中选一个并给出理由。模型只能降低置信度或降一级严重度,不能抬升严重度,也不能单独产生 PASS;源码以不可信数据块传入,模型无工具、无会话、强制结构化输出。

结果按 finding 哈希缓存;同一代码不重复研判
L3

DSH 权限语义

解析 bundle 的 cordis.patch.yml:插入了哪些行、按 id 覆盖或关闭了 dsh-base 的哪些行、!!js 表达式做了什么。安全关键 seam(sandbox、sandbox-policy、bash/pwsh-sandbox、approval、permission、credentials、subprocess、shell-env、fs-observation-policy)被覆盖记为高;敏感 seam(system-prompt、agent、llm、tool-*、session-*、settings)记为中。结果以“权限清单”形式展示。

HT-PERMISSION-001/002 · HT-CONFIG-001
L4

隔离动态探针

在无网络、只读、非 root、去 capability 的容器里安装并加载插件,注入假凭据金丝雀,记录文件、子进程与出站尝试。按需对重点插件运行;未运行时报告显示 not-run,绝不显示为“动态检测通过”。

当前状态:未对任何报告运行
L5

人工复核与申诉

高/严重发现进入复核队列;作者与用户可对任一发现提出申诉,我们在 72 小时内复核并公开处理记录。确认的恶意行为先通知作者与 awesome-dsh-plugin 维护者,再公开。

覆盖字段 humanReview: confirmed | disputed | not-run

判定规则

只有置信度 ≥ 中的发现进入判定(“有效发现”);低置信度命中全部保留在详情页,但不计入结论。判定由最高严重度决定,分数不能抵消阻断项。

对外状态内部判定条件安装命令
高风险BLOCKED / REVIEW≥ 1 项有效严重或高等级发现不提供
存在风险CAUTION≥ 1 项有效中等级发现,无高/严重提供,并提示先读证据
未发现问题PASS当前策略覆盖范围内没有中等级以上有效发现提供
未知UNKNOWN源码获取或扫描失败,或尚未扫描不提供

风险分数(Critical −35、High −16、Medium −5、Low −1,按去重规则计)只用于同一策略版本内排序。

规则表 · 19 条

规则默认严重度说明
HT-IDENTITY-001L0 · 来源身份npm 包指向其他仓库
HT-IDENTITY-002L0 · 来源身份npm 身份无法与仓库对应
HT-IDENTITY-003L0 · 来源身份上游标注的 npm 包不存在
HT-IDENTITY-004L0 · 来源身份tarball 未托管在仓库 Release
HT-INSTALL-001L1 · 供应链安装期生命周期脚本
HT-INSTALL-002L1 · 供应链Git 安装期 prepare 构建
HT-SUPPLY-001L1 · 供应链未固定依赖引用
HT-VULN-001L1 · 已知漏洞依赖已知漏洞(OSV)
HT-EXEC-001L2 · 静态分析直接创建宿主子进程
HT-EXEC-002严重L2 · 静态分析远程内容直连 Shell
HT-RUNTIME-001L2 · 静态分析动态代码执行
HT-OBFUSCATION-001L2 · 静态分析混淆或载荷隐藏
HT-CLIENT-001L2 · 静态分析危险 HTML 注入点
HT-CLIENT-002L2 · 静态分析第三方浏览器脚本
HT-SECRET-001严重L2 · 静态分析疑似硬编码凭据
HT-DATA-001L2 · 静态分析凭据与外部网络组合
HT-CONFIG-001L3 · DSH 权限语义Cordis !!js 表达式
HT-PERMISSION-001L3 · DSH 权限语义覆盖安全关键宿主行
HT-PERMISSION-002L3 · DSH 权限语义覆盖敏感宿主行

每条规则都有 adjust 逻辑:同一个命中出现在测试、示例、文档、i18n 文案里,或被识别为占位符、展示给用户的提示字符串、已清洗的注入点时,置信度会降级;出现在安装脚本、子进程调用附近或伴随解码/执行模式时,置信度会升级。

置信度

数据源与覆盖范围

收录范围来自社区维护的 DSH 插件精选索引(当前 1,837 条),我们不自行收录、不排名、不评判插件质量。上游的 Star、npm 周下载、收录日期只用于发现与排序。身份核对使用 npm registry;已知漏洞使用 OSV.dev。

每日对 HEAD 有变化的仓库增量重扫;策略升版时全量重扫。状态变化(例如 PASS → REVIEW)会记录在插件时间线与全站变化页。

已知限制

申诉与纠错

任何发现都可以申诉:在插件详情页点击“提交申诉”,或在 GitHub 上开 issue,注明插件、commit 与 finding 哈希。我们在 72 小时内复核,并把处理结果写入报告的 humanReview 字段。

JSON API 与徽章 →