# 依赖安全扫描报告(dependency-security-scanner) - **项目**:BakNRet(Windows 备份 / 恢复工具,PowerShell) - **扫描时间**:2026-09-28 - **扫描范围**:仓库根目录及全部子目录(排除 `.git`) - **工具**:`npm audit` / `pip-audit` / `govulncheck` 等均**不适用**(见下) ## 1. 项目概况 | 项目 | 结论 | | --- | --- | | 语言 | PowerShell(`.ps1` / `.psm1` / `.psd1`) | | 依赖管理文件 | **不存在** —— 全仓无 `package.json`、`package-lock.json`、`requirements.txt`、`go.mod`、`pom.xml`、`Cargo.toml` 等 | | 运行时依赖 | **0 个模块**。运行备份 / 恢复只需要 PowerShell 5.1 或 7.x + 7-Zip | | 开发期依赖 | Pester 5.9.1、PSScriptAnalyzer 1.25.0 —— 装在 `.tools/`,已 gitignore,**不随发布产物分发** | | 外部可执行文件 | `7z.exe`(7-Zip 26.03,经 scoop 安装) | > [!NOTE] > > 依赖扫描技能面向「有包管理器的项目」。本项目**没有任何包管理器依赖**,因此 > `npm audit` / `safety` / `govulncheck` 一类工具无对象可扫。下面改为对本项目**真实的供应链面** > 逐项核对,而不是输出一份空报告。 ## 2. 供应链面核对 | 组件 | 来源 | 版本 | 是否随分发 | 风险 | | --- | --- | --- | --- | --- | | PowerShell 引擎 | 操作系统 / Microsoft | 5.1.26100.9502、7.7.0-preview.5 | 否(宿主环境) | 由宿主维护;预览版仅供本机验收使用 | | 7-Zip | scoop(`C:\Programs\Scoop\apps\7zip\26.03`) | 26.03 | 否(用户自备) | 归档/解压的执行者,**必须由用户保持更新** | | Pester | 仓库内 `.tools/modules/Pester/5.9.1` | 5.9.1 | 否(gitignore) | 仅测试期使用,不接触用户数据 | | PSScriptAnalyzer | 仓库内 `.tools/modules/PSScriptAnalyzer/1.25.0` | 1.25.0 | 否(gitignore) | 仅静态分析使用 | | 其余第三方 | 无 | — | — | — | **已知 CVE**:无可报。本项目的依赖面里没有任何「被本项目固定版本」的第三方库 (Pester 与 PSScriptAnalyzer 是测试工具且不进分发,7-Zip 与 PowerShell 由用户环境提供)。 若要追查这两个工具的 CVE,应查上游公告,而不是本仓库。 ## 3. 与安全相关的项目事实(实跑核对) | 检查项 | 结果 | | --- | --- | | 仓库是否跟踪任何密钥文件 | ✅ 否(`git ls-files` 中无 `*.key` / `*.pfx`) | | `baknret.key` 是否被 gitignore | ✅ 是(`.gitignore:18: *.key`) | | 工作区是否存在口令文件 `baknret.key` | ⚠️ **是** —— 见风险 R-2 | | 口令是否可能落进日志 | ✅ 已处理:打印前把 `-p` 参数换成占位符(`tests/BakNRet.Tests.ps1` 有专门断言) | | 日志中是否出现明文口令 | ✅ 无 | | `.tools/` 是否可能进分发产物 | ✅ 否(已 gitignore,且构建脚本只读 `BakNRet/` 与 `tools/`) | ## 4. 风险清单 | ID | 严重程度 | 风险 | 证据 | 建议 | | --- | --- | --- | --- | --- | | R-1 | **一般** | 仓库没有 `LICENSE` 文件,许可证状态未声明 | 根目录无 `LICENSE*` | 补一份许可证(见 `license_check_report`) | | R-2 | **一般** | 工作区存在口令文件 `baknret.key`(未被跟踪,但确实在仓库目录里) | `Test-Path baknret.key` = True | 本项目自己的 CHANGELOG 已把「口令文件的出厂默认值指向仓库内」定为待修问题,`BackupConfig.psd1` 的注释也推荐放到仓库外。建议移到 `%USERPROFILE%\.baknret.key` 并用 `-KeyFile` 指过去。**本报告不读取、不记录其内容** | | R-3 | **建议** | 7-Zip 版本由用户环境决定,脚本不检查版本 | `Find-BakNRet7zExecutable` 只找路径 | 可选:在启动时打印 `7z` 版本,便于排障 | | R-4 | **建议** | 口令经命令行传给 7z,本机进程列表可见 | 上游限制,README 已用 CAUTION 声明 | 无技术解法,保持文档披露即可 | **致命 / 严重漏洞:0 个。** 流水线可继续。 ## 5. 结论 未发现已知安全漏洞。本项目**零运行时依赖**,是当前最重要的一条供应链优势; 唯一两条「一般」级风险都属于**卫生问题**(缺许可证、口令文件放在仓库目录里), 不影响流水线继续执行。