Politique de sécurité
Mesures techniques et organisationnelles mises en œuvre par Menzil Immobilier pour protéger vos données, conformément à l'article 32 du RGPD et à l'article 23 de la Loi 09-08.
Signaler une vulnérabilité
Vous avez découvert une faille de sécurité sur menzil.ma ou pro.menzil.ma ? Merci de nous en informer de manière responsable : security@menzil.ma — nous répondons sous 48 heures ouvrables et nous engageons à ne pas engager de poursuites pour divulgation de bonne foi.
Sommaire
- Cadre légal et périmètre
- Chiffrement des données
- Authentification et gestion des identités
- Contrôle d'accès et autorisations
- Surveillance, logs et détection d'anomalies
- Sauvegardes et continuité de service
- Tests de sécurité et revue de code
- Gestion des incidents et violations de données
- Divulgation responsable (Responsible Disclosure)
- Sécurité chez nos sous-traitants
- Périmètre hors-scope
- Amélioration continue
1. Cadre légal et périmètre
La présente politique décrit les mesures de sécurité appliquées par Menzil Immobilier conformément aux obligations légales suivantes :
- RGPD Art. 32
- Règlement (UE) 2016/679 — obligation de mettre en œuvre des mesures techniques et organisationnelles appropriées pour assurer un niveau de sécurité adapté au risque, notamment la pseudonymisation et le chiffrement, la résilience des systèmes et la capacité à rétablir la disponibilité des données.
- Loi 09-08 Art. 23
- Loi marocaine relative à la protection des données à caractère personnel — obligation de prendre toutes précautions utiles pour préserver la sécurité des informations et empêcher qu'elles ne soient déformées, endommagées ou communiquées à des tiers non autorisés.
- RGPD Art. 25
- Privacy by Design et Privacy by Default — la sécurité est intégrée dès la conception de chaque fonctionnalité, et les paramètres les plus protecteurs de la vie privée sont appliqués par défaut.
- NIS 2 (Directive EU 2022/2555)
- Bien que Menzil n'entre pas dans le périmètre direct de la Directive NIS 2, ses principes de gestion des risques cyber sont pris comme référence pour les mesures organisationnelles.
Périmètre de la politique
- menzil.ma — site public (acheteurs, vendeurs, locataires, investisseurs)
- pro.menzil.ma — outil interne agents (accès restreint, authentification obligatoire)
- APIs et webhooks — endpoints Meta Cloud API WhatsApp, Supabase Edge Functions, API Routes Next.js
- Agents IA — pyramide Menzil Org (413 agents L0-L5) exécutés via API Anthropic
2. Chiffrement des données
2.1 Chiffrement en transit
| Protocole | Version | Application | Remarques |
|---|---|---|---|
| TLS | 1.3 (1.2 minimum) | Toutes les communications entre clients et serveurs (menzil.ma, pro.menzil.ma, APIs) | HSTS (HTTP Strict Transport Security) activé avec preload — durée 1 an |
| TLS | 1.3 | Communications entre Next.js et Supabase (PostgreSQL, Storage, Auth) | Connexions chiffrées end-to-end, certificats vérifiés |
| TLS | 1.3 | Webhooks Meta Cloud API (WhatsApp) entrants | Vérification de signature HMAC-SHA256 de chaque payload (secret WHATSAPP_APP_SECRET) |
| HTTPS | TLS 1.3 | Appels sortants vers APIs tierces (Anthropic, Resend, Groq, Mapbox...) | Validation des certificats, pas de skip de vérification SSL |
2.2 Chiffrement au repos
| Système | Algorithme | Périmètre | Gestionnaire de clés |
|---|---|---|---|
| Supabase (PostgreSQL) | AES-256-GCM | Toutes les tables de la base de données : contacts, biens, mandats, messages, transactions, documents | AWS KMS (Key Management Service) — clés gérées par Supabase/AWS, rotation automatique annuelle |
| Supabase Storage | AES-256 | Fichiers uploadés : photos de biens, documents PDF, bons de visite, brochures | AWS KMS |
| Vercel (fonctions serverless) | AES-256 | Logs applicatifs, variables d'environnement (secrets) | Vercel Secrets Encryption — clés isolées par projet |
2.3 Chiffrement applicatif supplémentaire
Certaines données à haute sensibilité font l'objet d'un chiffrement applicatif supplémentaire avant stockage en base de données :
- Tokens d'accès tiers (WhatsApp access token stocké dans system_settings) — chiffré avec une clé applicative distincte de la clé de base de données
- Tokens d'annulation de rendez-vous — CSPRNG (Cryptographically Secure Pseudo-Random Number Generator), 128 bits d'entropie minimum
- Références de signatures électroniques — hash SHA-256 des documents originaux et signés, stocké en clair pour vérification publique sur menzil.ma/verifier
3. Authentification et gestion des identités
3.1 Authentification des utilisateurs publics (menzil.ma)
| Méthode | Mécanisme | Sécurité |
|---|---|---|
| Magic Link email | Supabase Auth génère un lien OTP à usage unique (One-Time Password) envoyé à l'adresse email — valide 10 minutes | Aucun mot de passe stocké · Résistant au brute-force · Lien invalidé après usage ou expiration |
| Session JWT | JSON Web Token signé (HS256) par Supabase Auth, stocké en HttpOnly cookie (access_token + refresh_token) | HttpOnly + Secure + SameSite=Strict — inaccessible via JavaScript (protection XSS) · Rotation automatique des refresh tokens |
3.2 Authentification des agents internes (pro.menzil.ma)
| Méthode | Mécanisme | Sécurité |
|---|---|---|
| Magic Link email (même mécanisme) | Supabase Auth — lien OTP valide 10 minutes | Accès conditionné à la table users (rôle actif) — un compte inactif ne peut pas se connecter même avec un lien valide |
| Vérification de rôle | À chaque requête API : lecture du rôle et des permissions jsonb depuis la table users | Server-side uniquement — le client ne peut pas modifier son rôle |
| 2FA (optionnel) | TOTP (Time-based One-Time Password) activable par l'administrateur | Supabase MFA — codes TOTP RFC 6238 |
3.3 Politique de session
- Durée de session active : 1 heure (access token JWT)
- Durée refresh token : 30 jours (pro.menzil.ma) / 7 jours (menzil.ma)
- Révocation immédiate possible par l'administrateur (invalidation de toutes les sessions d'un utilisateur)
- Déconnexion automatique après inactivité de 4 heures sur pro.menzil.ma
4. Contrôle d'accès et autorisations
4.1 Row Level Security (RLS) Supabase
Toutes les tables Supabase sont protégées par des politiques de Row Level Security (RLS)— mécanisme PostgreSQL natif qui filtre les données au niveau de la base de données, indépendamment de la couche applicative. Même si le code applicatif contenait un bug, le RLS empêche tout accès non autorisé aux données d'autres utilisateurs.
Principe du moindre privilège
Chaque opération ne peut accéder qu'aux lignes dont l'utilisateur authentifié est propriétaire ou auxquelles son rôle donne explicitement accès. Il est impossible d'accéder aux données d'un autre agent ou d'un autre tenant par une simple manipulation d'identifiant.
4.2 RBAC — Matrice de permissions (pro.menzil.ma)
L'outil interne implémente un système de contrôle d'accès basé sur les rôles (RBAC) à 6 niveaux hiérarchiques, avec possibilité de surcharge granulaire par utilisateur (champ jsonb permissions).
| Rôle | Niveau d'accès | Périmètre typique |
|---|---|---|
| admin | Complet | Fondateur — accès illimité à toutes les fonctions, paramètres RBAC, facturation, logs d'audit |
| associe | Très étendu | Associés — accès à tout sauf paramètres RBAC |
| agent_senior | Étendu | Agents expérimentés — biens, contacts, pipeline, mandats, stats opé. |
| agent | Standard | Agents — limité à leurs propres biens, contacts, pipeline |
| stagiaire | Restreint | Stagiaires — lecture seule sur la plupart des modules |
| lecture | Minimal | Lecture seule — formation, consultation sans action |
4.3 Isolation multi-tenant (B2B)
Pour les agences partenaires utilisant pro.menzil.ma en mode B2B, un champ tenant_idest présent sur les 18 tables principales. Les politiques RLS s'assurent qu'un tenant ne peut jamais accéder aux données d'un autre tenant.
5. Surveillance, logs et détection d'anomalies
| Système | Périmètre surveillé | Durée de rétention des logs | Alertes |
|---|---|---|---|
| Sentry | Erreurs applicatives JavaScript (frontend et backend), stack traces, performance API | 90 jours | Alertes email en temps réel sur toute erreur non gérée |
| Vercel Logs | Logs des fonctions serverless (API Routes), erreurs de déploiement, métriques edge | 7 jours (logs temps réel) | Alertes déploiement et erreurs critiques |
| Supabase Logs | Requêtes PostgreSQL (lentes et erreurs), authentifications, accès Storage, Edge Functions | 7 jours (plan Pro) | Alertes sur taux d'erreur anormal et requêtes anormalement lentes |
| journal_activite (table interne) | Actions utilisateurs sensibles sur pro.menzil.ma : création/modification de biens, mandats, exports, accès paramètres, modifications RBAC | 5 ans (obligation légale LCB-FT Art. 23 Loi 43-05) | Revue manuelle hebdomadaire par l'admin |
Aucune donnée personnelle (email, numéro de téléphone) n'est inscrite dans les logs de monitoring tiers (Sentry, Vercel). Le scrubbing PII est activé automatiquement.
6. Sauvegardes et continuité de service
| Composant | Fréquence de sauvegarde | Rétention | Procédure de restauration |
|---|---|---|---|
| Base de données Supabase (PostgreSQL) | Continu — Point-in-Time Recovery (PITR) avec granularité à la seconde | 7 jours (plan Pro) — snapshots quotidiens complets conservés 7 jours | Restauration possible à n'importe quel point dans les 7 derniers jours via dashboard Supabase — RTO < 2 heures |
| Storage Supabase (photos biens, PDFs) | Réplication AWS S3 multi-AZ en temps réel | Conservation permanente (durée de vie des biens) — suppression manuelle uniquement | Réplication synchrone — disponibilité 99.9% garantie SLA |
| Code applicatif | Git — commits à chaque modification (dépôt privé GitHub) | Historique complet depuis le premier commit | Redéploiement depuis un commit précédent via Vercel en < 5 minutes |
Objectifs de continuité (SLA Menzil) :
RTO (Recovery Time Objective) : 2 heures maximum pour un incident majeur
RPO (Recovery Point Objective) : 1 heure maximum de perte de données acceptée
Disponibilité cible : 99,5% mensuel (hors maintenances planifiées)
7. Tests de sécurité et revue de code
7.1 Revue de code
- Tout nouveau code passant en production est soumis à une revue via la commande
/review(gstack) avant tout merge - Vérification systématique des points critiques : injection SQL, XSS, CSRF, IDOR (Insecure Direct Object Reference), exposition de secrets
- Analyse statique des dépendances via
npm audità chaque déploiement — alertes Dependabot activées sur GitHub
7.2 Tests de pénétration
Des tests de pénétration sont réalisés par un prestataire externe au minimum une fois par an, couvrant :
- Les 10 catégories OWASP Top 10 (2021)
- Bypass d'authentification et contournement de RLS
- Injections (SQL, NoSQL, SSTI, SSRF)
- Exposition de l'API (BOLA, BFLA, BOPLA — OWASP API Security)
- Sécurité des webhooks WhatsApp (vérification HMAC)
Les rapports de pénétration anonymisés sont disponibles sur demande des clients B2B (pro.menzil.ma) dans le cadre du droit d'audit DPA.
7.3 Programme Dependabot
Menzil utilise Dependabot (GitHub) pour surveiller les vulnérabilités connues dans les dépendances npm. Les correctifs de sécurité sont appliqués dans les 72 heures pour les vulnérabilités critiques (CVSS ≥ 9.0) et 7 jours pour les vulnérabilités élevées (CVSS ≥ 7.0).
8. Gestion des incidents et violations de données
En cas de violation de données à caractère personnel (data breach), Menzil suit le protocole ci-dessous, conformément aux obligations des articles 33 et 34 du RGPD et de l'article 32 bis de la Loi 09-08 :
8.1 Détection et qualification
| Phase | Délai | Actions | Responsable |
|---|---|---|---|
| Détection | T+0 | Alerte Sentry ou signalement interne — identification de la nature de l'incident (accès non autorisé, fuite, corruption, perte) | Équipe technique |
| Confinement | T+1h | Blocage de l'accès compromis, révocation des tokens concernés, isolation du composant affecté | CTO / Admin |
| Qualification | T+4h | Évaluation de la gravité : données concernées, nombre de personnes, risques pour les droits et libertés | DPO + CTO |
| Notification CNDP | T+72h max. | Notification obligatoire à la CNDP si risque élevé — Art. 33 RGPD, Art. 32 bis Loi 09-08. Contenu : nature, catégories de données, mesures prises, personne de contact | DPO |
| Notification personnes | Sans délai après qualification | Si risque élevé pour les droits et libertés : notification directe aux personnes concernées (Art. 34 RGPD) avec description de l'incident et mesures recommandées | DPO |
| Post-mortem | T+7 jours | Analyse des causes, plan d'action correctif, mise à jour du registre des violations (Art. 33 §5 RGPD) | DPO + CTO |
Obligations contractuelles avec les sous-traitants
Tous nos sous-traitants sont contractuellement tenus de nous notifier toute violation de données nous concernant dans les 72 heures (Art. 28 §3 f RGPD). Cette obligation figure explicitement dans chaque DPA signé.
9. Divulgation responsable (Responsible Disclosure)
Menzil Immobilier encourage les chercheurs en sécurité à signaler les vulnérabilités découvertes de manière responsable. Notre politique de divulgation est la suivante :
9.1 Comment signaler
Canal de signalement : security@menzil.ma
Chiffrement PGP : clé disponible sur demande à la même adresse
Délai de réponse initial : 48 heures ouvrables
Délai de correction : variable selon criticité (critique : 72h, élevé : 7 jours, moyen : 30 jours)
9.2 Informations à inclure dans le rapport
- Description détaillée de la vulnérabilité et de son impact potentiel
- Étapes de reproduction (Proof of Concept) — sans exécution malveillante
- URL ou endpoint concerné
- Votre adresse email pour le suivi (facultatif si anonymat souhaité)
9.3 Périmètre couvert
| Périmètre | Statut |
|---|---|
| menzil.ma et tous ses sous-domaines | IN SCOPE |
| pro.menzil.ma | IN SCOPE |
| APIs publiques et webhooks (*.menzil.ma/api/*) | IN SCOPE |
| Agent WhatsApp (comportement IA) | IN SCOPE |
| Infrastructures des sous-traitants (Supabase, Vercel...) | OUT OF SCOPE — contacter directement le sous-traitant |
| Attaques par déni de service (DoS/DDoS) | OUT OF SCOPE |
| Ingénierie sociale sur les employés Menzil | OUT OF SCOPE |
| Spam ou phishing | OUT OF SCOPE |
9.4 Engagements de Menzil
- Aucune poursuite judiciaire pour les chercheurs agissant de bonne foi dans le cadre de cette politique
- Accusé de réception dans les 48 heures ouvrables
- Information sur l'état d'avancement de la correction tous les 7 jours
- Crédit public dans nos notes de sécurité (si souhaité par le chercheur)
- Pas de tests destructifs autorisés (suppression de données, perturbation de service, accès aux données de vrais clients)
10. Sécurité chez nos sous-traitants
La sécurité de vos données dépend aussi de celle de nos prestataires. Menzil sélectionne ses sous-traitants selon des critères de sécurité stricts et vérifie régulièrement leur conformité.
- Chaque sous-traitant doit fournir une certification de sécurité reconnue (SOC 2 Type II minimum pour les traitements critiques)
- Les rapports SOC 2 des prestataires clés (Supabase, Vercel, Anthropic) sont consultés annuellement
- En cas d'incident de sécurité chez un sous-traitant, Menzil en est notifié dans les 72 heures (clause contractuelle DPA)
Liste complète des sous-traitants avec leurs certifications : menzil.ma/sous-traitants
11. Périmètre hors-scope
Les éléments suivants ne relèvent pas de la responsabilité de sécurité directe de Menzil Immobilier :
- La sécurité des appareils personnels des utilisateurs (smartphones, ordinateurs) utilisés pour accéder à nos services
- La sécurité des réseaux Wi-Fi publics empruntés par les utilisateurs (nous recommandons d'utiliser un VPN sur les réseaux publics)
- Le contenu des emails reçus sur des serveurs de messagerie tiers (Gmail, Outlook...) contenant des magic links
- La sécurité intrinsèque des applications WhatsApp, Facebook ou Instagram utilisées par les clients pour communiquer avec Menzil
- Les données stockées localement par les utilisateurs (exports, captures d'écran, PDFs téléchargés)
12. Amélioration continue
- Revue annuelle
- Cette politique est révisée au minimum une fois par an, ou à la suite de tout incident de sécurité significatif ou changement d'architecture majeur.
- Formation des agents
- Tous les agents Menzil reçoivent une formation à la sécurité des données lors de leur onboarding et annuellement — sensibilisation au phishing, bonnes pratiques de gestion des mots de passe et des accès.
- Veille sécurité
- Suivi des CVE (Common Vulnerabilities and Exposures) affectant notre stack technique (Next.js, Supabase, Node.js), abonnement aux bulletins de sécurité Vercel, Supabase et GitHub.
- Audit externe
- Audit de sécurité externe annuel (pentest) par un prestataire indépendant. Les résultats corrigés sont disponibles sur demande des clients B2B dans le cadre du DPA.
- Contact sécurité
- security@menzil.ma — DPO : dpo@menzil.ma