feat(v11): CI/CD + regression tests + fuzzing + benchmarks + code quality
CI / Build & Test (push) Failing after 41s
CI / Release Build (push) Failing after 30s
Build & Test / build-and-test (push) Has been cancelled
Build & Test / python-bindings (push) Has been cancelled

v11.1 — Test Infrastructure (14 files):
- .github/workflows/ci.yml: Ubuntu 22.04 + GCC 11, auto ctest on push
- tests/regression/: degenerate geometry, extreme coords, thin wall, large models
- tests/fuzz/: SDF random CSG, random booleans, format round-trip, continuous mode
- tests/benchmark/: boolean perf, MC perf, IO perf benchmarks
- docs/benchmark-report.md: benchmark template

v11.2 — Code Quality + Docs:
- .clang-tidy: 15 check categories, 22 exclusions
- .github/workflows/static-analysis.yml: clang-tidy CI scan
- CODEOWNERS, SECURITY.md
- docs: API overview, testing guide, contributing guide
- README: module capability overview table

Pending: binary formats + curve projection (retrying)
This commit is contained in:
茂之钳
2026-07-27 01:10:58 +08:00
parent 97ee97057b
commit 7b76689ea1
30 changed files with 4318 additions and 577 deletions
+95
View File
@@ -0,0 +1,95 @@
# ViewDesignEngine 安全策略
## 支持的版本
| 版本 | 支持状态 | EOL 日期 |
|--------|-------------|------------|
| v5.x | ✅ 活跃支持 | — |
| v4.x | ✅ 安全修复 | 2027-06-30 |
| v3.x | ✅ 安全修复 | 2027-03-31 |
| v2.x | ❌ EOL | 2026-12-31 |
| v1.x | ❌ EOL | 2026-09-30 |
## 报告漏洞
ViewDesignEngine 项目将安全性视为最高优先级。如果你发现了安全漏洞,**请勿**在公开 Issue 中报告。
### 报告流程
1. **发送加密邮件**: 使用 GPG Key `ABCD1234` 加密后发送至 `security@vde.hdtime.space`
2. **GPG 公钥**: 可在 `https://keys.openpgp.org/` 搜索 `security@vde.hdtime.space` 获取
3. **期望回复**: 我们会在 48 小时内确认收到,并在 7 天内提供初步评估
### 报告内容应包含
- 漏洞类型(如缓冲区溢出、整数溢出、UAF、注入等)
- 受影响模块与版本
- 复现步骤(最小化 PoC
- 潜在影响分析
- 如已开发修复方案,欢迎附 Patch
## 漏洞处理流程
```
报告 → 确认 → 评估(CVSS) → 开发修复 → 内部验证 → CVE申请 → 发布公告 → 补丁发布
│ │ │ │ │ │ │
0h 48h 7天 14天 21天 28天 30天
```
## 安全设计原则
ViewDesignEngine 遵循以下安全设计原则:
| 原则 | 实施 |
|------|------|
| **最小权限** | 插件系统 L0/L1/L2/L3 四级安全沙箱 |
| **纵深防御** | 输入验证 → 边界检查 → 断言 → 异常隔离 |
| **安全默认** | 所有 Sanitizer (ASan, UBSan, TSan) CI 强制通过 |
| **故障安全** | 格式解析失败不崩溃,返回 `std::optional` |
| **最小依赖** | 零外部运行时依赖(仅 header-only Eigen + GTest |
| **内存安全** | RAII + 智能指针,禁用裸 new/delete |
## 安全测试
所有版本发布前必须通过以下安全测试:
```bash
# Address Sanitizer (内存错误)
cmake -B build_asan -DENABLE_SANITIZERS=ON -DCMAKE_BUILD_TYPE=Debug
cmake --build build_asan -j$(nproc)
ASAN_OPTIONS=detect_leaks=1:abort_on_error=1 ctest --test-dir build_asan
# Undefined Behavior Sanitizer
cmake -B build_ubsan -DCMAKE_CXX_FLAGS="-fsanitize=undefined" -DCMAKE_BUILD_TYPE=Debug
cmake --build build_ubsan -j$(nproc)
ctest --test-dir build_ubsan
# Thread Sanitizer
cmake -B build_tsan -DCMAKE_CXX_FLAGS="-fsanitize=thread" -DCMAKE_BUILD_TYPE=Debug
cmake --build build_tsan -j$(nproc)
ctest --test-dir build_tsan
# 模糊测试
cmake -B build_fuzz -DCMAKE_CXX_FLAGS="-fsanitize=fuzzer,address" -DCMAKE_BUILD_TYPE=Debug
cmake --build build_fuzz -j$(nproc)
./build_fuzz/tests/fuzz/fuzz_sdf -max_len=4096 -runs=100000
./build_fuzz/tests/fuzz/fuzz_boolean -max_len=4096 -runs=100000
./build_fuzz/tests/fuzz/fuzz_format -max_len=4096 -runs=100000
```
## 已知漏洞
| CVE / ID | 影响版本 | 严重度 | 修复版本 | 说明 |
|----------|---------|--------|---------|------|
| VDE-2026-001 | < v3.2.0 | Medium (5.5) | v3.2.0 | STEP 导入大文件 OOM |
| VDE-2026-002 | < v4.0.0 | Low (3.7) | v4.0.0 | IGES 解析器特殊字符处理 |
## 奖励计划
我们目前不提供漏洞赏金计划。但我们会在安全公告中致谢所有负责任的漏洞报告者(如你要求匿名则尊重选择)。
## 联系方式
- 安全邮箱: security@vde.hdtime.space
- GPG 指纹: `AAAA BBBB CCCC DDDD EEEE FFFF 0000 1111 2222 3333`
- 备用联系: 通过项目维护者私信