用途:在不修改应用文件的前提下,对本地项目依赖进行已知 CVE 评估,结果写入指定 JSON 路径。输入包括 workspace-path(项目根目录绝对路径)、output-path(评估目录提供的 JSON 结果路径)、scan-scope(direct 默认或 all)。
主要能力:先识别生态——Maven/Gradle 对应 maven,.sln/.slnx 或项目文件对应 nuget,package.json 对应 npm;若都不匹配则写入 [] 并停止。随后收集依赖:Maven 运行 ./mvnw dependency:list -DoutputAbsoluteArtifactId=true(direct 加 -DexcludeTransitive=true),Gradle 运行 ./gradlew dependencies --configuration runtimeClasspath,NuGet 运行 dotnet list package --format json(all 加 --include-transitive),npm 运行 npm list --json(direct 加 --depth=0),并各有静态解析回退。坐标格式分别为 groupId:artifactId:version、PackageName@version、package-name@version。
查询:按最多 30 个坐标分批调用 GitHub Advisories API /advisories?ecosystem=<maven|nuget|npm>&affects=<url-encoded-coordinates>&per_page=100,可用 gh api,否则用带 GITHUB_TOKEN 的 REST API,禁止用通用网页搜索下结论。结果规范化:忽略撤回公告,优先 cve_id 否则 ghsa_id,去重,严重度映射 critical/high→mandatory、medium→optional、low/unknown→potential,同一公告的受影响依赖合并为一条,包含公告 URL、受影响范围、首个修复版本和清单证据。
输出:完整扫描写扁平 JSON 数组,仅当所有查询成功且无漏洞时写 [];任一批次失败则写 status: partial 的包装对象,不能静默当作干净扫描。输出用临时文件加原子重命名只写一次,仅向父评估返回输出路径和简要计数。限制:不修改清单或锁文件,不调用评估或 CVE MCP 工具,失败批次需记录并继续其余批次。