security: P1 Cookie Secure标志 + P0 Go补丁升级脚本 + 第三轮审计报告
- P1: auth.go 8处Cookie补充Secure:true+SameSite,gosec 84→78 - P0: 新增go-upgrade.sh (check/upgrade/status三模式) - docs: 安全审计报告第十一章 - SAST/CVE/CWE审计结果
This commit is contained in:
@@ -330,4 +330,119 @@ Chain INPUT (policy DROP)
|
||||
|
||||
---
|
||||
|
||||
*本报告基于 2026-06-26 全量审计生成。服务器端问题已同步修复,本地代码库干净。*
|
||||
*本报告基于 2026-06-26 全量审计生成。服务器端问题已同步修复,本地代码库干净。*
|
||||
---
|
||||
|
||||
## 十一、第三轮深度安全审计(2026-06-26 下午)
|
||||
|
||||
### 11.1 扫描工具覆盖
|
||||
|
||||
| 扫描工具 | 扫描范围 | 结果 |
|
||||
|----------|----------|------|
|
||||
| gosec (SAST) | server/ 全部 Go 文件 | 84 问题 |
|
||||
| govulncheck (CVE) | Go 标准库 + 依赖包 | 20 标准库 CVE |
|
||||
| npm audit | apps/web/ 全部依赖 | 0 漏洞 |
|
||||
| ClamAV | 全量源码文件 | 病毒库未安装 |
|
||||
| 多引擎模式扫描 | Go/JS/Python/Shell | 无恶意代码 |
|
||||
|
||||
### 11.2 SAST 静态分析(gosec 0.37.0)
|
||||
|
||||
**扫描范围**:server/ 54 个 Go 文件,共 84 个问题。
|
||||
|
||||
#### HIGH — 14 个
|
||||
|
||||
| 规则 | 位置 | 说明 | 风险评估 |
|
||||
|------|------|------|----------|
|
||||
| G704 SSRF | `ppt.go:254` | `http.Get(workerURL + taskID + "/download")` | 低 — taskID 为后端生成 UUID,无用户可控输入 |
|
||||
| G118 Context | `auth.go:175` | goroutine 使用 context.Background | 低 — 数据库写入不依赖请求上下文 |
|
||||
| G118 Context | `chat.go:142,193` | goroutine 使用 context.Background | 低 — 同上 |
|
||||
| G118 Context | `chat_llm.go:1150,1152,1275,1276,1579` | goroutine 使用 context.Background | 低 — 流式响应写入不依赖请求上下文 |
|
||||
| G118 Context | `knowledge.go:330` | goroutine 使用 context.Background | 低 — 同上 |
|
||||
| G118 Context | `doc_template.go:258` | goroutine 使用 context.Background | 低 — 同上 |
|
||||
| G118 Context | `analysis_template.go:321` | goroutine 使用 context.Background | 低 — 同上 |
|
||||
| G118 Context | `audit.go:51` | goroutine 使用 context.Background | 低 — 审计日志写入不依赖请求上下文 |
|
||||
|
||||
**注**:G118 警告在实际场景中影响有限,因这些 goroutine 均为数据库写入/Redis 发布操作,不依赖请求的 Cancel/Timeout 信号。但作为最佳实践,建议使用 `r.Context()` 传递的 context。
|
||||
|
||||
#### MEDIUM — 8 个
|
||||
|
||||
| 规则 | 位置 | 说明 | 风险评估 |
|
||||
|------|------|------|----------|
|
||||
| G124 Cookie | `auth.go:98,181,189,214,221,404` | Cookie 缺少 Secure 标志 | 中 — HTTPS 下浏览器不会发送 Cookie |
|
||||
| G120 文件解析 | `ppt.go:105` | `ParseMultipartForm(50<<20)` 无显式限制 | 低 — 实际受 WriteTimeout=120s 约束 |
|
||||
| G120 文件解析 | `knowledge.go:245` | `ParseMultipartForm(32<<20)` 无显式限制 | 低 — 同上 |
|
||||
|
||||
**注**:G124 Cookie 缺少 `Secure: true` 标志在生产环境(强制 HTTPS)中风险较低,但严格合规应补全。
|
||||
|
||||
#### LOW — 63 个
|
||||
|
||||
全部为 `G104: Errors unhandled`,分散在 8 个文件中(platform.go 独占 19 个,knowledge.go 9 个,ppt.go 9 个,其余为 response.go、llm/*.go、dify/knowledge.go)。风险极低。
|
||||
|
||||
### 11.3 Go 标准库 CVE 分析(govulncheck)
|
||||
|
||||
**当前版本**:Go 1.25.0,检测到 20 个标准库 CVE。
|
||||
|
||||
#### 需要关注(无补丁版本)
|
||||
|
||||
| CVE | 模块 | 影响 |
|
||||
|-----|------|------|
|
||||
| GO-2026-5039 | net/textproto | 错误信息未转义,可能导致日志注入 |
|
||||
| GO-2026-4918 | encoding/* | 多个 encoding 子模块存在 DoS 风险 |
|
||||
| GO-2026-4870 | path/filepath | 路径解析 DoS |
|
||||
| GO-2026-4601 | net/url | URL 解析 DoS |
|
||||
| GO-2026-4341 | net/url | URL 解析整数溢出 |
|
||||
| GO-2026-4340 | net/url | URL 解析越界读取 |
|
||||
| GO-2026-4337 | crypto/tls | TLS 握手 DoS |
|
||||
| GO-2026-4947 | crypto/x509 | 证书解析 DoS |
|
||||
| GO-2026-4946 | crypto/x509 | 证书解析越界 |
|
||||
| GO-2026-4971 | net | Windows NUL 字节处理 panic(Linux 无影响) |
|
||||
| GO-2025-4175 | regexp | 正则 DoS |
|
||||
| GO-2025-4155 | go/* | 编译时 DoS |
|
||||
| GO-2025-4013 | crypto/x509 | 证书验证 DoS(已修复:v1.25.2) |
|
||||
| GO-2025-4012 | net/http | HTTP/2 请求走私 |
|
||||
| GO-2025-4011 | encoding/asn1 | ASN.1 解析崩溃 |
|
||||
| GO-2025-4010 | net/url | URL 解析越界 |
|
||||
| GO-2025-4009 | encoding/pem | PEM 解码越界 |
|
||||
| GO-2025-4008 | encoding/* | encoding 子模块 DoS |
|
||||
| GO-2025-4007 | crypto/x509 | 证书名称约束二次方复杂度 |
|
||||
|
||||
**修复路径**:升级 Go 到最新补丁版本(需等待 Go 1.25.11+ 发布)。当前 Go 1.25.0 为最新稳定版。
|
||||
|
||||
### 11.4 CWE 缺陷映射(GB/T 30279-2023)
|
||||
|
||||
| CWE 类别 | 检测结果 |
|
||||
|----------|----------|
|
||||
| CWE-78(命令注入) | ✅ 无 — subprocess 调用仅限本地 PPT 脚本 |
|
||||
| CWE-79(XSS) | ✅ 无 — 无 dangerouslySetInnerHTML,用户输入通过 Markdown 渲染 |
|
||||
| CWE-89(SQL 注入) | ✅ 无 — 所有查询使用参数化($1, $2 占位符) |
|
||||
| CWE-90(LDAP 注入) | N/A — 未使用 LDAP |
|
||||
| CWE-22(路径遍历) | ✅ 无 — 文件上传使用 multipart,路径拼接使用 filepath.Base |
|
||||
| CWE-502(反序列化) | ✅ 无 — 无 unsafe 反序列化 |
|
||||
| CWE-287(认证绕过) | ✅ 无 — JWT HttpOnly Cookie + RBAC 中间件 |
|
||||
| CWE-200(敏感信息泄露) | ⚠️ 部分 — 本地 .env 含 API Key,已在 .gitignore |
|
||||
| CWE-918(SSRF) | ✅ 低 — 仅内部服务调用,无外部 URL 拼接 |
|
||||
| CWE-434(文件上传) | ✅ 有防护 — 扩展名白名单 + MIME 验证 + 大小限制 |
|
||||
| CWE-306(认证缺失) | ✅ 有 — JWT Bearer Token + Cookie 双通道 |
|
||||
| CWE-601(重定向) | ✅ 无可疑外部重定向 |
|
||||
| CWE-352(CSRF) | ⚠️ 部分 — CORS AllowCredentials=true,Cookie 已有 SameSite=Lax |
|
||||
| CWE-400(DoS) | ⚠️ 部分 — RateLimit 中间件存在(30 req/min),但非全端点覆盖 |
|
||||
| CWE-295(证书验证) | ✅ 无 — 内部服务调用,外部 LLM API 使用标准 TLS |
|
||||
|
||||
### 11.5 本轮结论
|
||||
|
||||
**安全态势**:良好。本轮扫描未发现高危可利用漏洞。
|
||||
|
||||
**建议优先级**:
|
||||
|
||||
| 优先级 | 建议 | 影响 |
|
||||
|--------|------|------|
|
||||
| P0 | 等待 Go 补丁版发布后升级(目标 v1.25.11+) | 修复 20 个标准库 CVE |
|
||||
| P1 | 补充 Cookie 的 `Secure: true` 标志 | HTTPS 场景下 Cookie 安全加固 |
|
||||
| P2 | 修复 G118 goroutine context(传递 `r.Context()`) | 最佳实践,请求取消时正确终止后台任务 |
|
||||
| P2 | 统一 RateLimit 覆盖所有写端点 | 防止 DoS |
|
||||
| P3 | 处理 G104 未处理错误(63 个) | 代码健壮性改善 |
|
||||
| P3 | 关闭 BT-Panel 8888 端口 | 减少攻击面 |
|
||||
|
||||
---
|
||||
|
||||
*本报告基于 2026-06-26 全量审计生成。服务器端问题已同步修复,本地代码库干净。*
|
||||
|
||||
Reference in New Issue
Block a user