Modèle de sécurité de lyra.social
Audit interne complet — 51 findings adressés, sandbox plugins, fédération hardened. Voici les garanties techniques que nous offrons.
Auth & sessions
- Hashage Argon2id pour les mots de passe utilisateur
- Hashage bcrypt pour les comptes admin (panel séparé)
- JWT HS256 (compat) + ES256 (production) avec
iss + aud obligatoires
- Refresh token rotation avec détection de réutilisation → revoke chain
- Brute-force lockout par
(email, IP) — pas par email seul, donc pas de DoS
- 2FA TOTP + 6 codes de backup, lockout TOTP indépendant 10min/5 essais
- OAuth Apple avec vérification JWKS RS256 (signature obligatoire)
Fédération
- JWT ES256 entre nodes,
iss+exp spec_claims requis
- JTI Redis SETNX TTL 600s anti-replay
- SSRF egress hardened : DNS pinning + redirect=none + reserved-IP filtering
- Federation outbox durable 7 jours, retry exponentiel, back-off
- Trust scoring + quarantine pour nodes malveillants
Web
- CSP avec nonce per-request, frame-ancestors 'none', object-src 'none'
- Permissions-Policy strict (≈25 features bloquées)
- Cookie session admin
HttpOnly; SameSite=Strict; Secure
- CSRF Origin check sur tout
/admin-api
- HSTS, X-Content-Type-Options, X-Frame-Options
Plugins
- Sandbox iframe
sandbox="allow-scripts" origine opaque (pas allow-same-origin)
- Bridge postMessage strict, whitelist d'opérations exposées
- Intégrité SHA-256 vérifiée avant chaque exécution (SRI-style)
- Signatures Ed25519 obligatoires en production (
PLUGIN_REQUIRE_SIGNATURES=true par défaut)
RGPD
- Article 17 cascadé : utilisateur, messages, médias, push subscriptions, refresh tokens, federation USER_ERASURE
- Article 20 : export complet via
GET /users/@me/data-export
- Filtres DNSBL email + blocage domaines jetables
- Pages légales : privacy, terms, legal, DSA
Signaler une vulnérabilité
Email : security@lyra.social (PGP key: voir /.well-known/security.txt). Politique de divulgation responsable : 90 jours embargo pour les critiques.