xops-labs/relixq-oss

GitHub: xops-labs/relixq-oss

Relix-Q 是一款开源后量子密码学扫描器,帮助组织发现代码、依赖和 TLS 中易受量子计算破解的密码算法并评估迁移就绪度。

Stars: 0 | Forks: 0

# Relix-Q OSS ### 在量子计算机破解之前,找出它将要破解的密码学。 **开源的后量子密码学(PQC)扫描器。** 为会被 Shor 算法破解的**易受量子攻击的**算法(RSA、ECDSA、ECDH、DSA、Diffie-Hellman),加上已被经典计算机破解的 MD5 / SHA-1 / RC4 / DES 基线,跨**源代码、依赖项、TLS 端点、证书和配置**构建密码学清单。评估风险,为您的**密码敏捷性**评级,通过 **SARIF 2.1.0** 拦截 CI,并将每个易受量子攻击的发现指向其 **NIST 后量子替代方案** —— ML-KEM / ML-DSA (FIPS 203 / 204 / 205)。 *30+ 种语言 · 47 个规则包 · 725 条规则 · 自托管 · Apache-2.0 — **您的代码永远不会离开您的机器。*** ⚛️ *“现在窃取,以后解密”已经开始:对手今天存储您受 RSA/ECC 保护的数据,以便在量子计算机出现的那天将其解密。Relix-Q 现在就会揭示这种风险。* ![License](https://img.shields.io/badge/License-Apache_2.0-blue?style=flat-square) ![Release](https://img.shields.io/github/v/release/xops-labs/relixq-oss?style=flat-square&label=release&color=2ea44f) ![CI](https://img.shields.io/github/actions/workflow/status/xops-labs/relixq-oss/ci.yml?branch=main&style=flat-square&label=CI&logo=githubactions&logoColor=white) ![Stars](https://img.shields.io/github/stars/xops-labs/relixq-oss?style=flat-square&logo=github&color=eac54f) ![PQC](https://img.shields.io/badge/post--quantum-scanner-7b2d8e?style=flat-square) ![Quantum-vulnerable](https://img.shields.io/badge/detects-RSA_%C2%B7_ECC_%C2%B7_DH-b5179e?style=flat-square) ![NIST](https://img.shields.io/badge/NIST-FIPS_203%2F204%2F205-7b2d8e?style=flat-square) ![Migration](https://img.shields.io/badge/migration-ML--KEM_%C2%B7_ML--DSA-7b2d8e?style=flat-square) ![Crypto-agility](https://img.shields.io/badge/crypto--agility-graded-8957e5?style=flat-square) ![Scans](https://img.shields.io/badge/scan-code_%C2%B7_deps_%C2%B7_TLS_%C2%B7_certs-f59e0b?style=flat-square) ![Rules](https://img.shields.io/badge/725_rules-47_packs-f59e0b?style=flat-square) ![Languages](https://img.shields.io/badge/languages-30%2B-f59e0b?style=flat-square) ![SARIF](https://img.shields.io/badge/SARIF_2.1.0-code_scanning-1f6feb?style=flat-square) ![Self-Hosted](https://img.shields.io/badge/self--hosted-code_never_leaves-2ea44f?style=flat-square) ![Docker](https://img.shields.io/badge/Docker-compose_ready-2496ED?style=flat-square&logo=docker&logoColor=white) ![Built with](https://img.shields.io/badge/built_with-Go_%C2%B7_.NET_%C2%B7_Next.js-00ADD8?style=flat-square) ![Cosign](https://img.shields.io/badge/images-cosign_signed-0f9d58?style=flat-square) ![PRs welcome](https://img.shields.io/badge/PRs-welcome-2ea44f?style=flat-square)
Relix-Q OSS — product tour: scan, risk score, crypto-agility grade, and findings
Watch the 1-minute tour — scan → risk score → crypto-agility grade → per-finding fix guidance.
## 目录 - [它是什么](#what-it-is) - [快速开始](#quick-start) — [从 CLI 扫描](#scan-from-the-cli-no-clone) · [运行 Web UI](#run-the-web-ui-docker-compose) - [扫描范围](#what-it-scans) - [CI 集成](#ci-integration) - [工作原理](#how-it-works) - [配置](#configuration) - [本仓库范围](#scope-of-this-repo) - [文档与社区](#docs--community) - [License](#license) ## 它是什么 Relix-Q OSS 会扫描您的**源代码、依赖项和 TLS 端点**,以查找会被量子计算机破解的密码学(RSA、ECDSA、DH 等)以及传统意义上脆弱的基线(MD5、SHA-1、RC4、DES)。每次扫描都会生成一个**风险评分**、一个用于预测迁移成本的**密码敏捷性评级**,以及精确定位到文件和行的发现结果——这些结果可以导出为 **SARIF** 用于 CI 拦截,或者在**自托管的 Web UI** 中进行审查。您的代码永远不会离开您的机器。 ## 快速开始 有两种方式:在 CI 或终端中进行快速扫描的 **CLI**,或者提供交互式仪表板的 **Web UI**。 ### 从 CLI 扫描(无需克隆) 无需克隆、无需构建、无需 Docker。从 [**Releases**](https://github.com/xops-labs/relixq-oss/releases/latest) 获取适用于您平台的压缩包,解压并扫描 — `relixq` CLI、扫描器引擎和社区规则打包在一起,因此一条 命令即可开箱即用。(请将 `0.1.0` 替换为最新的发布版本。) **Windows (PowerShell)** — 或者使用 `.msi` 安装程序,它会将 `relixq` 添加到您的 `PATH` 中: ``` $V = "0.1.0" irm "https://github.com/xops-labs/relixq-oss/releases/download/v$V/relixq_${V}_windows_amd64.zip" -OutFile relixq.zip Expand-Archive relixq.zip -DestinationPath "$env:LOCALAPPDATA\RelixQ" & "$env:LOCALAPPDATA\RelixQ\relixq.exe" scan C:\path\to\your\repo ``` **macOS / Linux** — 压缩包:`linux_amd64`, `darwin_amd64` (Intel), `darwin_arm64` (Apple Silicon): ``` V=0.1.0 curl -fsSLO "https://github.com/xops-labs/relixq-oss/releases/download/v$V/relixq_${V}_linux_amd64.tar.gz" mkdir -p ~/relixq && tar -xzf "relixq_${V}_linux_amd64.tar.gz" -C ~/relixq ~/relixq/relixq scan /path/to/your/repo ``` **Docker** — 已发布的扫描器镜像(完全无需下载): ``` docker run --rm -v "$PWD:/src" ghcr.io/xops-labs/relixq:latest scan /src ``` 后续常用的 flag:`--format sarif|json|html`, `--severity-threshold high`, `--exit-on high` (CI 拦截), `relixq scan deps`, `relixq scan tls host:443`, `relixq version`, `relixq doctor`。 每个发布版本都提供 SHA256 校验和;容器镜像均经过 cosign 签名(参见 [`docs/RELEASE.md`](docs/RELEASE.md))。 ### 运行 Web UI(Docker Compose) 一个全新的克隆只需一条命令即可实现端到端运行 —— Postgres + API + web: ``` git clone https://github.com/xops-labs/relixq-oss relix-q-oss cd relix-q-oss cp .env.example .env # optional — defaults work unedited docker compose up --build # builds postgres + api + web ``` 然后打开 **http://localhost:47000** 并: 1. 使用电子邮件 + 密码**注册**(一个共享工作区;无外部 IdP)。 2. **创建一个项目** —— 扫描捆绑的故意包含漏洞的示例,或粘贴公共的 Git URL。 3. **运行扫描** —— API 会加载源代码,运行扫描器引擎,并为每个发现进行评分。 4. **查看结果** —— 风险评分仪表、密码敏捷性评级、语言/算法细分以及发现结果表格。 ## 扫描范围 | 表面 | 标记内容 | |---|---| | **源代码** | 被量子计算破解的非对称密码(RSA、ECDSA、ECDH、DSA、Ed25519、DH、JWT 算法)以及弱密码基线(MD5、SHA-1、RC4、DES、3DES、TLS 1.0/1.1、硬编码密钥),涵盖 **47 个规则包 / 725 条规则**。为 13 种语言提供正则表达式兜底 + AST 检测器(C# 通过 Roslyn)。 | | **依赖项** | 声明的自带易受量子攻击密码的第三方包,通过内置知识库检测 —— Python / JS / Go 清单(`relixq scan deps`)。 | | **TLS 端点** | 实时证书密钥(RSA/ECDSA/DSA)、弱协议、SHA-1 签名以及即将过期/自签名的证书(`relixq scan tls host:443`)。 | | **证书与密钥** | 独立的 `.pem` / `.crt` / `.cer` / `.der` / `.key` 文件 —— 根据公钥和签名算法进行标记;代码片段仅携带 `-----BEGIN …-----` 标记,绝不包含密钥材料。 | | **配置层密码** | OpenSSH(`sshd_config` / `ssh_config`:主机密钥,`KexAlgorithms`,`Ciphers`)和 nginx(`ssl_protocols`,`ssl_ciphers`)。 | | **手写密码** | 无法通过 import 匹配的实现 —— 常量指纹包(AES S-boxes,SHA-256 常量,RSA/DH/曲线素数);≥2 个一致信号会融合为一个高严重性的 `HANDROLLED__PROMOTED` 发现。 | 每个发现的 `quantum_safety` 字段区分了三个风险等级 —— `vulnerable`(被 Shor 算法破解的非对称密码),`grover_weakened`(AES-128 / 3DES 级别),`classically_broken`(MD5 / SHA-1 / RC4 / DES)—— 因此在 JSON 和 SARIF 中,量子风险清单与传统弱密码基线得以区分。当文件引用了已知的密码库但没有规则匹配时,一个提示性的 `CRYPTO_API_UNMAPPED` 哨兵会暴露出这个盲点,而不是保持沉默(PQC 库除外)。 ### 扫描您自己的代码 在 Web 应用中,项目可以来自以下四个来源之一: - **Git 仓库** —— 粘贴 `http(s)` URL;API 会进行浅克隆并扫描。对于**私有**仓库,在可选的 *Access token* 字段中添加个人访问令牌 —— 该令牌会为后续的重新扫描而存储,仅作为认证头发送到克隆操作,绝不会通过 API 返回。 - **本地路径** —— 已经位于您机器上的代码,放置在 `./scan-targets/` 下(以只读方式挂载到 `/scan`;沙箱化至挂载根目录)。参见 [`scan-targets/README.md`](scan-targets/README.md)。 - **上传代码 (.zip)** —— 将您的**源代码打包**(排除 `node_modules/`、`.git/`、构建输出)并在浏览器中上传;服务端提取时带有 zip-slip / zip-bomb 防护(最大 1 GB)。 - **捆绑示例** —— 故意包含漏洞的演示目标。 或者直接运行引擎,无需应用或 Docker: ``` cd packages/go go build -o relixq-scan-code ./cmd/relixq-scan-code ./relixq-scan-code -path /path/to/repo -rules ./rules-community -output findings.jsonl -agility agility.json ``` 简单的 `go build` 会提供正则表达式兜底以及纯 Go 编写的 AST 检测器(Go, JS/TS)。**完整的 AST** —— C#(通过捆绑的 `relixq-roslyn` 子进程)和 Tree-sitter 语言(C/C++、Java、Ruby、Rust、Swift、Julia、Scala、Kotlin)—— 已经内置于 `docker compose up` 镜像中(CGO + 捆绑的子进程),因此您无需在主机上安装任何工具链即可获得完全的精确度。如果没有它们,AST 会静默回退到正则表达式兜底 —— 绝不会报错。 ## CI 集成 `relixq` CLI 增加了对 CI 友好的输出和噪声控制。使用下载的发布版本,它可以直接运行 —— CLI 会在其旁边找到 `relixq-scan-code` 和捆绑的规则: ``` relixq scan /path/to/repo --format sarif > relixq.sarif # SARIF 2.1.0 for GitHub Code Scanning relixq scan /path/to/repo --format json > findings.json ``` SARIF 采用 2.1.0 版本,并可直接上传到 GitHub Code Scanning —— 包含 `security-severity`、标签、每条规则的帮助说明以及稳定的指纹。 **GitHub Action.** 捆绑的 Action 将其封装为一个步骤 —— 与 `github/codeql-action/upload-sarif` 配合使用以实现行内 PR 注释。完整示例请见 [`docs/ci-examples/github.yml`](docs/ci-examples/github.yml): ``` - uses: xops-labs/relixq-oss/github-action@v0.1.0 with: scan-type: code # code | deps | tls ``` **抑制噪声.** 使用 `.relixqignore` 文件跳过路径(gitignore 语法),或者通过行内的 `// relixq-ignore: RULE_ID` 注释屏蔽某一行。 **基线.** 在现有代码库中采用该扫描器,而不会陷入积压的发现中 —— 记录当前的发现,提交该文件,然后仅针对*新*发现拦截 CI: ``` relixq baseline /path/to/repo # writes .relixq-baseline.json relixq scan /path/to/repo --baseline .relixq-baseline.json ``` **依赖项 & TLS** 共享相同的 `--format` / `--severity-threshold` / `--baseline` 流水线: ``` relixq scan deps /path/to/repo --format sarif > deps.sarif relixq scan tls example.com:443 relixq scan tls --targets hosts.txt --format sarif > tls.sarif ``` ## 工作原理 ###架构 三个容器,一个 Docker 网络,不依赖任何外部组件: ``` browser ──▶ web (Next.js) ──▶ api (.NET) ──▶ postgres │ └─ shells the Go scanner engine (relixq-scan-code) against the project source, scores findings ``` - **`apps/web`** — Next.js 应用。使用 `@relix-q/web-components`(发现结果表 / 评分仪表)并与 API 通信。 - **`apps/api`** — ASP.NET minimal API。直接使用 OSS 库:`RelixQ.Auth.Local`(注册/登录),`RelixQ.Scoring`(风险评分),`RelixQ.Contracts`(`CryptoFinding` 结构)。通过 shell 调用 Go 引擎进行扫描。 - **`packages/go`** — 扫描器引擎、`relixq` CLI、依赖项 + TLS 扫描器以及规则包。`docker compose` 镜像构建时**包含 CGO** 以支持完整的 AST;简单的 `go build` 会回退到正则表达式 + 纯 Go AST。 扫描器通过带有标签的真相语料库(`fixtures/validation-corpus/` + `packages/go/validationgate`)进行回归测试,强制要求召回率、严格的精确度,并且在 PQC 代码上零误报。规则带有行内的 `match` / `no_match` 自测,对于新的正则表达式规则,必须通过单向棘轮机制进行强制测试。CI 在每次合并和发布之前运行完整的 Go 测试套件。 ### 仓库布局 ``` apps/api/ .NET minimal API (auth, projects, scans, scoring) apps/web/ Next.js web app packages/go/ scanner engine, relixq CLI, dep + TLS scanners, rule packs packages/dotnet/ RelixQ.Scoring / Auth.Local / Contracts / AI.BYOK packages/npm/ @relix-q/web-components, @relix-q/web-client github-action/ GitHub Action (action.yml + entrypoint) for CI scans docs/ architecture, development, release docs, CI examples fixtures/sample-vulnerable/ bundled demo scan target packaging/ WiX / chocolatey / winget installers .goreleaser.yaml release build matrix: archives, deb/rpm, checksums docker-compose.yml postgres + api + web ``` ## 配置 所有值都设有合理的默认值(参见 `.env.example`);即使没有 `.env` 文件,整个堆栈也能运行。 | 变量 | 默认值 | 用途 | |---|---|---| | `WEB_PORT` | `47000` | Web 应用主机端口 | | `API_PORT` | `47080` | API 主机端口 | | `POSTGRES_PORT` | `47432` | Postgres 主机端口 | | `LOCAL_SCAN_PATH` | `./scan-targets` | 挂载为只读(路径为 `/scan`)的主机文件夹,用于**本地路径**项目 | ## 本仓库范围 此仓库是单租户、自托管的构建版本:代码、依赖项和 TLS 扫描器、评分库、CLI、GitHub Action 以及 Web UI。此处有意排除了某些功能 —— 多租户扫描编排、SSO/RLS、云态势扫描、车队规模的依赖项/TLS 扫描以及运行时遥测。 扫描器会自行标记出易受量子攻击的密码和弱密码基线。可选的外部**规则包覆盖层**可以利用迁移情报就地丰富每个检测结果 —— NIST/FIPS 替代方案(例如 ML-DSA / FIPS 204)、混合 PQC 指南和特定领域的上下文 —— 以规则 ID 作为键。即使没有它,发现结果依然完整且具有可操作性。 ## 文档与社区 - **新贡献者:** [`CONTRIBUTING.md`](CONTRIBUTING.md) 和 [`docs/DEVELOPMENT.md`](docs/DEVELOPMENT.md) - **配置与部署:** [`docs/CONFIGURATION.md`](docs/CONFIGURATION.md), [`docs/DEPLOYMENT.md`](docs/DEPLOYMENT.md), [`docs/FAQ.md`](docs/FAQ.md) - **架构与安全:** [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md), [`SECURITY_DESIGN.md`](SECURITY_DESIGN.md), [`SECURITY.md`](SECURITY.md) - **支持与故障排除:** [`SUPPORT.md`](SUPPORT.md), [`docs/TROUBLESHOOTING.md`](docs/TROUBLESHOOTING.md) - **治理与社区:** [`GOVERNANCE.md`](GOVERNANCE.md), [`MAINTAINERS.md`](MAINTAINERS.md), [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md), [`ROADMAP.md`](ROADMAP.md), [`ADOPTERS.md`](ADOPTERS.md) - **发布与 CI:** [`docs/RELEASE.md`](docs/RELEASE.md), [`docs/ci-examples/github.yml`](docs/ci-examples/github.yml) ## License Apache License 2.0 — 详见 [`LICENSE`](LICENSE)。
标签:EVTX分析, SARIF, 后量子密码学, 多人体追踪, 密码学审查, 日志审计, 测试用例, 请求拦截, 错误基检测, 静态代码分析