安全审计

每个插件都会自动做静态规则扫描,检查代码、依赖和权限申请;静态判定达到风险的插件还会进入模型驱动的动态安全审计。两层合起来是规模化的第一道风险防线,不是人工审核。审计结果直接内置在每条收录记录中,而不是附加的额外信息;动态审计有结论时,站内风险档(徽章、列表与全库统计)就按该结论定——可能上调、也可能下调;没有结论时才用静态扫描档(vet 主判 + dsh 兜底)。

最新
扫描报告

28,952 个插件已扫描 · 22 个严重风险

查看完整扫描结果 →
2026-11-12
每日日报

新增 193 · 严重 0

查看当日详情 →
安全周报

最新:2026-W46(2026-11-12) · 追踪生态风险趋势

浏览全部周报 →
风险等级与标准

四级风险定义 · 我们扫描什么 · 如何判断

查看评分标准 ↓
01 / SCOPE

扫描什么

Dependency vulnerabilities

直接与传递依赖中已知的 CVE,来自公开漏洞库。

Suspicious permissions

超出插件声明范围的请求——fs.write、network.external、env 访问。

Hardcoded secrets

提交到仓库中的 API 密钥、令牌或凭据。

供应链风险

未锁定版本的依赖、可疑的安装脚本或 post-install 钩子。

02 / RISK LEVELS

风险等级

低风险无已知漏洞或可疑发现。
中风险存在中等或警告级发现——安装前请查看报告。
高风险存在高危形态的发现(动态执行、shell 调用、安装脚本等),但没有阻断级发现——安装前请逐条核对证据。
严重阻断级严重发现或密钥泄露——请勿安装。
03 / DYNAMIC SECURITY AUDIT

动态安全审计

静态规则擅长识别形态,但判断不了上下文——一段代码在运行时到底有没有被加载执行、名单是防守还是进攻。动态安全审计补的就是这一层:对插件源码做有界采集,剔除密钥文件并做内联脱敏后,把源码快照交给模型做上下文审计。它不执行插件代码,只读脱敏后的源码,这一点与静态扫描一致。

合并口径:动态结论为准

站内档位这样定:有动态结论时以动态结论为准(它可能上调、也可能下调),只有没有动态结论时才用 静态扫描档。动态结论是真的落到档位上的,不只是审计记录里的一个字段:档位按本次审计的发现计数取:有 critical 发现即 critical(徽章红色,列表筛选与全库统计同步跟随),只有 high 发现为 high,只有 medium(警告级)发现为 medium,都没有则是 low。方向不只有一个——可升可降:模型判得比静态更宽时(例如把静态的误报确认为误报),站内档位就降到动态这一档,「取更严者」的旧口径不再适用。豁免仍然只有一条人工路径——三筛后手写进 security-scan-suppressions.json;动态审计脚本从不写入豁免。这里有一处口径限定:不在扫描口径的条目(scopeExcluded,例如尚未通过 L4 安装检测、或已摘掉 topic)按既有政策处理——动态结论照旧记进它的档位,但它不参与全库风险统计,对外也不发风险徽章值(徽章读作待定 unknown)。无论是否在口径内,权威档位都以插件详情页与单插件 JSON 为准。

模型也会判错,所以留了一条人工纠错路径:复核后把该插件记进 src/data/dynamic-escalation-review.json 的 withdrawn,这次动态结论即被撤回、站内档位回落到静态扫描档,即 vet 主判 + dsh 兜底(静态判定本身不变——撤回的是动态结论,不是豁免静态发现)。当前生效中的动态改档 2,340 条,已被人工撤回 1 条;该表由人工维护,动态审计脚本永不写入。撤回即时生效——不必等流水线重算:复核条目一落盘,档位就回落,插件详情页与单插件 JSON 在下次构建时即显示回退后的档位,徽章索引在下次索引刷新时跟上。

