核心要点统一数据源与格式,校验 `CVE` 标识与 `CVSS` 范围有效性。阈值策略:达到或超过阈值即阻断;支持例外清单与到期时间。审计记录包含依赖、版本、CVE、评分、策略判定与审批信息。参数与规则CVE格式:`CVE-YYYY-NNNN`;年份范围与编号长度校验。CVSS范围:`0.0` 至 `10.0`;保留一位小数或两位小数。阈值示例:阻断 `>= 7.0`;警告 `5.0–6.9`;通过 `< 5.0`。实现示例type Advisory = { package: string; version: string; cve: string; cvss: number; url?: string; expiresAt?: number } function validCve(id: string): boolean { const m = /^CVE-(\d{4})-(\d{4,})$/.exec(id) if (!m) return false const year = parseInt(m[1], 10) return year >= 1999 && year <= new Date().getFullYear() } function validCvss(score: number): boolean { return score >= 0 && score <= 10 && Number.isFinite(score) } type Policy = { blockThreshold: number; warnThreshold: number; now: number } function inException(a: Advisory, exceptions: Map<string, number>, now: number): boolean { const key = `${a.package}@${a.version}:${a.cve}` const until = exceptions.get(key) return !!until && until >= now } function decide(a: Advisory, p: Policy, exceptions: Map<string, number>): 'block' | 'warn' | 'pass' { if (!validCve(a.cve) || !validCvss(a.cvss)) return 'block' if (inException(a, exceptions, p.now)) return 'pass' if (a.cvss >= p.blockThreshold) return 'block' if (a.cvss >= p.warnThreshold) return 'warn' return 'pass' } function evaluate(advisories: Advisory[], policy: Policy, exceptions: Map<string, number>): { blocked: Advisory[]; warned: Advisory[]; passed: Advisory[] } { const blocked: Advisory[] = [] const warned: Advisory[] = [] const passed: Advisory[] = [] for (const a of advisories) { const d = decide(a, policy, exceptions) if (d === 'block') blocked.push(a) else if (d === 'warn') warned.push(a) else passed.push(a) } return { blocked, warned, passed } } 审计与CI门禁构建前解析安全报告并执行策略;阻断项直接失败并输出详情。审计记录包含依赖、版本、CVE、CVSS、策略结果与例外到期时间。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部