SuperAPI AI 工具集

dependency-scanning

安全与审计

查看项目

更新于 10-16 10:14

技能介绍

本技能用于分析项目依赖中的已知漏洞、许可证风险与供应链完整性问题,覆盖直接依赖与传递依赖,输出对齐 SLSA v1.0 构建完整性等级,并兼容 CycloneDX 与 SPDX 两种 SBOM 格式。

用途与触发条件 当共享或引用以下包清单/锁文件时自动触发:package.json、package-lock.json、yarn.lock、pnpm-lock.yaml、requirements.txt、Pipfile.lock、poetry.lock、go.mod、go.sum、pom.xml、build.gradle、Cargo.toml、Cargo.lock、Gemfile.lock、composer.lock。用户询问依赖安全、漏洞扫描、SBOM 生成或供应链风险时同样适用;CI/CD 流水线配置引用依赖审计步骤时也会触发。

SBOM 生成指导 SBOM 是软件工件中所有组件的机器可读清单,包含直接与传递依赖、版本标识、供应商信息和关系数据。推荐格式为 CycloneDX(面向安全分析、VEX 集成、漏洞跟踪)与 SPDX(面向许可证合规、来源追溯、法规要求如 EO 14028)。按生态提供生成工具与命令,例如 Node.js 使用 @cyclonedx/cyclonedx-npm,Python 使用 cyclonedx-bom,Go 使用 cyclonedx-gomod,Java/Maven 使用 cyclonedx-maven-plugin,Rust 使用 cargo-cyclonedx,多生态使用 syft 或 trivy。SLSA 对齐要求:L1 存在 SBOM 并记录构建过程,L2 由托管构建服务生成并提供签名来源,L3 在加固构建平台生成且来源不可篡改;建议附上 in-toto 格式来源证明。

传递依赖风险 直接依赖显式声明,传递依赖间接引入且层级较深,典型 Node.js 项目中传递依赖数量可达直接依赖的 10 倍以上。风险模式包括:深层依赖链(如 event-stream 事件)、幻影依赖、版本范围漂移、被弃用的传递包。缓解措施:提交锁文件、使用 npm audit --omit=dev、pip-audit、govulncheck、cargo audit 扫描完整已解析依赖树,使用 overrides/resolutions、constraints 文件、go.mod replace 固定关键传递依赖,采用前评估依赖树深度。

漏洞分级:EPSS + CVSS + CISA KEV 采用三信号分级模型:CVSS 衡量技术严重度(Critical 9.0-10.0、High 7.0-8.9 应立即审查);EPSS 衡量未来 30 天被利用概率(大于 0.1 视为现实风险升高);CISA KEV 表示确认的在野利用,命中即需按 CISA 规定时限修复。决策矩阵示例:Critical/High 且 EPSS>0.1 且列入 KEV 为 P0 立即修复(24-48 小时内);Critical/High 且 EPSS>0.1 未列入 KEV 为 P1 紧急(当前迭代内修复);Critical/High 且 EPSS<=0.1 为 P2 计划修复;Medium 且 EPSS>0.1 且列入 KEV 为 P1;Medium 且 EPSS<=0.1 为 P3 待办;Low 为 P4 监控。富化流程:从扫描输出提取 CVE,查询 EPSS API、比对 CISA KEV 目录、按矩阵赋优先级、逐条记录 CVE 编号、受影响包与版本、CVSS、EPSS、KEV 状态及建议修复版本。

许可证合规 风险分级:高著佐权(GPL-2.0、GPL-3.0、AGPL-3.0,AGPL-3.0 延伸至网络使用);弱著佐权(LGPL-2.1、LGPL-3.0、MPL-2.0、EPL-2.0);宽松许可(MIT、Apache-2.0、BSD 系列、ISC);未知或无许可(NOASSERTION,默认版权保护,视为高风险)。合规检查关注:服务端代码中的 AGPL-3.0、静态链接二进制中的 GPL、许可证冲突(如 Apache-2.0 与 GPL-2.0-only 不兼容)、双许可商业包、无许可证依赖。工具包括 licensed、license-checker、pip-licenses、go-licenses、cargo-license。

域名抢注检测 域名抢注(含依赖混淆、组合抢注)是发布与流行合法包名称相似的恶意包以诱使误装。常见模式:字符换位、连字符/下划线混淆、作用域/命名空间省略、前后缀添加、组合抢注、命名空间混淆。检测方法:对照官方注册表核验包名、验证发布者、下载量异常、创建时间检查、检查 npm 安装脚本(preinstall/postinstall)。缓解:使用作用域包、配置私有注册表与白名单、申领内部包名或使用 Artifactory/Nexus 路由规则、使用 socket.dev、npm audit signatures 或 sigstore 验证来源。

评估输出模板 报告结构包含:项目、清单路径、日期、依赖总数(直接/传递);漏洞发现表(CVE、包、版本、修复版本、CVSS、EPSS、KEV、优先级);许可证发现表(包、版本、许可证、风险等级、所需行动);供应链风险指标清单(域名抢注、无许可证包、含安装脚本包、超过 2 年未发布包、依赖混淆风险);按优先级排序的修复建议。执行修复前需按 Security Fixer Policy 分类修复路径,包含策略审查门、审查证据与回滚指引。

流程与限制 流程:用 Glob 定位清单与锁文件、读取清单清点直接依赖、读取锁文件映射完整传递依赖树、比对已知 CVE 并按三信号分级、提取许可证并标记著佐权与无许可包、检查域名抢注模式、评估 SLSA 态势、按模板生成报告并给出优先级修复建议。限制:存在盲点,依赖可用代码、配置、日志、文档与用户上下文,证据缺失、仅运行时或超出范围时无法证明控制措施存在或威胁不存在;发现属假说,需结合资产关键性、补偿控制、环境意图与近期授权变更验证;每项发现需文件路径、行号、策略片段、扫描输出、日志、截图、控制记录或可复现步骤等具体证据支撑;机器可读输出需符合 schemas/finding.schema.json,SARIF 输出需映射为 SARIF 2.1.0;遇疑似活跃入侵、暴露密钥、受监管数据暴露、严重可利用漏洞、特权访问滥用或证据不足等情况应立即升级。本技能仅产出分析与建议,不修改代码、不安装包、不更改配置。