Skip to content
StableAudienceSécuritéAudit banqueOwner@security-teamDernière revue2026-05-21

Gaps de sécurité connus

Principe de transparence

Cette page liste publiquement (en interne et aux auditeurs) les surfaces qu'on n'a pas encore renforcées. Sa raison d'être : éviter les angles morts, prioriser explicitement, fournir une preuve d'honnêteté à l'audit. Ne pas masquer un gap connu.

Format

ChampSens
GapDescription courte du manque ou de la faiblesse
SévéritéCritical / High / Medium / Low (CVSS-style)
ComposantService, app ou couche concernée
ImpactConséquence si exploité ou audité
Mitigation actuelleCe qui réduit le risque en attendant
PlanAction prévue + cible temporelle
TicketRéférence Jira (à créer)

Backend

B1 — CORS permissif

SévéritéHigh
Composantservices/auth/src/main.ts (et probablement autres)
ImpactToute origine peut faire des requêtes credentialed → fuite potentielle si XSS sur un site tiers
Mitigation actuelleCloudflare WAF en façade
PlanWhitelist explicite des origins (apps + dashboards Nex). Q3 2026.
Ticketà créer

B2 — Headers de sécurité manquants

SévéritéMedium
ComposantTous les services NestJS
ImpactPas de Helmet, pas de CSP, pas de X-Frame-Options, pas de Permissions-Policy. Surface XSS / clickjacking accrue.
MitigationCloudflare peut injecter certains headers à l'edge (à configurer)
PlanActiver Helmet sur tous les services + définir CSP par app. Q3 2026.
Ticketà créer

B3 — Admin endpoints ledger sans double-entrée

Critical (compliance)

Violation directe du principe de partie double. À résoudre avant tout audit bancaire formel.

