3.4 KiB
3.4 KiB
项目代码审计报告(2026-03-04)
审计范围:后端核心链路、前端鉴权调用链、启动与脚本安全边界。
审计方式:静态只读审计(未修改业务代码)。
1. 高危问题
1.1 ENVI 主流程成功后不返回结果,导致下游按 dict 使用时崩溃
- 证据:
backend/app/services/envi_service.py:1568backend/app/services/envi_service.py:1630backend/app/services/envi_runner_cli.py:44backend/app/services/envi_runner_cli.py:51backend/app/services/job_handlers.py:1020backend/app/services/job_handlers.py:1031
- 影响:任务可能在实际执行后仍被标记失败或抛异常。
1.2 只读用户可通过 GET 触发写操作和高开销构建,绕过读写分离意图
- 证据:
backend/app/routers/radar.py:619backend/app/routers/radar.py:365backend/app/routers/radar.py:346backend/app/routers/dinsar.py:214backend/app/routers/dinsar.py:146backend/app/routers/dependencies.py:196backend/app/routers/dependencies.py:315
- 影响:读账号可诱发缓存重建/数据库写入,存在资源滥用风险。
1.3 AOI token 内存存储无容量上限,且 token 可续期
- 证据:
backend/app/routers/dependencies.py:131backend/app/routers/dependencies.py:825backend/app/routers/dependencies.py:850backend/app/routers/dependencies.py:59backend/app/routers/radar.py:439backend/app/routers/radar.py:509
- 影响:认证后低权限账号可通过频繁检索制造进程内存膨胀(DoS 面)。
2. 中危问题
2.1 extract_disp_results 失败计数重复累加
- 证据:
backend/app/services/envi_service.py:1717backend/app/services/envi_service.py:1726backend/app/services/envi_service.py:1729
- 影响:统计报表和告警判断失真。
2.2 AOI 文件解析异常未统一转为 4xx,用户输入可触发 500
- 证据:
backend/app/routers/dependencies.py:792backend/app/routers/dependencies.py:800
- 影响:可用性下降,错误语义不一致。
2.3 路径归属判断使用 startswith,存在前缀误匹配
- 证据:
backend/app/services/data_service.py:530
- 影响:可能将不属于监控根目录的路径误判为合法。
2.4 解包安全校验仅检查 member.name,仍使用 extractall
- 证据:
scripts/unpack_archives.py:98scripts/unpack_archives.py:107scripts/unpack_archives.py:181
- 影响:若归档文件不可信,仍可能存在目录逃逸/覆盖风险(尤其符号链接/硬链接场景)。
3. 低危问题
3.1 启动脚本写 nginx.conf 未显式编码
- 证据:
scripts/start_app.ps1:388
- 影响:在 Windows PowerShell 5 环境可能写出 UTF-16,导致 Nginx 配置解析异常。
4. 已复核并排除
4.1 task_service.create_task 的 task_id 未定义问题为误报
- 证据:
backend/app/services/task_service.py:153
- 结论:
task_id已正常赋值。
5. 假设与待确认
- 解包问题是否上调为“高危”,取决于归档输入是否可被外部/低信任来源控制。
- “只读账号触发缓存构建”是否视为权限缺陷,取决于产品策略是否允许此行为。
6. 说明
- 本报告对应一次只读审计,不包含代码修复提交。
- 可在确认后按优先级先修复:1.1 / 1.2 / 1.3。