chore: initialize insar management system v2
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
# 项目代码审计报告(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。
|
||||
|
||||
Reference in New Issue
Block a user