12 KiB
Politique de Sécurité - UnionFlow Client
Ce document décrit les pratiques de sécurité, les vulnérabilités connues et les procédures de signalement pour l'application UnionFlow Client.
📋 Table des Matières
- Versions Supportées
- Architecture de Sécurité
- Authentification et Autorisation
- Protection des Données
- Headers de Sécurité
- Gestion des Secrets
- Vulnérabilités Connues
- Signalement de Vulnérabilités
- Conformité
🔄 Versions Supportées
| Version | Supportée | Fin de Support |
|---|---|---|
| 1.0.x | ✅ Oui | 31 Déc 2025 |
| < 1.0 | ❌ Non | N/A |
🏗️ Architecture de Sécurité
Modèle de Sécurité
L'application implémente une architecture de sécurité en profondeur (Defense in Depth):
┌─────────────────────────────────────────────┐
│ 1. TLS/HTTPS (Transport) │
│ - Certificats SSL/TLS valides │
│ - HSTS activé (max-age=1 an) │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ 2. Headers de Sécurité HTTP │
│ - CSP, X-Frame-Options, etc. │
│ - Protection XSS, Clickjacking │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ 3. Authentification OIDC (Keycloak) │
│ - OAuth 2.0 / OpenID Connect │
│ - JWT Tokens signés │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ 4. Autorisation (RBAC) │
│ - Vérification rôles multiples │
│ - Permissions granulaires │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ 5. Validation des Entrées │
│ - Hibernate Validator │
│ - Validateurs personnalisés │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ 6. Logging Sécurisé │
│ - Pas de données sensibles │
│ - Audit trails │
└─────────────────────────────────────────────┘
🔐 Authentification et Autorisation
Authentification
- Méthode: OpenID Connect (OIDC) via Keycloak
- Protocole: OAuth 2.0 Authorization Code Flow
- Tokens: JWT (JSON Web Tokens) signés avec RS256
Configuration Keycloak Requise
# Serveur d'authentification
quarkus.oidc.auth-server-url=https://security.lions.dev/realms/unionflow
# Client configuration
quarkus.oidc.client-id=unionflow-client
quarkus.oidc.credentials.secret=${KEYCLOAK_CLIENT_SECRET}
# Scopes
quarkus.oidc.authentication.scopes=openid,profile,email,roles
# TLS Verification
quarkus.oidc.tls.verification=required # JAMAIS 'none' en production
Rôles et Permissions
Hiérarchie des Rôles
- SUPER_ADMIN - Accès complet système
- ADMIN_ENTITE - Administration organisation
- ADMIN - Administration locale
- GESTIONNAIRE_* - Gestion fonctionnelle
- TRESORIER - Gestion financière
- MEMBRE - Accès membre standard
Permissions Granulaires
canManageMembers()- Gestion des membrescanManageFinances()- Gestion financièrecanManageEvents()- Gestion des événementscanViewReports()- Consultation des rapportscanAccessSuperAdmin()- Accès super-admin
Gestion des Sessions
- Timeout: 60 minutes par défaut
- Cookie Flags:
HttpOnly: ✅ Activé (prévention XSS)Secure: ✅ Activé (HTTPS uniquement)SameSite:Strict(prévention CSRF)
Gestion des Tokens JWT
- Access Token: Durée de vie courte (15-30 min)
- Refresh Token: Durée de vie longue (7 jours)
- Stockage: Cookies HttpOnly (JAMAIS localStorage)
- Rafraîchissement: Automatique 5 min avant expiration
- Cache: Limite de 10,000 tokens (protection DoS)
🛡️ Protection des Données
Données Sensibles
Classification
| Type | Niveau | Stockage | Transmission |
|---|---|---|---|
| Mots de passe | Critique | Hachés (bcrypt) | HTTPS uniquement |
| Tokens JWT | Critique | Cookies HttpOnly | HTTPS uniquement |
| Confidentiel | Chiffré DB | HTTPS uniquement | |
| Téléphone | Confidentiel | Chiffré DB | HTTPS uniquement |
| Nom/Prénom | Public | Clair | HTTPS uniquement |
Protection en Transit
- Protocole: TLS 1.2+ uniquement (pas de TLS 1.0/1.1)
- Cipher Suites: Modernes et sûres uniquement
- HSTS: Activé avec
includeSubDomainsetpreload
Protection au Repos
- Base de données: Chiffrement au niveau base (via backend)
- Fichiers: Chiffrement du système de fichiers recommandé
- Logs: Pas de données sensibles loggées
Conformité RGPD
- Minimisation des données: Collecte uniquement des données nécessaires
- Droit à l'oubli: API de suppression disponible
- Portabilité: Export de données en JSON/Excel
- Audit: Logs de toutes les opérations sensibles
🔒 Headers de Sécurité
Configuration Production
Tous les headers suivants sont automatiquement configurés en production:
# Prévention MIME Sniffing
X-Content-Type-Options: nosniff
# Protection Clickjacking
X-Frame-Options: DENY
# HSTS (HTTPS forcé)
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
# Content Security Policy
Content-Security-Policy: default-src 'self';
script-src 'self' 'unsafe-inline' 'unsafe-eval';
style-src 'self' 'unsafe-inline';
img-src 'self' data:;
font-src 'self' data:;
connect-src 'self';
frame-ancestors 'none'
# Protection XSS (legacy)
X-XSS-Protection: 1; mode=block
# Politique de référents
Referrer-Policy: strict-origin-when-cross-origin
# Permissions Policy
Permissions-Policy: geolocation=(), microphone=(), camera=()
Content Security Policy (CSP)
⚠️ Note: unsafe-inline et unsafe-eval sont nécessaires pour PrimeFaces/JSF qui génèrent des scripts inline. Une migration vers des nonces CSP est prévue dans une version future.
🔑 Gestion des Secrets
Secrets à Protéger
- KEYCLOAK_CLIENT_SECRET - Secret client Keycloak
- Clés de chiffrement - Si applicable
- Tokens API - Pour services externes
Bonnes Pratiques
✅ À FAIRE
- Utiliser des variables d'environnement pour tous les secrets
- Utiliser un gestionnaire de secrets (HashiCorp Vault, AWS Secrets Manager)
- Régénérer les secrets régulièrement (rotation)
- Utiliser des secrets différents pour dev/staging/prod
- Auditer l'accès aux secrets
❌ À NE JAMAIS FAIRE
- ❌ Committer des secrets dans Git
- ❌ Hardcoder des secrets dans le code
- ❌ Partager des secrets par email/Slack
- ❌ Utiliser des secrets par défaut
- ❌ Logger des secrets
Vérification dans Git
# Vérifier qu'aucun secret n'est présent
git secrets --scan
# Nettoyer l'historique si nécessaire
git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch src/main/resources/application-dev.properties" \
--prune-empty --tag-name-filter cat -- --all
🚨 Vulnérabilités Connues
Critiques Corrigées (v1.0.0)
| ID | Vulnérabilité | Statut | Correction |
|---|---|---|---|
| SEC-001 | Secret Keycloak en dur | ✅ Corrigé | Supprimé du code |
| SEC-002 | TLS verification=none en dev | ✅ Corrigé | Activé required |
| SEC-003 | Exposition erreurs backend | ✅ Corrigé | Messages génériques |
| SEC-004 | Logging données sensibles | ✅ Corrigé | Logs anonymisés |
| SEC-005 | Cache tokens illimité | ✅ Corrigé | Limite 10,000 |
| SEC-006 | Cookie Secure=false | ✅ Corrigé | Activé en prod |
Risques Résiduels
| Risque | Niveau | Mitigation |
|---|---|---|
| Dépendance PrimeFaces inline scripts | Moyen | CSP avec unsafe-inline |
| Session fixation | Faible | Régénération session à login |
📢 Signalement de Vulnérabilités
Processus de Signalement
Si vous découvrez une vulnérabilité de sécurité:
- NE PAS créer d'issue publique
- Envoyer un email à: security@lions.dev
- Inclure:
- Description détaillée de la vulnérabilité
- Étapes pour reproduire
- Impact potentiel
- Version affectée
- Preuve de concept (si applicable)
Délais de Réponse
- Accusé de réception: 24 heures
- Évaluation initiale: 72 heures
- Correctif critique: 7 jours
- Correctif haute priorité: 30 jours
Récompenses
Nous proposons un programme de Bug Bounty pour les vulnérabilités critiques validées. Contactez security@lions.dev pour plus de détails.
📊 Conformité
Standards de Sécurité
- OWASP Top 10 2021: ✅ Conforme
- OWASP ASVS Level 2: ✅ Conforme
- CWE Top 25: ✅ Vérifié
Audits de Sécurité
| Date | Type | Résultat | Rapport |
|---|---|---|---|
| 2025-12-17 | Interne | Pass | docs/audit-2025-12.pdf |
Tests de Sécurité
Automatisés (CI/CD)
- Dependency Check: OWASP Dependency-Check Maven plugin
- SAST: Spotbugs Security Plugin
- Secrets Scanning: GitGuardian
Manuels (Périodiques)
- Pentesting: Annuel
- Code Review: À chaque release majeure
- Configuration Review: Trimestriel
🛠️ Outils de Sécurité Recommandés
Développement
# Analyse de dépendances
mvn org.owasp:dependency-check-maven:check
# Analyse statique
mvn spotbugs:check
# Secrets scanning
git secrets --scan --recursive
Production
- WAF: Cloudflare, AWS WAF, ou ModSecurity
- IDS/IPS: Suricata, Snort
- Log Monitoring: ELK Stack, Splunk
- Vulnerability Scanner: Nessus, OpenVAS
📚 Références
Dernière mise à jour: 17 Décembre 2025 Contact Sécurité: security@lions.dev PGP Key: Disponible sur demande