# Security Policy ## Supported Versions | Version | Supported | | ------- | ------------------ | | 1.4.x | :white_check_mark: | | < 1.4 | :x: | Only the latest minor release receives security patches. Upgrade to the latest version for all fixes. ## Reporting a Vulnerability **Please do not report security vulnerabilities through public GitHub issues.** Instead, please report them via: 1. **GitHub Private Vulnerability Reporting:** [Report a vulnerability](https://github.com/getnora-io/nora/security/advisories/new) (preferred) 2. **Email:** devitway@gmail.com 3. **Telegram:** [@devitway_pavel](https://t.me/devitway_pavel) (private message) ### What to Include - Type of vulnerability - Steps to reproduce - Potential impact - Suggested fix (if any) ### Response Timeline - **Initial response:** within 48 hours - **Status update:** within 7 days - **Fix timeline:** depends on severity ### Severity Levels | Severity | Description | Response | |----------|-------------|----------| | Critical | Remote code execution, auth bypass | Immediate fix | | High | Data exposure, privilege escalation | Fix within 7 days | | Medium | Limited impact vulnerabilities | Fix in next release | | Low | Minor issues | Scheduled fix | ## Known Advisory Exclusions The following RustSec advisories are excluded from `cargo audit` in CI with documented rationale: ### RUSTSEC-2023-0071 — Marvin Attack (`rsa` crate) | Field | Value | |-------|-------| | Advisory | [RUSTSEC-2023-0071](https://rustsec.org/advisories/RUSTSEC-2023-0071.html) | | Crate | `rsa` 0.9.x (transitive via `jsonwebtoken`) | | Attack | Marvin Attack — timing side-channel on RSA PKCS#1 v1.5 **decryption** | | NORA usage | JWT signature **verification** only (OIDC workload identity); index signing (`pgp`) refuses RSA keys at load | | Applicable | **No** — NORA calls `rsa::verify`, never `rsa::decrypt` | | Upstream fix | None available; `rsa` crate maintainers have not patched | **Why RS256 is required:** GitHub Actions and GitLab CI OIDC providers sign their workload identity tokens with RS256. NORA must verify these signatures to support keyless CI/CD authentication. The `rsa` crate cannot be removed from the dependency tree without breaking OIDC integration. **Mitigations in place:** - Algorithm whitelist per OIDC provider (`algorithms` config field) - Default allowed algorithms: RS256, ES256 (EdDSA ready when providers adopt it) - Symmetric algorithms (HS256/384/512) rejected globally - `ed25519-dalek` already compiled in via `jsonwebtoken` `rust_crypto` feature ### RUSTSEC-2026-0387 — timing variability (`crypto-bigint` crate) | Field | Value | |-------|-------| | Advisory | [RUSTSEC-2026-0387](https://rustsec.org/advisories/RUSTSEC-2026-0387.html) | | Crate | `crypto-bigint` 0.5.5 (transitive via `pgp` and `jsonwebtoken`, through `elliptic-curve` 0.13) | | Attack | Secret-dependent branches in operations meant to be constant-time | | NORA usage | ECDSA JWT signature **verification** (public keys only); `pgp` curves NORA never signs with | | Applicable | **No** — index signing is Ed25519-only: an ECDSA or Ed448 key at `signing.key_path` is refused at load, so `crypto-bigint` never operates on a secret | | Upstream fix | `crypto-bigint` 0.7.6; `pgp` 0.20 and `jsonwebtoken` 10 still depend on 0.5 | ### RUSTSEC-2025-0119 — Unmaintained crate Transitive dependency flagged as unmaintained. No fix available, no security impact — the crate is functioning correctly. ## Security Best Practices When deploying NORA: 1. **Enable authentication** - Set `NORA_AUTH_ENABLED=true` 2. **Use HTTPS** - Put NORA behind a reverse proxy with TLS 3. **Limit network access** - Use firewall rules 4. **Regular updates** - Keep NORA updated to latest version 5. **Secure credentials** - Use strong passwords, rotate tokens ## Acknowledgments We appreciate responsible disclosure and will acknowledge security researchers who report valid vulnerabilities in our release notes and CHANGELOG, unless the reporter requests anonymity. If you have previously reported a vulnerability and would like to be credited, please let us know.