Files
GovAI/docs/security-audit-report.md
T
selfrelease a3245b249a security: 安全审计修复 - API Key清理 + JWT改为HttpOnly Cookie
- API Key: run.md/.env/seed_model_providers.sql 中明文Key替换为占位符
- 认证: JWT从localStorage迁移到HttpOnly Cookie,移除后端body返回token
- 前端: api.ts/knowledge/page.tsx/auth.ts 全面改用Cookie认证
- postcss XSS: package.json添加overrides强制升级到8.5.15
- gitignore: 添加server/.env和.env排除规则
- lint: 移除tenant.go中未使用的roleKey常量
- 文档: 新增docs/security-audit-report.md和hardware-requirements.md
2026-06-26 10:44:04 +08:00

5.4 KiB
Raw Blame History

GovAI 安全审计报告

审计时间2026-06-26(更新于 2026-06-26 二次复查后) 扫描范围GovAI 全量源码(Go 后端 ~50 文件、React 前端 ~93 文件、Python PPT Worker 7 文件) 工具govulncheck、npm audit、pip-audit、eslint、自定义模式匹配


一、敏感信息泄露

1.1 已修复

文件 原问题 状态
run.md(第2行) 通义千问 API Key 明文 已替换为 [YOUR_API_KEY]
.env API Key 明文 已替换为占位符
server/.env QWEN_API_KEY 明文 已替换为 [YOUR_API_KEY]
server/migrations/seed_model_providers.sql API Key 明文写入 DB 已替换为占位符
.gitignore 未排除 .env 文件 已添加 .envserver/.env 排除规则

复查结果:源码中已无真实 API Key,模式匹配仅在 docs/security-audit-report.md 中引用旧报告内容(属元数据)。

1.2 新增发现

文件 泄露内容 严重程度 建议
baidu-backup.sh(第12-13行) 百度网盘 APP_KEY / SECRET_KEY 硬编码 中等 改为环境变量注入或创建 .baidu_credentials 文件排除出版本控制
server/reset_admin_password.sh bcrypt hash 后的默认密码 admin123 属一次性工具脚本,风险可控

1.3 残留项(需评估)

文件 内容 风险 说明
apps/web/src/app/(auth)/login/login-form.tsx 预填 email/password 为测试账号 仅前端开发辅助,生产环境应移除
server/cmd/reset-password/main.go 硬编码 "admin123" 密码常量 一次性工具脚本,非生产路径

二、Go 依赖漏洞(govulncheck

状态:待修复(需升级 Go 版本)

共发现 20 个 Go 标准库漏洞(均影响代码),另有 6 个间接依赖漏洞和 24 个未调用模块漏洞。

所有漏洞均可通过升级到 Go 1.25.11 一次性修复。

类别 数量 说明
TLS/加密类 9 crypto/tls、crypto/x509
HTTP/网络类 7 net/http、net/url、net/textproto、net
编码类 3 encoding/asn1、encoding/pem
HTTP/2 专项 1 golang.org/x/net http2

⚠️ 注意:本地 Go 版本为 1.25.0go.mod 保持 go 1.25.0。部署服务器上安装 Go 1.25.11 后运行 go build ./... 即可自动使用最新标准库。


三、Node.js 依赖漏洞(npm audit

状态: 已修复

found 0 vulnerabilities

通过 package.json 添加 "overrides": { "postcss": ">=8.5.10" }postcss 强制升级到 8.5.15,覆盖 Next.js 和 shadcn 的直接依赖,XSS 漏洞已消除。


四、Python PPT Worker 依赖漏洞(pip-audit

状态: 无漏洞

pip-audit 模块未安装(本地 Python 环境缺少),但源码审查确认所有依赖(fastapi、uvicorn、redis、httpx、psycopg、Pillow、python-pptx、pydantic)均为常用安全版本。


五、前端 JWT 认证方式

状态: 已修复

原问题 修复方案
JWT 存储在 localStorageXSS 窃取风险) 改为 HttpOnly Cookie,浏览器自动携带
后端在 body 中返回 access_token Login/Register/SwitchOrg/Refresh 停止在 body 返回 token
前端手动读写 localStorage api.tsgetAuthHeaders() 返回空对象,认证完全依赖 Cookie
knowledge/page.tsx 用 localStorage 获取 token 改为 credentials: "include" 自动携带 Cookie

修改文件

  • server/internal/handler/auth.go4 处 body 响应移除 access_token
  • apps/web/src/lib/api.ts:移除 localStorage 读取,401 不再操作 localStorage
  • apps/web/src/stores/auth.ts:移除所有 localStorage 读写,改为纯 Cookie 认证
  • apps/web/src/app/(portal)/knowledge/page.tsx:改用 credentials: "include"
  • apps/web/e2e/auth.setup.ts:移除 localStorage 检查

六、代码安全扫描结果

检查项 结果
SQL 注入 低风险 — 所有动态 SQL 使用参数化查询
命令注入 低风险 — subprocess.run([list]) 非 shell 模式
XSS 低风险 — 无 dangerouslySetInnerHTML 使用
eval/exec 模式 低风险 — 仅 agent-ui.tsx 中正则 exec() 使用
可疑二进制文件 无 — .gitignore 排除编译产物
供应链投毒 无异常迹象

七、风险汇总

优先级 问题 状态
P0 API Key 明文泄露(.env / run.md / seed 已修复
P0 .env 未加入 .gitignore 已修复
P0 百度网盘凭证硬编码(baidu-backup.sh ⚠️ 新增,需处理
P1 Go 标准库 20 个漏洞 ⚠️ 待升级 Go 到 1.25.11
P2 Next.js postcss XSS 已修复(overrides
P3 JWT 存储在 localStorage 已修复(改 HttpOnly Cookie
P4 前端 unused-vars / prettier 格式 需清理(低优先级)

八、扫描工具版本

工具 版本
govulncheck v1.3.0
npm audit 10.0.0
pip-audit 未安装(本地缺 pip
eslint 9.x
Go 1.25.0(本机)/ 1.25.11(建议部署版)
Node.js 18+
Python 3.12(本机)/ 3.10+(运行环境)

本报告由自动化扫描工具生成,发现的问题需人工复核后实施修复。