SévéritéCritical (compliance)
Composantservices/ledger-wallets — endpoints PUT /accounts/:id/balance/*
ImpactModifications de solde sans écriture compensatoire = piste d'audit corrompue, violation principe double-entrée
Mitigation actuelleRestriction d'accès par rôle
PlanRefactor admin → toujours via intent + écriture ledger. Voir audit ledger 2026.
TicketNEX-331 (cf. compliance ledger)

B4 — ledgers.created_by non rempli

SévéritéHigh (compliance)
Composantservices/ledger-wallets
ImpactAudit trail incomplet — impossible de prouver qui a déclenché une écriture
MitigationLogs applicatifs JSON (mais pas dans la table immuable)
PlanPropager userId du caller jusqu'à l'insert ledger.
TicketNEX-332

B5 — Pas de correlation_id / request_id propagé

SévéritéMedium
ComposantTous les services (orchestrator → downstream)
ImpactTracing inter-services difficile, debug et forensics coûteux
MitigationLogs structurés JSON, recherche manuelle
PlanHeader X-Request-Id propagé partout + logué
TicketNEX-333

B6 — Maker-checker non enforced sur paiements bulk

SévéritéHigh (compliance)
Composantservices/service-catalogmass-payments
ImpactUne seule personne peut initier ET valider un paiement de masse → violation séparation des tâches
MitigationVolumétrie limitée actuellement
PlanWorkflow maker-checker enforced (DB check makerId != checkerId)
TicketNEX-334

Mobile

M1 — Pas de SSL pinning

SévéritéCritical
Composant3 apps mobiles (Nex, Nex Pro, Nex Business)
ImpactMITM possible si un root cert tiers est installé sur le device (corporate proxy, malware)
MitigationTLS 1.2+ + Cloudflare
Planreact-native-ssl-pinning ou Network Security Config natif. Q3 2026.
Ticketà créer

Critical

Toutes les apps mobiles concernées. MITM facile dès qu'un root cert tiers est installé sur le device.

M2 — Pas de jailbreak / root detection

SévéritéHigh
Composant3 apps mobiles
ImpactApp tourne sur device compromis sans signal — vol de PIN, replay QR plus facile
MitigationPIN vault SecureStore + lockout
Planjail-monkey ou équivalent. Comportement : warning soft sur Nex, blocage des opérations sensibles sur Nex Pro / Nex Business.
Ticketà créer

M3 — Code obfuscation à confirmer

SévéritéMedium
Composant3 apps mobiles
ImpactReverse engineering plus facile → compréhension de la logique métier et identification de surfaces d'attaque
MitigationHermes bytecode partiel
PlanVérifier / activer obfuscator Metro + Hermes.
Ticketà créer

M4 — Logs console en production possibles

SévéritéMedium
Composant3 apps mobiles
ImpactLeak d'information sensible via console.log non strippés
MitigationConvention "pas de log de secret"
Planbabel-plugin-transform-remove-console activé en build production.
Ticketà créer

Infrastructure & secrets

I1 — Rotation des secrets non formalisée

SévéritéHigh
ComposantDoppler — DB, providers, JWT, Firebase service accounts
ImpactSecret long-lived = surface d'attaque grandissante avec le temps
MitigationAudit logs Doppler, accès restreint
PlanPolitique formalisée par catégorie de secret (cf. secrets-management §5) + outillage rotation semi-auto.
Ticketà créer

I2 — MFA admin à confirmer / généraliser

SévéritéHigh
ComposantDoppler, AWS, Cloudflare, GitLab, Firebase
ImpactCompromission d'un compte admin = accès complet plateforme
MitigationMots de passe forts uniques
PlanMFA obligatoire (TOTP ou WebAuthn) pour tous les outils admin. Audit trimestriel.
Ticketà créer

I3 — Encryption at-rest RDS / Redis / EBS à confirmer

SévéritéMedium-High
ComposantRDS PostgreSQL, ElastiCache Redis, EBS EKS
ImpactSi AWS dérapage ou backup leak, données lisibles
MitigationRDS encryption activée par défaut depuis 2023 mais à confirmer pour les instances Nex
PlanAudit explicite et documentation du résultat.
Ticketà créer

I4 — Pas d'audit centralisé des actions admin internes

SévéritéHigh (compliance)
Composantservices/logs-reporting (service stub v0.0.1)
ImpactPas de trace pour reconstruire qui a fait quoi côté admin / compliance
MitigationLogs applicatifs dispersés
PlanImplémentation du service logs-reporting avec ingestion d'événements et requêtes compliance.
Ticketà créer

I5 — Localisation et chiffrement file-service à documenter

SévéritéMedium
Composantservices/file-service (Firebase Cloud Storage)
ImpactDocument KYC/KYB stockés sans documentation explicite de la région et du chiffrement
MitigationFirebase encryption at-rest par défaut + signed URLs
PlanDocumenter région des buckets, chiffrement at-rest, politique de rétention, droit à l'oubli RGPD.
Ticketà créer

I6 — mTLS inter-services K8s absent

SévéritéMedium
ComposantK8s nex-staging / nex-production
ImpactSi un pod est compromis, il peut potentiellement appeler d'autres services dans le même namespace
MitigationNetworkPolicy default-deny + JWT internal-service obligatoire
PlanÉvaluer service mesh léger (Linkerd) pour mTLS sans complexité. À chiffrer en valeur métier vs effort.
Ticketà créer

CI / CD / Supply chain

C1 — Pas de SCA continu (Snyk / Dependabot / Renovate)

SévéritéHigh
ComposantTous services et apps
ImpactVulnérabilités dépendances non détectées en temps réel
MitigationTrivy (containers), pnpm audit ponctuel
PlanIntégrer Renovate avec auto-merge si tests OK pour patch versions.
Ticketà créer

C2 — Pas de gitleaks en pre-commit / CI

SévéritéMedium-High
ComposantRepo Git monorepo
ImpactSecret pushé accidentellement
MitigationConvention dev + .gitignore
Plangitleaks pre-commit (husky) + CI. Q3 2026.
Ticketà créer

C3 — Pas de SAST en CI

SévéritéMedium
ComposantCode applicatif
ImpactPatterns à risque non détectés automatiquement
MitigationESLint security rules basiques
PlanÉvaluer Semgrep avec rules OWASP.
Ticketà créer

C4 — Pas de SBOM publié

SévéritéLow-Medium
ComposantTous les services
ImpactInventaire dépendances non auditable
MitigationTrivy peut générer SBOM
PlanGénérer SBOM CycloneDX au build et stocker (S3 dédié ou release artefact).
Ticketà créer

Compliance documentaire

D1 — Pas de mapping ANSSI / ISO 27001 / PCI-DSS formalisé

SévéritéMedium
ComposantDocumentation
ImpactAudits banque sans support de mapping → temps d'audit allongé
MitigationCette doc (sections /compliance/)
PlanSoA ISO 27001 gap analysis + mapping si scope PCI / ANSSI.
Ticketà créer

D2 — Pas de DPIA risk-engine

SévéritéMedium
Composantservices/risk-engine
ImpactRGPD : un scoring algorithmique sans DPIA est un risque réglementaire
MitigationDécisions explicables (rules-based, pas ML opaque)
PlanDPIA formalisée si RGPD applicable.
Ticketà créer

D3 — Pentest externe jamais réalisé

SévéritéHigh
ComposantPlateforme entière
ImpactSurface d'attaque jamais validée par un tiers indépendant
MitigationCode review interne, audits documentaires
PlanPremier pentest cible Q3-Q4 2026. Annuel ensuite.
Ticketà créer

D4 — Email security@paywithnex.com non provisionné

SévéritéLow
ComposantCommunication externe
ImpactDisclosure responsable difficile pour un chercheur externe
Mitigation
PlanProvisionner l'email + publier .well-known/security.txt (RFC 9116).
Ticketà créer

Suivi

  • Cette page est rafraîchie à chaque revue trimestrielle de sécurité.
  • Chaque gap doit avoir un ticket Jira ouvert dans le projet INFRA ou NEX selon le scope.
  • Quand un gap est résolu : déplacer la ligne vers une section "Historique" en bas (à créer) avec date de résolution et ticket fermé.

Historique

(À enrichir au fur et à mesure des résolutions.)

Nex — Plateforme fintech CEMAC