KKloudTarus/synapse-ce
GitHub: KKloudTarus/synapse-ce
Synapse 是一个确定性优先的安全评估控制平面,将 SBOM 生成、漏洞检测、许可证合规、防篡改证据和报告统一为可审计的受控工作流。
Stars: 28 | Forks: 7

### 验证一切,信任为零。
**一个用于软件成分分析、侦察、证据和报告的受管控控制平面。**
将碎片化、手动的安全流程转化为受控、可审计的工作流,并提供
服务端范围强制执行、强化的工具执行、防篡改证据以及
确定性报告。
[](LICENSE)
[](go.mod)
[](https://synapse.kkloudtarus.net/)
[主页](https://synapse.kkloudtarus.net/) · [文档](docs/guide/README.md) · [快速开始](#quickstart) · [功能](#features) · [配置](docs/guide/configuration.md)
## 什么是 Synapse
Synapse 在一个受管控的控制平面背后运行安全评估生命周期:软件成分分析、侦察、证据捕获、发现和报告。
它是确定性优先的。扫描、匹配、许可证分类和报告是纯粹的、可复现的 Go 实现,中间没有任何其他干扰。在提供自动化分析的地方,它都受到严格的限制:提案仅作为建议提出,由类型化的 Go 状态机进行验证和执行;范围和授权在执行层进行检查;密钥绝不离开服务器;每个工件都通过哈希链形成一个防篡改的监管记录;并且任何侵入性操作都必须经过人类批准。
## 功能
- **SBOM 生成**:覆盖多个生态系统(npm、PyPI、Maven、Gradle、Go、Cargo、RubyGems、Composer、NuGet、Hex、Dart 等),拥有针对各生态系统的专用 lockfile 解析器。
- **漏洞检测**:通过实时安全公告 API 和离线数据库进行,进行交叉关联和去重,此外还有一个专用的安全公告存储库,可接入 OSV、GHSA 和 CSAF 数据源以实现独立的检测。
- **基于风险的优先级排序**:根据可利用性(已知被利用目录,其次是漏洞利用预测评分,最后是 CVSS)对发现进行排序,绝不单纯依赖原始 CVSS。
- **许可证合规性**:解析已声明的许可证,支持 SPDX 表达式解析,包含精心策划的类别和风险模型,并支持为遮蔽或缺少元数据的 JAR 恢复坐标。
- **可达性**:确定性的调用图引擎决定易受攻击的符号是否实际上可以从应用程序代码中到达。
- **防篡改证据**:每个工件都通过哈希链接。断裂的链条将阻止生成报告。审计和证据日志是只允许追加的。
- **强化的执行**:工具通过 Linux 沙箱内的 argv 数组以 shell 方式调用,并带有出口范围限制。在任何工具运行之前,都会强制执行范围和授权窗口。
- **RBAC 和租户隔离**:通过单一的授权瓶颈点实现。
- **原生标准支持**:支持带有 PURL 的 CycloneDX 和 SPDX、SARIF、OpenVEX 和 CSAF,以及 KEV 和 EPSS。
- **确定性报告**:基于存储的数据进行模板化,包含精心策划的从 CWE 到 OWASP、PCI 和 ISO 合规性的映射。
- **有界的 AI 分析**(可选):代理提出建议,由独立的验证器或人类确认。报告生成路径中绝不包含任何模型。
请在[文档站点](https://synapse.kkloudtarus.net/#screens)上查看包含截图的完整演练。
## 快速开始
### 前置条件
- Go 1.26(固定在 `go.mod` 中),Node 和 pnpm(请使用 pnpm,而不是 npm 或 yarn)。
- Syft(任何扫描都需要)和 Grype(可选,提供离线数据库)。`make tools` 会将它们安装到 `./bin` 中,版本固定且经过校验和验证。
- Docker 是可选的,并且是运行完整技术栈的最简单方法。
- 强化的沙箱和实时侦察需要 Linux 主机。没有它们,API 仍然可以运行(SCA、发现、报告);沙箱执行会安全失败,而绝不在未沙箱化的情况下运行。
### 使用 Docker 运行完整技术栈
```
docker compose -f deploy/docker-compose.full.yml up --build
# 然后打开 http://localhost:5173
```
### 原生运行(开发)
```
make install # Go modules + web deps
make tools # syft + grype into ./bin
export PATH="$PWD/bin:$PATH"
export SYNAPSE_API_TOKEN="$(openssl rand -hex 32)" # required, no anonymous access
make dev # API on :8080, dashboard on :5173
```
打开
,粘贴 token,接受可接受使用策略。留空的 `SYNAPSE_DB_DSN` 会运行一个内存开发存储,因此不会持久化任何内容。数据库迁移已嵌入,并在启动时自动应用。
## 命令行
`synapse-cli` 运行与服务器相同的 pipeline,非常适合用于 CI 拦截。
```
make build
./bin/synapse-cli scan ./path/to/project --fail-on high
```
当没有发现达到阈值时,退出代码为 0,否则为非零。
## 二进制文件
| 二进制文件 | 角色 |
| --- | --- |
| `synapse-api` | HTTP API 服务器,主要服务 |
| `synapse-cli` | 从命令行运行 SCA 扫描,对 CI 友好 |
| `synapse-worker` | 用于侦察和后台任务的持久化任务运行器,基于租约 |
| `synapse-callgraph` | 用于可达性分析的沙箱化调用图构建器 |
| `synapse-mcp` | 只读、仅提议的集成服务器,绝不执行 |
## 架构
采用整洁架构,具有严格的、仅向内的依赖规则:
```
domain <- usecase <- adapter / infrastructure
```
所有外部 I/O(数据库、工具、存储、沙箱)都通过端口进行,这些端口是 `internal/usecase/ports` 中的接口。`cmd/*` 是组合根,在 `main` 中进行依赖注入,并且不包含业务逻辑。
## 配置
Synapse 从进程环境变量中读取其配置。复制 `.env.example` 并进行调整。唯一必需的变量是 `SYNAPSE_API_TOKEN`。有关完整列表,请参阅
[配置参考](docs/guide/configuration.md)。
完整文档位于 [`docs/guide/`](docs/guide/README.md) 中:介绍、安装、快速开始、功能、配置、CLI、架构、部署和安全模型。
## 许可证
根据 [Apache License 2.0](LICENSE) 授权。标签:EVTX分析, Go, Ruby工具, SBOM生成, 安全合规, 实时处理, 日志审计, 网络代理, 请求拦截