2,922
进入动态审计队列的插件
2,341
完成模型审计、有结论
581
采集或调用失败、无结论
2,340
生效中的动态改档(档位已按动态结论定)

覆盖范围要如实说:队列默认只收录站内静态风险档 ≥ 中(中/高/严重)的插件(2026-10-24 起提高入口:静态 低 的条目不再送审),所以动态审计是静态扫描的子集,不是全库——没有静态风险的插件根本不进队列,「无结论」也不是「通过」。截至目前,有结论的审计里有 321 个的档位严于静态判定、794 个低于静态判定——两个方向都会真的落到站上展示的档位:动态结论说更宽,档位就降下来,这不是违规,而是动态结论权威的直接结果。

结果在哪里看:每条插件详情页的安全审查卡会同时给出静态判定、动态判定与合并判定;数据口径与字段说明见 /zh/data/security/。动态审计报告本身是管线内部产物,站点不提供公开路由。

免责同样适用:动态审计仍是自动化输出(模型生成),不构成安全保证,也不是人工审核。请把它与验证等级、插件健康度一起作为安装判断的信号。

04 / STATUS

✓ 静态扫描 + 动态安全审计已上线

28,952 个插件已完成静态启发式扫描(代码执行、硬编码密钥、外传端点、破坏性命令等),404 个待扫描。自动化的静态分析——规模化的第一道风险防线,不是人工审核。

在此之上,动态安全审计对静态判定达到风险的插件补做模型上下文审计,确认静态看不清的运行时行为与意图:有动态结论时档位以它为准(可升可降,档位按审计发现计数取:critical → 严重、high → 高、medium → 中、否则低),没有结论时才用静态扫描档;豁免仍只走人工三筛。两层都是自动化信号:把结果当作第一道筛选,并结合验证等级与插件健康度做安装判断——每多看一眼,就少一分意外。

05 / FAQ

dsh.so 安全扫描检查什么?

扫描会检查仓库代码与 manifest 元数据,覆盖硬编码密钥、可疑权限申请、破坏性命令、外传端点、未锁定依赖、安装脚本和供应链风险信号。每个插件的扫描结果会单独保存,并在日报与周报中汇总。

扫描和人工审计是什么关系?

扫描是静态分析:检查代码模式、依赖清单和权限申请,不在任何人的机器上执行插件代码——这让它能零风险地覆盖每一个收录插件,成为规模化的第一道防线,快速筛出硬编码密钥、危险权限、供应链隐患这类已知风险。自动化也有边界:复杂上下文可能漏判、偶有误报。所以低风险评级是重要的筛选信号,建议再结合验证等级(L4/L5 实测)、插件健康度一起判断——多一道信号,多一分把握。

静态扫描和动态安全审计有什么区别?

静态扫描用确定性规则检查代码、清单和权限申请;动态安全审计由模型驱动,只对站内静态风险档 ≥ 中(中/高/严重)的插件运行,是子集而非第二轮全量扫描。它读的是脱敏后的源码快照,判断上下文——真正跑起来的是什么、名单是防守还是进攻。两层都不执行插件代码。合并口径是动态结论为准:有结论时档位就取动态那一条,它可能比静态更严、也可能更宽。档位按本次审计的发现计数取:有 critical 发现即 critical(徽章红色,列表筛选与统计同步),只有 high 为 high,只有 medium 为 medium,都没有为 low;模型判得比静态更宽时站内档位就降下来,而不是被忽略;只有没有动态结论时,才用静态扫描档(vet 主判 + dsh 兜底),也谈不上豁免。豁免仍由人工三筛复核后手写,审计本身从不写豁免;人工复核认为这次结论判错了(无论上调还是下调),可在复核表记 withdrawn 撤回——档位回落到静态扫描档,静态判定本身不变。

来源:dsh.so 安全报告与公开仓库元数据 · 由 dsh.so 维护 · 最近更新

这页有帮助吗?