TESTNET TESTNET SIM BLOCK EPOCH VALIDATORS
SecuritySécurité

Security at CURS3D. Sécurité chez CURS3D.

CURS3D is built around a single security promise: every cryptographic primitive must remain secure against a sufficiently large quantum adversary. Below, what that means in practice, what we have audited, and how to report something we missed. CURS3D est conçu autour d'une seule promesse de sécurité : chaque primitive cryptographique doit rester sûre face à un adversaire quantique suffisamment puissant. Ci-dessous, ce que cela signifie en pratique, ce qui a été audité, et comment signaler ce que nous aurions manqué.

Threat modelModèle de menace

CURS3D defends against three classes of adversary:

CURS3D se défend contre trois classes d'adversaire :

  1. A cryptographically-relevant quantum computer (CRQC).Un ordinateur quantique cryptographiquement pertinent (CRQC). All signatures are CRYSTALS-Dilithium Level 5 (FIPS 204). All hashing is SHA-3 family (FIPS 202). No ECDSA, no secp256k1.Toutes les signatures sont CRYSTALS-Dilithium niveau 5 (FIPS 204). Tous les hachages sont SHA-3 (FIPS 202). Aucun ECDSA, aucun secp256k1.
  2. Byzantine validators.Validateurs byzantins. Equivocation triggers a 33% slashing penalty plus jail. Inactivity yields escalating stake penalties after a two-epoch grace period.L'équivocation déclenche une pénalité de slashing de 33 % et une mise au cachot. L'inactivité entraîne des pénalités croissantes après deux epochs de grâce.
  3. Network-level attackers.Attaquants au niveau réseau. Per-peer rate limiting, peer-scoring with automatic ban below threshold, signed HeightAnnounce messages, body-size limits, and HTTP/WS connection caps.Rate-limiting par pair, peer-scoring avec ban automatique sous un seuil, messages HeightAnnounce signés, limites de taille de body, plafonds de connexions HTTP/WS.

Key cryptographic primitivesPrimitives cryptographiques clés

Cryptographic primitives used by CURS3D and their security category.Primitives cryptographiques utilisées par CURS3D et leur catégorie de sécurité.
ComponentComposantAlgorithmAlgorithmeStandardStandardSecuritySécurité
SignaturesSignaturesCRYSTALS-Dilithium L5FIPS 204 (2024)Cat-5 (≥ AES-256)Cat-5 (≥ AES-256)
HashingHachageSHA-3 / KeccakFIPS 202256-bit
Wallet KDFKDF walletArgon2id (m=64MB, t=3, p=4)RFC 9106
Wallet AEADAEAD walletAES-256-GCMNIST SP 800-38D256-bit

AuditsAudits

All findings from internal review are tracked in the public repository.

Tous les résultats de revue interne sont suivis dans le dépôt public.

