Files
insar-management-system-v2/docs/archive/SECURITY_AUDIT_2026-03-04.md
T

3.4 KiB

项目代码审计报告(2026-03-04)

审计范围:后端核心链路、前端鉴权调用链、启动与脚本安全边界。
审计方式:静态只读审计(未修改业务代码)。

1. 高危问题

1.1 ENVI 主流程成功后不返回结果,导致下游按 dict 使用时崩溃

  • 证据:
    • backend/app/services/envi_service.py:1568
    • backend/app/services/envi_service.py:1630
    • backend/app/services/envi_runner_cli.py:44
    • backend/app/services/envi_runner_cli.py:51
    • backend/app/services/job_handlers.py:1020
    • backend/app/services/job_handlers.py:1031
  • 影响:任务可能在实际执行后仍被标记失败或抛异常。

1.2 只读用户可通过 GET 触发写操作和高开销构建,绕过读写分离意图

  • 证据:
    • backend/app/routers/radar.py:619
    • backend/app/routers/radar.py:365
    • backend/app/routers/radar.py:346
    • backend/app/routers/dinsar.py:214
    • backend/app/routers/dinsar.py:146
    • backend/app/routers/dependencies.py:196
    • backend/app/routers/dependencies.py:315
  • 影响:读账号可诱发缓存重建/数据库写入,存在资源滥用风险。

1.3 AOI token 内存存储无容量上限,且 token 可续期

  • 证据:
    • backend/app/routers/dependencies.py:131
    • backend/app/routers/dependencies.py:825
    • backend/app/routers/dependencies.py:850
    • backend/app/routers/dependencies.py:59
    • backend/app/routers/radar.py:439
    • backend/app/routers/radar.py:509
  • 影响:认证后低权限账号可通过频繁检索制造进程内存膨胀(DoS 面)。

2. 中危问题

2.1 extract_disp_results 失败计数重复累加

  • 证据:
    • backend/app/services/envi_service.py:1717
    • backend/app/services/envi_service.py:1726
    • backend/app/services/envi_service.py:1729
  • 影响:统计报表和告警判断失真。

2.2 AOI 文件解析异常未统一转为 4xx,用户输入可触发 500

  • 证据:
    • backend/app/routers/dependencies.py:792
    • backend/app/routers/dependencies.py:800
  • 影响:可用性下降,错误语义不一致。

2.3 路径归属判断使用 startswith,存在前缀误匹配

  • 证据:
    • backend/app/services/data_service.py:530
  • 影响:可能将不属于监控根目录的路径误判为合法。

2.4 解包安全校验仅检查 member.name,仍使用 extractall

  • 证据:
    • scripts/unpack_archives.py:98
    • scripts/unpack_archives.py:107
    • scripts/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_tasktask_id 未定义问题为误报

  • 证据:
    • backend/app/services/task_service.py:153
  • 结论:task_id 已正常赋值。

5. 假设与待确认

  1. 解包问题是否上调为“高危”,取决于归档输入是否可被外部/低信任来源控制。
  2. “只读账号触发缓存构建”是否视为权限缺陷,取决于产品策略是否允许此行为。

6. 说明

  • 本报告对应一次只读审计,不包含代码修复提交。
  • 可在确认后按优先级先修复:1.1 / 1.2 / 1.3。