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

90 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 项目代码审计报告(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_task` 的 `task_id` 未定义问题为误报
- 证据:
- `backend/app/services/task_service.py:153`
- 结论:`task_id` 已正常赋值。
## 5. 假设与待确认
1. 解包问题是否上调为“高危”,取决于归档输入是否可被外部/低信任来源控制。
2. “只读账号触发缓存构建”是否视为权限缺陷,取决于产品策略是否允许此行为。
## 6. 说明
- 本报告对应一次只读审计,不包含代码修复提交。
- 可在确认后按优先级先修复:1.1 / 1.2 / 1.3。