Audit log.Journal d'audits.
DateDateAuditorAuditeurScopePérimètreResultRésultat
2026-04 3-AI council (Claude, Codex, Gemini)Conseil 3-AI (Claude, Codex, Gemini) Architecture review, threat surface mapRevue d'architecture, carte de surface de menace Recommendations appliedRecommandations appliquées
2026-05 Internal hardening passPasse de durcissement interne Rust core: storage, consensus, network, API rate limitsCœur Rust : storage, consensus, réseau, rate limits API 11 findings fixed (commit 11 problèmes corrigés (commit c015ee3)
2026 H2 External audit (TBD)Audit externe (à confirmer) Full protocol & node binaryProtocole complet & binaire du node Scheduled before mainnetPlanifié avant mainnet

cargo audit runs in CI on every push. The audit policy lives in .cargo/audit.toml with per-crate justifications for ignored transitive advisories. Zero critical findings.

cargo audit tourne en CI à chaque push. La politique d'audit vit dans .cargo/audit.toml avec des justifications par crate pour les advisories transitifs ignorés. Zéro finding critique.

Bug bounty & responsible disclosureBug bounty & divulgation responsable

A formal Immunefi-style bug-bounty program is forthcoming. Until then, please report security issues privately by email.

Un programme de bug bounty formel (style Immunefi) est en préparation. En attendant, merci de signaler les problèmes de sécurité par e-mail privé.

security@curs3d.fr

Please include: a clear description, reproduction steps, the affected version (commit hash if possible), and your suggested severity. Do not open public GitHub issues for live exploits.

Merci d'inclure : une description claire, les étapes de reproduction, la version affectée (commit hash si possible) et votre suggestion de sévérité. Ne publiez pas d'issues GitHub publiques pour des exploits actifs.

PGP

A PGP key for end-to-end-encrypted reports will be published before mainnet. Until then, please use either a private GitHub Security Advisory (preferred) or send your report in clear-text to the address above.

Une clé PGP pour les rapports chiffrés bout-à-bout sera publiée avant le mainnet. En attendant, merci d'utiliser un GitHub Security Advisory privé (préféré) ou d'envoyer votre rapport en clair à l'adresse ci-dessus.

ScopePérimètre

In scope: the Rust node binary, the HTTP API, the WebSocket feed, the Ethereum-compatible JSON-RPC subset, the SDKs (Rust / JS / Python), the website (XSS, mixed-content, tokenomics-page math errors).

Dans le périmètre : le binaire Rust du node, l'API HTTP, le flux WebSocket, le sous-ensemble JSON-RPC compatible Ethereum, les SDKs (Rust / JS / Python), le site (XSS, contenu mixte, erreurs de math sur la page tokenomics).

Out of scope: third-party services (Cloudflare, Stoplight Elements), brute-force, DoS that requires sustained traffic above the public rate limits, social-engineering of maintainers.

Hors périmètre : services tiers (Cloudflare, Stoplight Elements), brute-force, DoS nécessitant un trafic soutenu au-dessus des rate limits publics, social-engineering des mainteneurs.

Safe-harborSphère de sécurité (safe harbor)

Good-faith research that respects user privacy, avoids data destruction and gives us a reasonable disclosure window will not be subject to legal action.

La recherche de bonne foi qui respecte la vie privée des utilisateurs, évite la destruction de données et nous laisse une fenêtre de divulgation raisonnable ne fera pas l'objet de poursuites.

Disclosed vulnerabilitiesVulnérabilités divulguées

No public disclosures yet.

Aucune divulgation publique pour l'instant.

Once the bug-bounty program is live, fixed and public-disclosed findings will appear here with CVE identifiers, severity, and patch commit links.

Dès que le programme de bug bounty sera actif, les findings corrigés et divulgués apparaîtront ici avec leurs identifiants CVE, leur sévérité et les commits de patch.

Known limitationsLimites connues

The following are documented in the project CLAUDE.md. None block the single-validator testnet, but they gate further multi-node rollout.

Les éléments suivants sont documentés dans le CLAUDE.md du projet. Aucun ne bloque le testnet à validateur unique, mais ils conditionnent un déploiement multi-nœud.

  1. Slot-leader scheduling missing.Planification de slot-leader manquante. With ≥2 validators, each one currently produces a block every 10 s, leading to permanent forks. Multi-validator rollout waits on a deterministic, stake-weighted slot-leader function. Avec ≥2 validateurs, chacun produit pour l'instant un bloc toutes les 10 s, ce qui crée des forks permanents. Le déploiement multi-validateur attend une fonction slot-leader déterministe pondérée par stake.
  2. RequestBlocks sync timeout.Timeout sync RequestBlocks. Even with valid peer connectivity, the receive loop in the network module times out before block batches arrive. Under investigation. Même avec une connectivité valide, la boucle de réception du module réseau expire avant que les lots de blocs n'arrivent. En cours d'analyse.
  3. Persisted state-root divergence after some restarts.Divergence de state-root persistée après certains redémarrages. Diagnostic logging now dumps each account leaf when divergence is detected. Root cause not yet identified. Un logging de diagnostic dumpe désormais chaque feuille de compte lors d'une divergence. Cause racine non identifiée.

Mainnet will not ship while any of the above remains open.

Le mainnet ne sortira pas tant qu'un de ces points reste ouvert.