c949204662
借鉴 odysseus 的能力设计,全程净室实现、零 AGPL 代码、不引入 AGPL 依赖。
T1 提示注入防护: pkg/promptguard 包裹外部/知识库内容为不可信数据,buildMessages 移出 system 指令区。 T2 安全 CI: .github/workflows(ci+security: govulncheck/gitleaks/actionlint/hadolint/trivy)+dependabot+.hadolint.yaml;go.mod 加 toolchain go1.25.11 修复 20 个 stdlib CVE。 T3 管理员 2FA: 迁移 000016 + RFC6238 TOTP/备份码(pkg/auth, 零依赖) + 登录流程集成(后端)。 T4 本地模型: LLM/embedding 支持本地 vLLM/Ollama(OpenAI 兼容, 鉴权头条件发送, NoAuth) + docs/local-deploy.md。 T6 深度研究: 迁移 000017 + Python research-worker(净室多步流水线, 检索避开 SearXNG) + Go research 服务/handler/路由。 T7 service 层: 新增 internal/service/{research,twofa}, 2FA 业务逻辑从胖 handler 下沉, 接口注入可单测。 T10 缓存/可观测性: internal/cache(Redis+内存, 优雅降级) 接入 store 热点列表; Prometheus 指标+/metrics; docs/openapi.yaml。 验证: go build/vet/test ./... 全绿(8 包); research-worker 12 单测过; 真实 PG 应用迁移并烟测。
95 lines
3.1 KiB
YAML
95 lines
3.1 KiB
YAML
# 安全检查套件 —— 密钥扫描 / 依赖漏洞 / 工作流与镜像静态检查
|
|
# 本文件为 GovAi 自行编写,所用工具均为宽松许可(MIT/Apache 等),
|
|
# 在 CI 中作为独立分析器运行,不与本项目代码链接。未复制任何第三方项目配置。
|
|
name: Security
|
|
|
|
on:
|
|
push:
|
|
branches: [main, master, dev]
|
|
pull_request:
|
|
schedule:
|
|
- cron: "0 3 * * 1" # 每周一 03:00 UTC 定时复扫
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: security-${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
# ---- 阻断类:发现问题应修复后再合并 ----
|
|
secret-scan:
|
|
name: 密钥扫描 (gitleaks)
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0 # 全量历史,便于扫描历史提交中的密钥
|
|
- name: 安装 gitleaks
|
|
run: |
|
|
VERSION=8.18.4
|
|
curl -sSfL "https://github.com/gitleaks/gitleaks/releases/download/v${VERSION}/gitleaks_${VERSION}_linux_x64.tar.gz" -o gitleaks.tar.gz
|
|
tar -xzf gitleaks.tar.gz gitleaks
|
|
sudo install gitleaks /usr/local/bin/gitleaks
|
|
- name: 扫描
|
|
run: gitleaks detect --source . --redact --no-banner --verbose
|
|
|
|
go-vuln:
|
|
name: Go 依赖漏洞 (govulncheck)
|
|
runs-on: ubuntu-latest
|
|
defaults:
|
|
run:
|
|
working-directory: server
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version-file: server/go.mod
|
|
cache-dependency-path: server/go.sum
|
|
- name: 安装 govulncheck
|
|
run: go install golang.org/x/vuln/cmd/govulncheck@latest
|
|
- name: 扫描
|
|
run: govulncheck ./...
|
|
|
|
workflow-lint:
|
|
name: 工作流静态检查 (actionlint)
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: 安装并运行 actionlint
|
|
run: |
|
|
bash <(curl -sSf https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
|
|
./actionlint -color
|
|
|
|
docker-lint:
|
|
name: Dockerfile 静态检查 (hadolint)
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: hadolint - ppt-worker Dockerfile
|
|
uses: hadolint/hadolint-action@v3.1.0
|
|
with:
|
|
dockerfile: ppt-worker/Dockerfile
|
|
|
|
# ---- 建议类:报告问题但不阻断合并 ----
|
|
dependency-audit:
|
|
name: 依赖审计 (npm audit / trivy,建议性)
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 20
|
|
cache: npm
|
|
cache-dependency-path: apps/web/package-lock.json
|
|
- name: npm audit (前端)
|
|
working-directory: apps/web
|
|
run: npm audit --audit-level=high
|
|
continue-on-error: true
|
|
- name: 安装 trivy
|
|
run: curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sudo sh -s -- -b /usr/local/bin
|
|
- name: trivy 文件系统扫描(依赖 CVE)
|
|
run: trivy fs --scanners vuln --severity HIGH,CRITICAL --exit-code 0 .
|
|
continue-on-error: true
|