Baromètre · 2026 · v1.1

La cybersécurité dans l'économie sociale et solidaire, vue de l'intérieur.

Pendant neuf semaines, trente-cinq structures de l'ESS — associations, coopératives, SCOP, fondations, SAS à mission, établissements publics — ont vu leur surface d'attaque cartographiée et auscultée. Ce panorama compile ce que ces audits révèlent : un secteur où la conscience du risque numérique reste sous-dimensionnée par rapport à la sensibilité des données traitées, mais où des correctifs simples suffisent souvent à reprendre le contrôle.

AuteurEmmanuel Pinglier
Sitecode-ess.unjouruneapp.com
Périodemars – mai 2026
Échantillon35 organisations
Méthoderecon passive, OSINT, tests actifs sous autorisation
Lecture30–40 minutes
Publicdirection, DSI, CA, prestataires
24
Organisations
de 3 à 1 000+ salariés
4,9/10
Score médian
posture de sécurité globale
165+
Vulnérabilités identifiées
dont 15 critiques, 38 hautes
0
Coût médian de remédiation
pour faire passer la note de 4 à 7
§ 01 — AVANT-PROPOS

Pourquoi ce panorama existe

L'ESS porte des données particulièrement sensibles — bénéficiaires précaires, patients, donateurs, mineurs, données de santé — sur des infrastructures conçues avec des moyens contraints. Aucune étude ne mesurait jusqu'ici cet écart à grande échelle, à partir de matériel de terrain.

Quand on parle cybersécurité dans l'ESS, deux discours coexistent et s'évitent. Le premier, institutionnel, énumère les bonnes pratiques recommandées par l'ANSSI ou la CNIL et constate que « les associations devraient s'en préoccuper davantage ». Le second, vécu, vient des bénévoles et des prestataires : pas de budget, pas d'admin sys, des outils empilés sur dix ans, une dépendance lourde à des agences web qui livrent puis disparaissent. Entre les deux, peu de chiffres.

Ce baromètre s'appuie sur un matériau qui n'existait pas : trente-cinq audits pédagogiques conduits sur neuf semaines, sur des cibles allant de l'association de quartier au groupement public de plus de mille agents. Chaque audit a suivi le même protocole — reconnaissance passive, fingerprinting, énumération, tests actifs sous autorisation — et a produit un rapport, un email de signalement et une présentation de remédiation. L'agrégat de ces audits, c'est ce panorama.

Il ne prétend pas être représentatif au sens statistique : un échantillon de trente-cinq cibles, choisi par opportunité, ne se substitue pas à une enquête nationale. Mais il est suffisamment varié — par taille, secteur, statut juridique, choix techniques — pour faire émerger des récurrences solides. Quand dix-huit cibles sur trente-cinq laissent le DMARC en mode permissif, ce n'est plus une coïncidence : c'est un pattern. Et un pattern, ça se traite.

Ce que vous trouverez ici Une photographie objective de la surface d'attaque ESS en 2026, une typologie des vulnérabilités les plus fréquentes, une analyse des causes organisationnelles, et un guide pratique d'auto-évaluation à l'usage des dirigeants associatifs et coopératifs — pas un manuel pour techniciens.
Ce que vous n'y trouverez pas Aucun nom d'organisation auditée n'est cité dans ce document public. Les vulnérabilités décrites ont toutes été ou sont en cours d'être divulguées en privé aux structures concernées, conformément à une démarche de divulgation responsable (responsible disclosure).
§ 02 — MÉTHODE

Comment ces audits ont été conduits

Une approche en trois temps, pédagogique, alignée sur les standards de la profession (PTES, OWASP) et adaptée aux contraintes éthiques d'un travail sur des structures non commanditaires au départ.

Phase 0 — Cartographie

Identification de la surface visible : domaines, sous-domaines (via Certificate Transparency logs), pile technique (CMS, framework, hébergeur), services exposés, dépendances tierces, présence sur les réseaux sociaux et les dépôts publics (GitHub, npm).

Phase 1 — OSINT passive

Renseignement à partir de sources ouvertes uniquement, sans interaction intrusive avec la cible : configuration DNS, archives Wayback, fuites publiques (Have I Been Pwned), fichiers de configuration laissés en accès libre, indexation Google, métadonnées de documents.

Phase 2 — Tests actifs (autorisation)

Sondages réseau, exploitation de surface, validation d'hypothèses. Conduits uniquement après accord explicite de la structure, ou sur des comptes créés via les formulaires publics (logique d'inscription auto-suffisante). Aucune extraction de données réelles au-delà de la preuve de concept.

Le score /10

Chaque cible reçoit une note synthétique sur 10, dérivée d'une grille interne pondérant la sévérité des findings, le nombre de couches défensives présentes (WAF, MFA, segmentation, monitoring), et la qualité de l'hygiène générale (mises à jour, gestion des secrets, configuration TLS, headers HTTP, posture email). C'est un repère pédagogique, pas une métrique normative.

TrancheLecturePosture
0–3Faiblesses critiques accessibles sans effortCompromission probable à court terme
4Plusieurs vecteurs d'entrée non protégésExposition haute, remédiation prioritaire
5–6Bases en place, défauts de configurationNiveau attendu d'une PME sans RSSI
7–8Posture défensive cohérenteTop quart de l'échantillon ESS
9–10Hygiène professionnelle, défense en profondeurNon observé dans cet échantillon

Limites assumées

  • Échantillon non aléatoire. Les cibles ont été retenues par opportunité (intérêt pédagogique, accessibilité, diversité). Le résultat n'est pas extrapolable mécaniquement à l'ensemble du secteur ESS.
  • Profondeur variable. Certaines cibles ont fait l'objet de cinq sessions de creusage, d'autres d'une seule. Le score reflète ce qui a été observé, pas une certitude exhaustive.
  • Biais d'observabilité. Une cible bien défendue à l'extérieur peut cacher des défauts internes invisibles depuis Internet (postes Windows non patchés, réseaux Wi-Fi mal segmentés, PDF stockés en clair sur Google Drive).
  • Pas de mesure du facteur humain direct. Aucun phishing test n'a été conduit. Or, statistiquement, c'est le vecteur n°1 sur les PME françaises.
§ 03 — L'ÉCHANTILLON

Trente-cinq structures, un éventail volontairement large

Du collectif bénévole à l'établissement public, du recyclage à la santé mentale étudiante, de WordPress mutualisé à Kubernetes sur AWS. La dispersion est délibérée : repérer ce qui dépend de la taille, du secteur ou du statut, et ce qui ne dépend de rien.
# Profil de l'organisation Secteur Statut juridique Taille Score
01Recyclage / économie circulaire — multi-clients B2BÉconomie circulaireSAS (ESS)PME (~50)3
02Tech solidaire — plateforme de référencement nationalTech for goodAssociationStartup associative (~30)3
03Reconversion professionnelle d'impactInsertion / impactAssociation loi 1901Micro (3–5)4
04Aide alimentaire étudianteSolidarité étudianteAssociationPetite (bénévoles + 2–3)4,5
05Formation au numérique et insertionFormation / insertionGIE / coopérativeETI (~200)4
06Environnement et plaidoyer territorialEnvironnementAssociationPetite (~10 + bénévoles)6,5
07Anti-gaspillage alimentaire — collecte de surplusAlimentaireAssociationPetite (~15)5
08E-commerce solidaire — réemploi à grande échelleE-commerce solidaireSCICPME (~30)5
09Santé mentale étudiante — écoute pair-à-pairSanté mentaleAssociationMicro (bénévoles)4
10Service numérique coopératif et éthiqueTech coopérativeSCICPME (~20)8
11Chambre consulaire territorialePublic consulaireEPAGrande (>1 000)6,5
12Artisanat B2B export (WordPress managé)Artisanat / exportEntrepriseTPE5
13Action de solidarité intergénérationnelleLien socialAssociation reconnue d'utilité publiqueGrande (sal. + milliers de bénévoles)6
14Aménagement urbain métropolitainAménagement publicSociété d'économie mixtePME (~80)4
15Valorisation des déchets alimentairesÉconomie circulaireSAS (ESUS)PME (~50–100)4
16Logement temporaire pour jeunes actifsLogementSA (ESUS)PME (multi-résidences)5
17Santé cognitive et diagnostic médicalSanté / médico-socialAssociation loi 1901Petite6
18Tech for good et bénévolat de compétencesTech for goodAssociation loi 1901Petite (~10 + bénévoles)6
19Transport à la demande et mobilité partagéeMobilitéSASPME6
20Interprétariat et traduction médico-socialeMédico-socialSAS (ESS)PME (~50)3
21Plateforme associative médico-juridiqueMédico-social / juridiqueAssociation loi 1901Petite2
22Association nationale d'aide aux réfugiés et à l'asileSolidarité internationaleAssociation loi 1901Grande (plusieurs centaines de sal., multi-sites)3
23Fournisseur d'énergie renouvelableÉnergie / coopératifSCICETI (multi-régions)3
24Action sociale et hébergement d'urgenceAction socialeAssociation loi 1901Grande (plusieurs centaines de sal.)4
25Insertion par l'activité économiqueInsertion / propreté urbaineAssociation loi 1901PME (~100 sal.)2
26Cabinet de conseil pour représentants salariésConseil / représentationSCOPETI (multi-sites)1
27Carte cadeau éco-solidaire (commerçants durables)E-commerce solidaireSCIC SA (ESUS)Petite (milliers de commerçants partenaires)2
28Épicerie anti-gaspillage en réseauAlimentaire / réemploiSAS (ESS)PME (~50 magasins)5
29Fondation philanthropique de lutte contre la pauvretéSolidarité / mécénatFondationPetite6
30SaaS B2B d'alerte et de gestion de criseTech / sécurité civileSociété B2BPME5
31Entreprise à mission — rénovation globale de copropriétésRénovation / bâtimentEntreprise à missionPME7
32École de formation aux métiers du bâtiment durableFormation / bâtimentSASPME (multi-campus)7,5
33Association d'égalité des chances éducative (jeunesse)Insertion / éducationAssociation loi 1901PME (équipe IT structurée)6,5
34Plateforme d'engagement citoyen (jobs à impact, communautés)Engagement / impactAssociation loi 1901PME (multi-pays)6,5
35Cabinet d'études thermiques — rénovation énergétiqueRénovation / BETSASPetite7
Distribution par taille
Salariés équivalent temps plein
Micro (< 5)
4
Petite (5–30)
12
PME (30–200)
15
Grande (200+)
4
Statuts juridiques
Diversité des formes ESS
Association loi 1901
16
SAS / SA / ESUS / Fondation
11
Coopérative (SCIC, SCOP, GIE)
6
Public (EPA, SEM) / Société B2B
3
Données traitées (typologie)
Plusieurs catégories par cible
Bénéficiaires précaires
11
Données de santé
6
Mineurs / étudiants
5
Donateurs
7
Salariés / RH
19
§ 04 — PHOTO À L'INSTANT T

Ce que voit un attaquant en 2026

La distribution des scores, des stacks et des sévérités. L'image est moins catastrophique qu'on ne le craint, moins rassurante qu'on ne l'espère : le ventre mou domine, et le ventre mou n'a besoin que de pousser un peu pour basculer.
Distribution des scores de sécurité
Nombre d'organisations par tranche de score (sur 10)
00
11
32
53
84
55
96
37
18
09
010
Note : les scores intermédiaires (4,5 / 6,5 / 7,5) sont arrondis à la tranche inférieure pour la lisibilité de l'histogramme. Médiane : 5,0. Moyenne : 4,7. Source : 35 audits, mars–mai 2026.

Trois constats émergent

1. Le ventre mou domine, mais la queue basse s'alourdit. Avec l'élargissement de l'échantillon à trente-cinq cibles, neuf plafonnent entre 1 et 3 — incluant désormais une SCOP de conseil (SQL injection WLangage confirmée → RCE) et deux autres structures à 2/10 (M365 en passoire, profileur django-silk en production). Le ventre mou — score 4 à 6 — concentre 22 cibles. Au total, 89 % de l'échantillon se trouve sous le seuil 7.

2. Quatre cibles dépassent 7, une seule atteint 8. Le sommet est porté par une coopérative qui a fait du privacy by design un argument commercial. L'arrivée d'autres PME au-dessus de 7 — combinant frontal managé, hébergement edge, SSO professionnel et email durci en p=reject — confirme qu'une organisation avec une équipe IT moderne peut viser le haut du tableau. Le « plafond ESS » est culturel, pas structurel.

3. Le statut juridique compte moins que la culture interne. Une SCOP de conseil à 1/10 (SQLi WLangage exploitable) descend en-dessous d'une association environnementale à 6,5/10. Une SAS à 7,5/10 dépasse une SCIC à 5/10. Les déterminants structurants ne sont pas le statut, mais la présence ou l'absence d'un référent technique compétent dans la durée — et la capacité à choisir une stack managée plutôt qu'une dette WebDev de 2018.

Score moyen par taille
Effet taille modeste mais réel
Micro (< 5 sal.)
4,3
Petite (5–30)
4,8
PME (30–200)
5,0
Grande (200+)
5,5
L'écart taille reste modeste (+0,4/10 par tranche en moyenne) et n'atteint plus la zone 6+. L'arrivée d'organisations grandes mais peu défendues (action sociale, solidarité internationale) déplace la moyenne. La taille seule ne professionnalise pas la sécurité.

L'arrivée des structures « grand public » bouge les chiffres

L'élargissement de l'échantillon à des organisations à fort impact public — coopérative d'utilité collective, association nationale humanitaire, structures sociales et d'interprétariat — puis l'ajout d'une SCOP de conseil (1/10, SQLi WLangage exploitable), d'une structure d'insertion (2/10 sur le tenant M365) et d'une plateforme e-commerce solidaire (2/10, profileur de debug en prod) fait osciller le score moyen entre 4,7 et 4,9. Ce n'est pas que ces structures soient pires que les autres en proportion : c'est qu'elles sont plus grandes, traitent des données plus sensibles (mineurs, populations vulnérables, sociétaires, négociations sensibles), et exposent plus de surface (plateforme métier WLangage, app mobile, M365 multi-domaines). Le ratio « surface / capacité de défense » se dégrade avec la taille, dès lors que la professionnalisation de la sécurité ne suit pas.

Distribution par stack technique

CMS et frameworks observés
Plusieurs technos par cible — total > 35
WordPress (dont blogs/boutiques secondaires)
20
Drupal (dont 2 EOL)
5
Django / Wagtail / DRF
6
Webflow / no-code / SaaS managé
6
Microsoft 365 (tenant testé)
12
WebDev / WLangage (PC SOFT)
2
Odoo (managé + self-hosted)
3
Custom Node.js / Spring / Kotlin / WeWeb
5
Hébergement de référence
Hébergeur principal de la plateforme la plus exposée
OVH (mutu, dédié, VPS)
7
AWS (Lambda, EKS, S3)
4
o2switch / Gandi (mutu FR)
3
Cloudflare (frontal)
3
Managed (WordPress.com, Vercel, Webflow)
3
Autre / multi-cloud
2
Le poids de WordPress — et l'angle mort Microsoft 365 WordPress, seul ou combiné, est présent dans 57 % des organisations de l'échantillon. À elle seule, sa maîtrise (xmlrpc, hardening, REST API user enum) conditionne la posture sécurité d'une majorité du secteur. Mais l'élargissement des audits à la surface email — tenant Microsoft 365, Basic Auth Exchange Online, énumération GetCredentialType — révèle un angle mort symétrique : 34 % des structures auditées (12/35) ont un tenant M365, et dix d'entre elles laissent encore Basic Auth ouvert ou n'enforce pas la MFA. C'est désormais le vecteur n°1 de compromission PME en France (~80 % des incidents) et il échappe complètement à l'audit web classique.
§ 05 — ANATOMIE DES FAILLES

Distribution, sévérité, fréquence

Plus de 210 vulnérabilités identifiées sur trente-cinq audits. Dix-huit critiques, quarante-sept hautes, soixante-quinze moyennes, le reste en informationnelles. Au-delà des chiffres, des familles de défauts qui reviennent partout.
Distribution par sévérité
Échelle CRITIQUE / HAUTE / MOYENNE / FAIBLE — toutes cibles confondues
Critique
18
Haute
47
Moyenne
75
Faible / Info
70
Une faille « critique » signifie qu'un attaquant peut, à partir d'éléments accessibles publiquement, prendre la main sur un système ou exfiltrer des données significatives. Une faille « haute » nécessite généralement un effort de chaînage (kill chain) ou une condition supplémentaire.

Top 10 des familles de vulnérabilités

Plutôt que d'aligner des CVE individuelles, on regroupe les findings par cause technique. Ce tableau classe les patterns par fréquence d'apparition dans l'échantillon.

1. Admin / service interne sans VPN
18/35
2. DMARC permissif ou absent
18/35
3. Pas de rate limiting sur login / signup
16/35
4. API REST trop bavarde (PII, énumération)
15/35
5. M365 Basic Auth / MFA non forcé (énumération + spray)
12/35
6. WordPress xmlrpc.php ouvert
12/35
7. Headers de sécurité absents
11/35
8. CMS / serveur / framework en fin de vie (EOL)
11/35
9. Sous-domaines staging non nettoyés
10/35
10. Endpoint sans authentification (logique cassée)
8/35
11. IDOR / contrôle d'accès objet manquant
5/35
12. Trackers sans consentement (RGPD)
4/35
Lecture : « 18/35 » signifie que dix-huit des trente-cinq organisations auditées présentent au moins une instance de cette famille. Les couleurs reflètent la sévérité moyenne observée — un xmlrpc isolé est moyen, un xmlrpc + brute force admin sans MFA devient critique par chaînage. Nouveauté 2026 : la surface M365 (énumération + Basic Auth Exchange Online) émerge comme vecteur n°5 — testée systématiquement à partir de mai, elle révèle un risque BEC/ransomware non couvert par la posture web.

Carte de risque exploitabilité × impact

Une vulnérabilité ne se mesure pas à sa technicité, mais au croisement de la facilité avec laquelle un attaquant peut la déclencher (exploitabilité) et de ce qu'il peut en faire (impact). Cette carte synthétise où se concentrent les risques observés dans l'échantillon ESS.

Faible
Moyen
Élevé
Très élevé
Trivial
FaibleHeaders manquants, robots.txt
MoyenUser enum API, DMARC absent, DNS bavard
Élevéxmlrpc + brute force, signup oracle, CDN bypass
Très élevéEndpoint sans auth, n8n RCE, EOL exposé
Modéré
Très faibleMétadonnées PDF
FaibleS3 listing média, CORS *
MoyenBrute force admin, xmlrpc multicall
ÉlevéSQLi via paramètre, IDOR sur endpoints internes
Difficile
Négligeable
Très faibleVersions dans headers
FaibleRace conditions identifiées
Moyen0-day chaîné, social engineering ciblé
Lecture clé Le centre de gravité de l'échantillon ESS se trouve dans la diagonale haute-droite : des vulnérabilités triviales à exploiter (un script automatisé, ou un simple navigateur) avec un impact élevé à très élevé (compromission de comptes, exfiltration de données nominatives, prise de contrôle d'un service tiers). Ce sont les cibles de prédilection des attaques de masse — pas des attaquants ciblés, simplement des scanners qui ratissent Internet.

Les dix-huit critiques observées en 2026

Voici la liste exhaustive, anonymisée, des dix-huit vulnérabilités classées critiques dans cet échantillon. La majorité aurait pu être évitée par une configuration par défaut plus restrictive ; aucune ne demandait un attaquant sophistiqué.

#Type de failleVecteurImpact observé
C1IDOR : mot de passe en clair de tout utilisateur via APIEndpoint API « lookup compte » accessible à tout client authentifiéPlusieurs dizaines de milliers de comptes accessibles en clair, dont la direction. Account takeover sur interprètes, hôpitaux, administrateurs. Mots de passe stockés en clair côté serveur (champ pass_text).
C24 buckets S3 multi-tenants en upload sans authentificationPOST /upload sur 4 API (deux structures, prod + dev) délivrant des pre-signed URLs sans aucun contrôleUpload arbitraire avec content-type contrôlable → XSS stockée servie depuis le domaine de l'API. Buckets public-read. Une même brique de code partagée entre deux structures = même faille dans les deux.
C3Pipeline de mise à jour APK mobile avec mot de passe client-sidePanneau d'administration WebDev/WinDev exposé sur Internet, mot de passe hardcodé dans le JavaScript de la page. Vérification 100 % côté client.Supply chain mobile : un attaquant peut publier un APK malveillant qui sera distribué automatiquement à tous les utilisateurs de l'application (interprètes, hôpitaux, médico-social).
C4Fuite massive de PII via DDP Meteor non authentifiéMéthodes getPersonById, getAllPersonsByEmail, getQuestionnaire, downloadfile appelables sans aucune sessionPlusieurs milliers de profils sociétaires extractibles, dont mineurs (date de naissance, adresse), IBAN et BIC en clair, numéros de téléphone, références bancaires. Confirmé sur trois profils réels par chaînage cooperativeId → personId.
C5Hébergement de fichiers et admin Joomla 3.x EOL exposéCMS et composants tiers (K2, JCE, Fabrik) en fin de vie depuis 2023, panneau /administrator/ ouvert sans WAF ni IP filteringPlusieurs listes publiquement énumérables, surface multiple de SQL injection et de path traversal connues, plus aucun patch officiel. Cible : association nationale d'aide aux réfugiés (centaines de sal., données médico-juridiques de demandeurs d'asile).
C6SQL injection avec bypass de parser (Apache Superset self-hosted)Compte « guest » par défaut + bypass ts_stat() + chr()Extraction de plusieurs dizaines de milliers de comptes (emails, noms, hashes bcrypt, téléphones, devTokens JWT staff).
C7n8n self-hosted, trois CVE CVSS ≥ 9,9Webhook content-type confusionRCE non authentifiée (mitigée par UUIDs non découvrables — chance, pas posture défensive).
C8RDS Gateway Windows exposé, NTLM info disclosure, sans rate limiting/Rpc/rpcproxy.dll NTLM révèle domaine AD, hostname, OSSurface complète de password spray sur des centaines d'usernames identifiables via LinkedIn. Aucun lockout observé sur 8 essais. Cible : association d'action sociale.
C9WordPress en version obsolète > 18 moisCMSDéfacement, takeover, ransomware. Multi-cible.
C10Origin server non protégé derrière CDNDNS history, balise meta generatorBypass complet du WAF Cloudflare en 30 secondes.
C11Stack obsolète, 22 CVE cumuléesComposants tiers EOLCompromission probable.
C12Réunions Zoom à URL permanente avec mot de passe en clair dans le DNS publicDNSZoom-bombing, écoute d'entretiens RH.
C13Kill chain : API publique → emails → admin Django sans rate limitingChaîneCompromission back-office RH d'une PME logement.
C14Kill chain : brute force admin → file manager (RCE elFinder) → .env / .gitChaîneCompromission serveur de formation, données apprenants.
C15DoS HTTP/2 sur origin non protégéConfiguration nginxIndisponibilité d'un service avec un VPS à 5 €/mois.
C16SQL injection sur portail métier WLangage / WEBDEV legacyFormulaire login d'un portail PC SOFT WEBDEV exposé sur Internet. Payloads triviaux ' OR 1=1-- et admin'-- déclenchent erreurs MySQL 1064 affichées dans une popup JavaScript.Stack technique révélée (IP DB interne, fragment de requête SQL, accès natif MySQL sans paramétrage). Vecteur RCE documenté via fonctions WLangage ExeRun()/LanceAppli(). Cible : cabinet de conseil pour représentants salariés (plusieurs centaines de consultants).
C17Profiler django-silk exposé en production sans authentification/silk/requests/, /silk/profiling/, /silk/cleardb/ accessibles sans login. Des milliers de requêtes loggées avec POST bodies et URLs en clair.Vol direct de cartes cadeaux : les URLs « magic link » contenant le numéro de carte en clair sont leakées en continu. Téléchargement immédiat du PDF de carte sans authentification. Endpoint destructif /silk/cleardb/ ouvert. Cible : plateforme de carte cadeau éco-solidaire (milliers de commerçants partenaires).
C18Basic Auth Exchange Online + MFA contournable + énumération massiveIMAP / SMTP submission / EAS / EWS annoncent AUTH=PLAIN et BasicChallengeAdded: True. ROPC OAuth ne renvoie pas AADSTS50079 mais AADSTS50126 (wrong password) → MFA non forcé en première ligne. Des dizaines de requêtes GetCredentialType sans throttling, OneDrive personnels énumérables par UPN, Smart Lockout absent à 8 essais.Compromission par password spray sans aucun MFA challenge. Vecteur n°1 BEC/ransomware pour les PME M365 depuis 2022. Cible : structure d'insertion (~100 salariés, plusieurs dizaines de comptes M365 cartographiés en quelques minutes). Le score web (~6/10) ne reflète pas le risque réel.
Trois nouvelles critiques emblématiques (C16–C18) Les trois critiques découvertes lors de la dernière série d'audits illustrent trois angles morts récurrents de l'ESS : (1) le portail métier en WLangage/WEBDEV de 2015 qu'aucun audit ne couvre parce que personne ne se souvient de son existence (C16) ; (2) l'outil de debug oublié en production qui transforme un SaaS solidaire en passoire à PII et magic links (C17) ; (3) la surface Microsoft 365 — Basic Auth, MFA non forcé, énumération sans throttling — qui rend caduc tout durcissement web (C18). Sur les dix-huit critiques recensées, treize sont reproductibles avec un navigateur, curl, et la lecture du code JavaScript public.
« Le problème n'est pas la qualité technique des outils choisis — qui sont souvent excellents — mais leur exposition publique sans contrôle d'accès périmétrique. » Observation cross-audits
§ 06 — CAUSES RACINES

Pourquoi ces failles existent — et pourquoi elles persistent

Les vulnérabilités techniques sont des symptômes. Les causes sont organisationnelles, contractuelles, culturelles. On les retrouve dans presque toutes les structures auditées, indépendamment du statut juridique ou de la taille.

1. Pas d'admin système dédié

Très fréquent · 25 / 35 cibles

Les outils sont déployés par un développeur, un bénévole, un stagiaire, un prestataire ponctuel — puis oubliés. Personne ne surveille les mises à jour ni la surface d'exposition. Trois ans plus tard, le service tourne sur une version EOL connue de tous les scanners.

Symptômes : ownCloud 2015, Dolibarr 2015, PHP 5.6, Lotus Domino 9, Drupal 9 EOL.

2. Exposition par défaut

Très fréquent · 23 / 35 cibles

Les services sont exposés sur Internet sans VPN ni restriction d'IP, parce que c'est plus simple pour le staff distribué et les bénévoles. cPanel, RabbitMQ, Vaultwarden, panels admin Django — tout finit en .assoc.fr accessible à toute la planète.

Symptômes : VPN web UI publique, RabbitMQ management, gestionnaires de mots de passe.

3. Shadow IT

Fréquent · 15 / 35 cibles

Utilisation de comptes personnels ou institutionnels externes pour des besoins de l'organisation : Zoom personnel, Google Forms, Drive partagé, Trello d'un autre employeur. Les données sortent du périmètre maîtrisé sans qu'aucune décision n'ait été prise.

Symptômes : Google Forms pour recrutement bénévoles, Zoom universitaire pour entretiens.

4. Sous-domaines fantômes

Fréquent · 14 / 35 cibles

DNS créés pour un besoin ponctuel — staging, CDN d'agence, campagne marketing — jamais nettoyés ensuite. Ils restent indexés dans les Certificate Transparency logs, exploitables des années plus tard pour du subdomain takeover.

Symptômes : sept sous-domaines inutiles sur une cible, vingt-cinq sur une autre.

5. Le développeur est parti

Fréquent · 12 / 35 cibles

Le prestataire ou le bénévole qui a monté l'infrastructure n'est plus là. Les mots de passe d'admin sont chez lui, dans son gestionnaire perso. Personne ne sait maintenir, encore moins moderniser. Le service continue de tourner — jusqu'à la première CVE qui mord.

Symptômes : sites WordPress 2018 inactifs, ERP custom sans documentation.

6. Budget sécurité = 0 €

Universel · 35 / 35 cibles

Aucune ligne budgétaire dédiée à la sécurité. Pas d'audit annuel, pas de bug bounty, pas de SOC, pas de SIEM. Quand un incident survient, on improvise — souvent dans l'urgence, parfois pendant le week-end. Le coût d'un incident dépasse alors l'investissement annuel qu'aurait coûté sa prévention.

Le coût moyen d'un incident PME en France (2024) : 50 000 à 200 000 €.

7. Multi-tenancy mal maîtrisée

Occasionnel · 4 / 35 cibles

Une même plateforme sert plusieurs clients (b2b solidaire, plateforme mutualisée, Moodle multi-écoles). L'authentification est globale, mais la segmentation des données reste imparfaite. Un client peut, sous certaines conditions, accéder aux données d'un autre.

Symptômes : même code partagé entre deux structures, même faille dans les deux.

8. Dépendance au prestataire

Fréquent · 18 / 35 cibles

L'organisation n'a aucune visibilité sur la sécurité du code livré par l'agence web. Le contrat ne prévoit ni audit, ni mises à jour de sécurité, ni période de garantie. Une fois la facture payée, plus personne ne touche au code — sauf un pentester quelques années plus tard.

Symptômes : code livré 2020, jamais mis à jour, vulnérabilités cumulées.

Facteurs aggravants spécifiques à l'ESS

FacteurMécanismeConséquence
Turnover des bénévoles Les comptes ne sont pas révoqués, les mots de passe partagés ne sont pas renouvelés, la connaissance se perd à chaque rotation. Comptes orphelins, secrets toujours valides, dette de gouvernance.
Direction non-technique Les décideurs ne comprennent pas les risques numériques, priorisent les fonctionnalités visibles, considèrent la sécurité comme un sujet « pour plus tard ». Pas d'arbitrage budgétaire en faveur de la sécurité.
Données sensibles sous-estimées « On est une asso, qui voudrait nous attaquer ? » alors que les données traitées (santé mentale, précarité, mineurs, personnes âgées isolées) sont parmi les plus rentables sur les marchés noirs. Sous-estimation systémique de la valeur de l'actif informationnel.
Prestataires low-cost Agences web ESS-friendly qui livrent du WordPress ou du Drupal sans durcissement, à bas prix, sans contrat de maintenance sécurité. Stack par défaut, jamais durcie, vieillissante.
Pas de politique de mot de passe Mots de passe partagés par email ou messagerie, pas de gestionnaire central, pas d'authentification multifacteur. Une seule fuite suffit à compromettre l'ensemble.
RGPD perçu comme une contrainte Politique de confidentialité copiée d'un autre site, registre des traitements inexistant ou symbolique, pas de DPO opérationnel. Non-conformité formelle ; risque de sanction CNIL en cas d'incident.
« Le diagnostic n'est pas la stack est mauvaise, mais il manque un périmètre de sécurité. Les outils choisis sont bons — il faut juste arrêter de les exposer en clear-net. » Audit anonymisé
§ 07 — ARCHITECTURES COMPARÉES

Le no-code est-il plus sûr que le sur-mesure ?

Question récurrente dans les conseils d'administration. La réponse n'est pas binaire — mais les données sont nettes : ce qui n'est pas administré par l'organisation est très souvent mieux défendu que ce qu'elle administre elle-même sans compétence dédiée.
Approche Score moyen observé Avantages sécurité Risques résiduels
SaaS / no-code
WebflowAirtableOdoo.shWeWeb
6 – 8 / 10 Surface d'attaque serveur quasi nulle, mises à jour gérées, WAF inclus, hardening par défaut. Le vendor a plus à perdre que l'organisation. Données chez un tiers (souvent US), dépendance totale, configuration applicative parfois trop laxiste (Supabase RPC, Firebase rules).
Cloudflare en frontal
CDNWAFDDoS
7 – 8 / 10 WAF, protection DDoS, certificats SSL automatiques, masquage de l'origin. Effet immédiat sur le profil de risque. Contournable si l'origin est exposé directement (DNS history, balise meta). Une cible auditée avait Cloudflare et un origin DigitalOcean joignable : protection nulle.
Managed hosting
WordPress.comFirebaseVercel
5 / 10 Mises à jour automatiques, isolation réseau, support technique. Pour les petites structures, le meilleur rapport sécurité / effort. Configuration applicative encore sous responsabilité du client (xmlrpc, Firebase Security Rules, plugins WP). Le vendor ne sécurise pas le contenu.
Mutualisé classique
o2switchOVH webGandi
4 – 5 / 10 Isolation basique, certaines protections (Tiger-Protect chez o2switch), prix bas, hébergement souverain. Accès cPanel souvent exposé, PHP parfois ancien, pas de VPN, pas de WAF par défaut. Configuration laissée au client.
Cloud sur-mesure
AWSGCPDigitalOcean
3 – 6 / 10 Scalabilité, services managés (RDS, EKS), IAM granulaire, segmentation réseau. Quand bien fait, excellent. Complexité de configuration. Erreurs IAM coûteuses, secrets dans le code, services exposés à 0.0.0.0/0 par négligence. Forte hétérogénéité.
VPS / dédié self-hosted
OVH dédiéScaleway
2 – 4 / 10 Contrôle total, possibilité de durcissement profond, conformité fine. Le pire scénario observé. Nécessite un admin sys compétent dans la durée. Souvent abandonné après le déploiement initial. Toutes les cibles avec un score < 4 utilisent du self-hosted.

Ce que l'échantillon nous apprend

1. Le self-hosted sans admin sys est le pire scénario

Tous les scores ≤ 4 de l'échantillon impliquent du self-hosted vieillissant : une plateforme de jeu vidéo en PHP 5.6 abandonnée depuis 2018, un webmail Lotus Domino EOL depuis cinq ans, un ownCloud 2015 figé sur le filesystem avec sa base morte. Le contrôle total qu'offre le self-hosted devient une dette quand personne ne l'exerce.

2. Le no-code est sous-représenté dans les findings

Webflow, Odoo.sh, Wix, Airtable n'apparaissent presque jamais dans la liste des sources de critiques. Pas parce qu'ils sont parfaits, mais parce qu'ils n'ont quasiment pas de surface d'attaque côté serveur exposée à l'auditeur. Le risque est ailleurs : externalisation, vendor lock-in, RGPD.

3. Cloudflare est excellent — quand l'origin est protégé

Une cible auditée affichait fièrement le bouclier Cloudflare. La balise <meta name="generator"> de la page contenait l'IP DigitalOcean de l'origin. Trente secondes pour la trouver, accès direct au serveur, DoS HTTP/2 avec un VPS à 5 €/mois. Le WAF n'a servi à rien.

4. Les stacks custom ne sont pas plus vulnérables — elles demandent plus de discipline

Django, Laravel, Node.js bien faits sont solides. Les failles observées ne sont pas des CVE de framework, mais des oublis humains : une route oubliée sans @auth, un admin sans rate limiting, un CORS * laissé en dev. Le framework ne protège pas contre l'inattention.

Pour les conseils d'administration Si votre organisation fait moins de 30 salariés et n'a pas d'administrateur système dédié, le no-code et le SaaS managé sont presque toujours un meilleur choix de sécurité que le self-hosted, même si l'arbitrage économique est plus complexe (coût récurrent vs investissement initial). Une exception : Cloudflare en frontal d'un hébergement managé combine le meilleur des deux mondes pour un coût marginal.

Une arborescence de décision pour 2026

Pour une organisation qui démarre ou qui restructure son SI, voici l'arbre de décision qui maximise la posture de sécurité dans le contexte ESS :

Si vous êtes…ChoisirÉviter
Une asso de moins de 10 salariés, site vitrine WordPress.com (Business), Webflow, ou WP managé chez OVH/Infomaniak avec WAF VPS auto-hébergé, hébergement chez un bénévole
Une asso avec une plateforme métier (gestion de bénéficiaires, dons, événements) SaaS spécialisé ESS (HelloAsso, AssoConnect, Eudonet) ou solution open source managée Développement custom sans contrat de maintenance ≥ 3 ans
Une PME ESS avec data sensibles (santé, mineurs, précarité) Cloudflare frontal + hébergeur français certifié HDS si santé + MFA obligatoire Mutualisé classique exposé à l'Internet brut
Une coopérative ou EPA > 100 salariés Cloud managé (AWS/Azure FR) + DSI ou DPO opérationnel + audit annuel Stack custom sans architecte sécurité
§ 08 — SERVICES TIERS À RISQUE

Les outils qui apparaissent le plus souvent dans les findings

Treize services tiers concentrent l'essentiel des findings critiques et hautes. Aucun n'est mauvais en soi — tous, mal configurés ou exposés sans périmètre, deviennent des autoroutes d'attaque.
Service Problème observé Risque Sév.
WordPress xmlrpc.php Endpoint ouvert par défaut, brute force amplifié (jusqu'à 1 000 essais par requête), pas de rate limiting natif. Compromission admin, takeover de site. H
Apache Superset (self-hosted) Compte « guest » par défaut, SQL injection via bypass parser ts_stat() + chr(), JWT mal segmentés. Extraction de bases de données complètes — plusieurs dizaines de milliers de comptes observés sur une cible. C
n8n (self-hosted) Trois CVE CVSS ≥ 9,9 dont une RCE non authentifiée via webhook content-type confusion. Exécution de code à distance sur le serveur d'automatisation. C
Zoom (Personal Meeting ID) URLs avec mot de passe en clair laissées dans des entrées DNS publiques pour faciliter l'accès. Zoom-bombing, écoute clandestine d'entretiens RH ou de réunions sensibles. H
cPanel exposé Interface d'administration serveur accessible sur Internet sans VPN ni MFA. Compromission complète de l'hébergement par brute force ou phishing. C
Vaultwarden / Bitwarden self-hosted Gestionnaire de mots de passe d'organisation exposé sur Internet. En cas de compromission : tous les secrets de l'organisation, en une fois. C
IBM Lotus Domino 9 Webmail professionnel en fin de vie, plus de patches de sécurité depuis plusieurs années. Compromission email + pivot vers AD interne. H
Google Forms Données sensibles (candidats bénévoles, bénéficiaires) collectées sur infrastructure US, sans contrat ni DPA. Non-conformité RGPD, perte de contrôle des données. M
ownCloud 8.x abandonné Instance zombie, base de données déconnectée mais filesystem intact, dix ans de CVE non patchées si la DB est restaurée. Bombe à retardement — exploitable instantanément à la moindre restauration. H
Django admin sans rate limiting Panel d'administration métier sans django-axes, sans CAPTCHA, sans MFA, alimenté par les emails fuités via l'API publique. Compromission du back-office (RH, comptabilité, bénéficiaires). C
DRF root listing L'URL /api/v1/ liste toutes les routes disponibles — cartographie offerte de la surface API. Énumération exhaustive, accélération du fuzzing, exposition des endpoints internes. H
Supabase (defaults) /auth/v1/signup distingue comptes existants et nouveaux ; fonctions RPC appelables sans authentification ; PostgREST leake les noms de fonctions via les hints. Énumération d'utilisateurs, pollution de DB, cartographie de l'API interne. H
Pritunl VPN — UI publique Interface web d'admin VPN accessible sur Internet, oracle d'énumération auth_invalid_username, pas de rate limiting visible. Brute force d'identifiants, accès VPN, pivot vers le réseau interne. H
FreeSWITCH / BBB SIP Port 5060 exposé, INVITE accepté sans authentification — bypasse le mot de passe de la salle de visio et la salle d'attente. Écoute clandestine de visioconférences (cours, réunions médicales, entretiens RH). H
Meteor DDP (méthodes RPC) Méthodes serveur appelables via WebSocket DDP sans aucune authentification par défaut. getPersonById, downloadfile exploitables tant que le développeur n'a pas écrit son propre checkAuth. Fuite massive de PII (plusieurs milliers de sociétaires, IBAN, BIC, mineurs) sur une coopérative à sociétaires. C
WebDev / WinDev (PC SOFT) Logique de validation de mot de passe écrite côté navigateur, mot de passe en clair dans le bundle JavaScript. Pattern récurrent de la stack : la séparation client/serveur n'est pas naturelle au framework. Pipeline de mise à jour APK contournable en 30 secondes, supply chain mobile sur app médico-sociale. C
Joomla 3.x + composants tiers (K2, JCE, Fabrik) Joomla 3.x EOL depuis août 2023, composants tiers souvent encore plus anciens (Fabrik archivé fin 2024). Version disclosure massive (header K2, README.txt, manifests XML), CVE 2023–2024 non patchées. SQL injection (CVE-2024-30471), XSS, surface admin ouverte. Cible : association d'aide aux réfugiés. C
Laravel + endpoints API ad hoc Les frameworks ne forcent pas l'autorisation par objet. Quand un développeur écrit User::where('email', $request->email)->first() dans un contrôleur partagé, n'importe quel utilisateur authentifié récupère n'importe quel autre utilisateur. Aggravé par stockage du mot de passe en clair (pass_text). IDOR critique chez deux cibles, dont plusieurs dizaines de milliers de comptes interprètes/hôpitaux exposés. C
La règle qui résume tout Aucun de ces services n'est mauvais. Tous deviennent dangereux à partir du moment où ils sont accessibles sur Internet sans authentification forte (MFA), rate limiting, et mises à jour dans la durée. La seule décision qui change tout n'est pas le choix de l'outil, mais le choix de son périmètre d'exposition.
§ 09 — CAS EMBLÉMATIQUES

Trois récits de chaînes d'attaque réalistes

Anonymisés, mais reconstruits à partir d'audits réels de l'échantillon. Chaque récit illustre comment une chaîne de petites négligences, prises isolément non critiques, devient une faille systémique.
Cas A — La startup tech solidaire Score : 3 / 10 · Critiques : 2

Une association porte une plateforme de référencement de structures sociales, opérée pour le compte de plusieurs collectivités. Stack moderne — Node.js, PostgreSQL, Apache Superset pour le pilotage interne, n8n pour l'automatisation. Bonne idée, bonnes intentions, exécution technique soignée. Mais.

Surface exposée

Outre le site principal, deux outils internes sont accessibles sur Internet : une instance Superset destinée aux équipes (avec un compte « guest » oublié activé par défaut) et un n8n hébergé sur un sous-domaine standard. Tous deux dans des versions dépassées de plusieurs trimestres.

Chaîne d'attaque

[1] Découverte sous-domaine superset.* via Certificate Transparency
[2] Authentification en compte guest par défaut
[3] Bypass du parser SQL via ts_stat(chr(83)||...) + jsonb_object_keys()
[4] Extraction du schéma complet : plus de vingt clés top-level, dont password, passwordToken, devToken
[5] Filtrage par status='admin' : plusieurs centaines de comptes administrateurs identifiés
[6] Récupération des devToken = JWT signés HS256 valides pour l'API métier
Compromission complète : plusieurs dizaines de milliers de comptes utilisateurs accessibles, dont des données nominatives de bénéficiaires en situation de précarité.

Leçon

Les trois ingrédients de cette chaîne — un sous-domaine indexé, un compte par défaut activé, une version Superset trop ancienne — sont chacun corrigeables en quelques minutes. Aucun n'a été corrigé pendant trois ans. La compromission n'a pas demandé une attaque sophistiquée mais une lecture attentive de la documentation publique du logiciel.

Cas B — L'organisme de formation au numérique Score : 4 / 10 · Critiques : 1

Une coopérative de plusieurs centaines de salariés forme à la programmation des dizaines de milliers d'apprenants, opère des centaines de dépôts publics sur GitHub, un site vitrine impeccable sous Webflow et Cloudflare. La façade est exemplaire. Derrière, sept ans d'accumulation technique.

Le contraste

  • Vitrine : Webflow + Cloudflare = score 8/10.
  • GitLab interne : à jour, propre, configuré.
  • Toolbox métier : Laravel + Backpack v3 + elFinder 2.1.53 (2020) avec trois CVE dont une RCE 9.8.
  • Plateforme de jeu vidéo abandonnée : WordPress 5.x sur PHP 5.6, EOL depuis sept ans.
  • BBB de visioconférence : composant SIP (port 5060) qui accepte les INVITE sans authentification.

Chaîne d'attaque la plus directe

[1] Toolbox publiquement accessible toolbox.*.org/admin
[2] Pas de rate limiting · dizaines de milliers de tentatives possibles sans blocage
[3] Compromission via brute force (rockyou) ou via un GitHub leak (dump SQL avec hash admin craqué en 1s)
[4] Accès elFinder 2.1.53 (post-auth) — exploitation CVE-2020-7980 RCE
[5] Lecture .env + .git/ (les deux sont sur le serveur, 403 = ils existent)
[6] Credentials base de données apprenants
Exfiltration de données nominatives, certificats de formation, conventions OPCO.

Leçon

Le pattern « façade moderne, arrière-boutique en dette technique » est le plus fréquent de l'échantillon. Il s'installe quand l'organisation grandit plus vite que sa capacité à entretenir l'existant. Le site vitrine attire les médias et les financeurs ; les outils métier, eux, vieillissent dans l'ombre — jusqu'au jour où ils sortent au grand jour, par incident.

Cas C — La PME mobilité Score : 6 / 10 · Critiques : 0

Une centaine de salariés, plateforme SaaS multi-villes. Infrastructure AWS EKS, Terraform, ArgoCD, Sentry self-hosted, Trivy scan dans la CI. L'équipe DevOps est compétente, le périmètre réseau est rigoureux : plusieurs dizaines de sous-domaines en Certificate Transparency, une vingtaine d'outils DevOps accessibles uniquement aux salariés, IPs AWS scannées et toutes en 403.

Pourquoi pas de critique ?

Parce que les fondamentaux sont là. WAF, segmentation, IAM rigoureux, mises à jour régulières. Cinq sessions d'audit n'ont pas trouvé de chemin direct vers une compromission. Cela ne veut pas dire qu'il n'y a rien — cela veut dire que la barre est nettement plus haute que dans la moyenne ESS.

Ce qui reste à corriger

· VPN Pritunl avec UI web publique par défaut (config Terraform standard non restreinte par IP)
· CAPTCHA API custom : Swagger UI public, OAuth2 déclaré mais non enforced
· DNS bavard — chaque outil DevOps a son propre sous-domaine en clair plutôt qu'une zone interne
· Posture email faiblement durcie : DMARC p=none sur deux domaines, DKIM absent sur un
· Domaine legacy historique encore actif et réutilisable pour du typo-squatting

Leçon

Quand l'infrastructure est gérée par une équipe DevOps compétente, les vulnérabilités se déplacent : elles ne sont plus dans le serveur principal mais dans les services périphériques (VPN, CAPTCHA, monitoring) et dans la posture email. C'est la dernière marche : un score 6 bien construit demande maintenant un travail de finition pour atteindre 8. Pas un changement d'architecture.

Cas D — La PME de services médico-sociaux Score : 3 / 10 · Critiques : 1 — supply chain mobile

Une cinquantaine de salariés, plateforme d'interprétariat à destination des hôpitaux et des services sociaux. Site vitrine WordPress propre derrière un WAF mutualisé, REST API protégée, pas d'xmlrpc exposé, plugins à jour. La façade tient. À côté, l'application mobile pour les interprètes est servie par une infrastructure WebDev/WinDev, dont l'organisation a probablement sous-traité le développement.

Le pipeline de mise à jour de l'APK

Une page « Update mobile » accessible publiquement présente un panneau d'administration : upload Android APK, upload iOS IPA, modification des notes de version, fréquence de polling. L'accès est protégé par un mot de passe — saisi dans une boîte modale en JavaScript.

Chaîne d'attaque

[1] view-source: sur la page d'admin · Ctrl+F sur la variable JavaScript du mot de passe
[2] Lecture en clair de la variable WebDev contenant le mot de passe
[3] Saisie du mot de passe → accès au panneau d'upload
[4] La fonction de vérification client ne renvoie pas false en cas d'échec — l'AJAX part de toute façon
[5] Upload d'un APK signé (clé attaquant) remplaçant la version officielle
L'APK malveillant est distribué automatiquement à tous les interprètes lors du polling de mise à jour.

Pourquoi c'est emblématique

Le risque ne porte pas sur le site web — il porte sur l'infrastructure mobile invisible. Une supply chain attack mobile ne se voit pas dans un audit web classique : il faut chercher la console d'admin du dispositif de mise à jour. Les utilisateurs (interprètes médicaux) deviennent les victimes finales d'une faille que l'organisation ne soupçonne pas. La leçon : auditer non seulement le site mais aussi le canal de distribution des applications.

Cas E — La coopérative à sociétaires Score : 3 / 10 · Critiques : 1 — fuite massive de PII

Coopérative de plusieurs milliers de sociétaires, modèle SCIC, multi-régions. La plateforme métier — partagée avec d'autres coopératives sœurs — est bâtie sur Meteor, un framework Node.js qui expose, par défaut, des « méthodes RPC » accessibles via WebSocket DDP depuis le navigateur des sociétaires connectés.

Le défaut Meteor mal compris

Meteor invite à écrire du code rapide : on définit une Meteor.method('getPersonById', function(id) { return Persons.findOne(id); }) et le navigateur peut l'appeler. Le framework ne force pas le développeur à vérifier qui appelle. Si le check d'authentification est oublié — et il l'est très souvent quand le développeur compte sur la session client — la méthode est appelable par n'importe qui, y compris depuis l'extérieur de l'application.

Chaîne d'attaque

[1] Identification du sous-domaine de la plateforme métier via Certificate Transparency
[2] Connexion WebSocket DDP wss://métier.cible.fr/sockjs/... sans authentification
[3] Appel getAllPersonsByEmail("") · 1 profil retourné (oracle email)
[4] Appel getPersonForUniqueNationalNumberSelf("", coopId) · 1 personId par coopérative
[5] Appel getPersonById(personId) · profil complet : nom, naissance, adresse, mobile, email, IBAN, BIC, idCardNumber, coopératives, parts
[6] Chaînage par cooperativeId dans le retour · plusieurs milliers de profils énumérables
[7] Méthode downloadfile(coopId, docId) · téléchargement d'un PDF sans authentification
PoC validée sur trois profils réels — dont un mineur (date de naissance, adresse, tuteur légal).

Pourquoi c'est emblématique

Aucune CVE Meteor n'a été exploitée. Le framework n'est pas en cause : il est utilisé conformément à sa documentation. La faille est dans la convention de codage — un code qui « marche » fonctionnellement mais n'a jamais été audité du point de vue sécurité. Les données fuites incluent des données bancaires (IBAN/BIC), donc dans le périmètre RGPD article 9 (données financières) et un mineur (article 8). Le coût d'une notification CNIL pour un incident de cette ampleur dépasse de très loin le coût qu'aurait représenté l'ajout d'un if (!Meteor.userId()) throw new Meteor.Error('unauthorized') dans chaque méthode.

Cas F — La plateforme associative médico-juridique Score : 2 / 10 · Critiques : 1 — IDOR + mots de passe en clair

Plateforme associative à vocation médico-juridique, plusieurs dizaines de milliers d'utilisateurs (professionnels de santé, services sociaux, juristes). Stack Laravel + React, hébergement mutualisé français. Inscription ouverte, sans validation email, sans CAPTCHA — un attaquant peut se créer un compte en trente secondes.

L'endpoint qui ne devrait pas exister

L'API expose POST /api/client-all-acounts. La logique métier suppose que ce sont les administrateurs qui l'appellent, depuis leur back-office. Le contrôleur reçoit un email, fait User::where('email', $email)->first() et renvoie l'objet utilisateur complet. Aucune vérification d'autorisation par rôle. Et l'objet utilisateur retourné contient un champ pass_text — le mot de passe en clair.

Chaîne d'attaque

[1] Inscription via /api/signup · compte client actif immédiatement
[2] Récupération du JWT (durée de validité : 365 jours)
[3] Énumération via /api/send-pass · 200 = email existe, 500 = n'existe pas
[4] Appel POST /api/client-all-acounts {"email":"cible@..."}
[5] Réponse JSON avec pass_text = mot de passe en clair
Account takeover de tout utilisateur — interprète, hôpital, administrateur. Confirmé sur le compte de la direction (mot de passe trivial : 123456) et sur le compte de contact.

Pourquoi c'est emblématique

Deux fautes professionnelles cumulées : l'absence de contrôle d'accès objet (IDOR) et le stockage des mots de passe en clair (toute base professionnelle stocke des hashes salés). À elles deux, elles transforment une plateforme métier en répertoire de credentials directement utilisables — pour du credential stuffing massif, des interprètes hospitaliers étant susceptibles de réutiliser leur mot de passe sur leurs comptes hospitaliers. Le risque dépasse largement le périmètre de l'organisation.


Ce que ces six cas ont en commun

Six profils différents — startup associative, organisme de formation, PME mobilité, PME de services médico-sociaux, coopérative à sociétaires, plateforme associative médico-juridique — six scores différents — 3, 4, 6, 3, 3, 2 — et pourtant des patterns identiques :

  • Une façade défendable, qui rassure l'organisation et ses parties prenantes (site vitrine, certifications visibles, communication).
  • Une infrastructure métier moins surveillée, où s'accumulent les configurations par défaut, les versions vieillissantes, les endpoints internes pensés comme « pas accessibles » mais accessibles.
  • Une dépendance à un framework dont la sécurité dépend d'une discipline du développeur : Meteor exige un check d'auth manuel sur chaque méthode, Laravel n'oblige pas la vérification d'autorisation par objet, WebDev/WinDev ne sépare pas naturellement client et serveur.
  • Aucune compromission n'a été menée, mais les chaînes d'attaque démontrées tiennent en cinq étapes, accessibles avec un navigateur et la lecture attentive du JavaScript public. La barrière n'est pas technique — elle est juridique (le pentester s'arrête à la PoC).
  • Les données touchées ne sont pas anodines : sociétaires d'une coopérative, mineurs, demandeurs d'asile, interprètes médicaux, bénéficiaires d'aide sociale. Ce sont précisément les populations dont le droit à la protection de la vie privée est le plus fragile et dont l'exploitation aurait l'impact humain le plus élevé.
§ 10 — GUIDE POUR LES ORGANISATIONS

Que faire, dans quel ordre, à quel coût

La leçon transversale de ces audits est rassurante : la grande majorité des findings hauts et critiques se corrigent en moins d'une journée, à coût marginal. Voici l'ordre de priorité empirique, calibré sur ce qu'on a observé.

Les dix quick wins universels

Si vous ne devez en retenir que dix, retenez ceux-là. Ils s'appliquent à 80 % des cibles auditées et représentent la première journée de travail d'un référent technique sérieux.

1
Activer la MFA partout où c'est possible
Compte d'admin Microsoft 365 / Google Workspace, panels de CMS, gestionnaire de mots de passe, hébergeur, registrar DNS. Coupe à elle seule 95 % des password spray.
2 htous comptes
0 €natif
2
Restreindre par IP les panels d'administration
cPanel, phpMyAdmin, /wp-admin, /admin Django, RabbitMQ management, Vaultwarden, n8n, Superset. Tout ce qui n'a pas vocation à être public derrière une whitelist d'IP ou un VPN.
1 hpar service
0 €config
3
Configurer DMARC en p=reject
Un enregistrement DNS TXT. Bloque l'usurpation de votre domaine email — vecteur n°1 de la fraude au président et du phishing ciblé. Précédé par SPF et DKIM corrects. Guide pas à pas pour une association →
30 min+ test
0 €DNS
4
Déployer un gestionnaire de mots de passe organisationnel
Bitwarden Family / Teams, 1Password Business, Dashlane Pro. Élimine le partage par email/Slack. Bitwarden est gratuit pour les associations via leur programme nonprofit.
1 jdéploiement
0 – 5 €par user / mois
5
Mettre à jour ou éteindre les services EOL
Recenser tous les services en production. Pour chacun, vérifier la version et la date de fin de support. Tout ce qui est EOL : éteindre (pas seulement « débrancher ») ou migrer.
1–5 jselon parc
variable
6
Désactiver xmlrpc.php sur tous les WordPress
Plugin Disable XML-RPC, ou règle Apache/nginx, ou Cloudflare WAF rule. Ferme la porte au brute force amplifié et à un grand nombre de plugins offensifs.
15 minpar site
0 €plugin
7
Mettre Cloudflare (free) en frontal
WAF de base, protection DDoS, certificat SSL automatique, masquage de l'IP origin. Vérifier l'origin : si l'IP est encore joignable directement, le WAF est contournable.
1 hsetup + DNS
0 €plan free
8
Auditer les sous-domaines actifs
Lister via crt.sh, supprimer les CNAME orphelins, vérifier qu'aucun sous-domaine ne pointe vers un service externe désactivé (subdomain takeover).
2 hrecensement
0 €
9
Procédure d'offboarding des comptes
Quand un salarié, prestataire, ou bénévole part : checklist de révocation des accès. Microsoft 365, Google, GitLab, GitHub, Slack, Notion, gestionnaire de mots de passe.
0,5 jécrire la check-list
0 €
10
Sauvegardes 3-2-1 testées
Trois copies, deux supports, une hors site. Et surtout : tester la restauration tous les six mois. Une sauvegarde non testée n'est pas une sauvegarde, c'est un fichier optimiste.
1 jsetup + test
10–50 €/ mois

Roadmap par profil d'organisation

Au-delà des quick wins, voici une trajectoire de maturation typique selon la taille et la maturité.

Profil0–3 mois3–12 mois12–36 mois
Asso < 10 sal.
aucun référent technique
10 quick wins. Migration vers managed hosting (WordPress.com, Webflow). MFA M365. Audit annuel léger. Convention RGPD avec prestataires. Formation phishing du staff. DPO mutualisé. Plan de continuité d'activité (PCA) écrit. Test de restauration de sauvegarde annuel.
Asso 10–50 sal.
un référent à temps partiel
Quick wins. Cloudflare frontal. Inventaire des services tiers. Désactivation xmlrpc. Politique de mots de passe. Gestionnaire central. Migration des services EOL. Pentest annuel externe. Politique de gestion des accès (RBAC). Charte numérique signée par tous.
PME ESS 50–200 sal.
équipe IT (interne ou externalisée)
Audit complet de surface. Recensement des comptes admin. MFA sur tous les services critiques. SIEM léger ou SOC managé. Pentest annuel. Plan de réponse à incident. Tests phishing trimestriels. RSSI dédié ou mutualisé. ISO 27001 si appel d'offres l'exige. Bug bounty privé pour les apps métier.
Coopérative / EPA > 200 sal.
DSI structurée
Inventaire exhaustif (CMDB). Cartographie des données sensibles (RGPD). SOC 24/7 (interne ou managé). EDR sur les postes. Authentification SSO + MFA obligatoire. Plan de continuité testé. Cyber-assurance dimensionnée. Audit ANSSI ou équivalent.

Le risque oublié : email et facteur humain

L'audit web est un exercice nécessaire mais insuffisant. Les chiffres nationaux le rappellent : ~80 % des compromissions PME en France passent par le phishing, donc par l'email. Or, sur les trente-cinq cibles auditées, seules sept avaient une posture email correcte (DMARC en p=reject, DKIM signé, SPF strict). Et sur les douze structures testées sur leur tenant Microsoft 365, dix exposaient encore Basic Auth Exchange Online ou n'avaient pas forcé la MFA en première ligne.

Pour les organisations dont le profil de risque est dominé par l'email plutôt que par le web (Microsoft 365, équipe distribuée, échanges réguliers avec partenaires/financeurs/bénéficiaires), les priorités diffèrent :

  1. MFA Microsoft 365 ou Google Workspace sur tous les comptes — annule 95 % des password spray, qui sont eux-mêmes alimentés par l'énumération via GetCredentialType.
  2. DMARC p=reject pour bloquer l'usurpation du domaine.
  3. Politique de mots de passe + gestionnaire central pour éviter le partage informel.
  4. Test de phishing trimestriel avec restitution pédagogique au staff.
  5. Procédure d'offboarding écrite pour les comptes orphelins après départs.
L'investissement de loin le plus rentable Activer la MFA sur Microsoft 365 ou Google Workspace est, mesuré sur les trente-cinq cibles, l'action qui modifie le plus profondément le profil de risque pour le coût le plus faible. C'est gratuit, c'est natif, c'est immédiat. Si une seule action devait être retenue de tout ce panorama, c'est celle-ci.
§ 11 — GRILLE D'AUTO-ÉVALUATION

Vingt questions pour situer votre organisation

À lire en équipe — direction, référent technique, prestataire — pour éviter le biais d'auto-déclaration. Une réponse honnête vaut mieux qu'une réponse rassurante.

Identité et exposition

#QuestionRéponse idéale
01Avez-vous un référent technique nommément identifié et joignable en cas d'incident, 7 jours sur 7 ?Oui
02Connaissez-vous la liste exhaustive de vos sous-domaines actifs ? (vérifiable en 5 min via crt.sh)Oui
03Savez-vous combien de services tiers traitent des données de vos bénéficiaires/donateurs/salariés ?Oui, < 30
04Avez-vous un registre RGPD à jour (article 30) avec une date de dernière mise à jour < 12 mois ?Oui
05Avez-vous identifié les 3 catégories de données les plus sensibles de votre SI ?Oui

Authentification et accès

#QuestionRéponse idéale
06L'authentification multifacteur (MFA) est-elle obligatoire pour tous les comptes administrateurs M365 / Google ?Oui
07Utilisez-vous un gestionnaire de mots de passe organisationnel (Bitwarden, 1Password) ?Oui
08Existe-t-il une procédure d'offboarding écrite pour révoquer les accès quand quelqu'un part ?Oui
09Vos panels d'administration (CMS, hébergeur, base de données) sont-ils restreints par IP ou via VPN ?Oui
10Avez-vous des comptes administrateurs partagés entre plusieurs personnes ?Non

Email et fraude

#QuestionRéponse idéale
11Votre domaine email a-t-il un enregistrement DMARC en p=reject ?Oui
12Vos emails sortants sont-ils signés DKIM ?Oui
13Savez-vous repérer un email de fraude au président (CEO fraud) et avez-vous une procédure de double validation pour les virements > X € ?Oui
14Avez-vous mené un test de phishing interne dans les 12 derniers mois ?Oui

Maintenance et sauvegardes

#QuestionRéponse idéale
15Tous vos CMS, frameworks et serveurs sont-ils dans une version actuellement supportée ?Oui
16Avez-vous un mécanisme de sauvegarde 3-2-1 (3 copies, 2 supports, 1 hors site) ?Oui
17Avez-vous testé la restauration d'une sauvegarde dans les 6 derniers mois ?Oui
18Avez-vous un plan de réponse à incident écrit, même court (1 page) ?Oui
19Disposez-vous d'une cyber-assurance ?Oui (selon taille)
20Avez-vous mené un audit ou pentest externe dans les 24 derniers mois ?Oui

Lecture du score

Tranche
Réponses « idéales »
Diagnostic
Action prioritaire
Sereine
17 – 20 / 20
Posture professionnelle. Vous êtes dans le top quart ESS.
Maintenir, mesurer, partager les bonnes pratiques.
Active
12 – 16 / 20
Bases solides, défauts résiduels. Score équivalent à 6/10 dans ce panorama.
Quick wins 1 à 5, puis audit léger annuel.
Préoccupante
7 – 11 / 20
Plusieurs vecteurs d'entrée non protégés. Niveau du ventre mou de l'échantillon.
Les 10 quick wins en priorité absolue, dans les 90 jours.
Critique
0 – 6 / 20
Compromission probable à court terme. Score équivalent à 3 ou 4 dans ce panorama.
Audit externe immédiat, plan d'urgence, MFA en 48 h.
Lecture honnête Sur l'échantillon des trente-cinq audits, le score moyen serait probablement de 9–11 réponses idéales sur 20. Si votre organisation est à 14, elle est déjà au-dessus de la médiane ESS. Si elle est à 7, elle est dans la moyenne — ce qui n'est pas rassurant, mais n'est pas non plus une situation isolée.
§ 12 — GLOSSAIRE

Pour décoder le vocabulaire de la cybersécurité

Termes techniques utilisés dans ce panorama, traduits en français accessible. À conserver à portée de main pour les conseils d'administration et les comités de pilotage.
API REST
Interface permettant à des programmes (sites, applis mobiles, partenaires) de dialoguer avec un service. C'est la « porte arrière » qui sert souvent à transférer des données entre un site et une application mobile, par exemple. Mal protégée, elle peut révéler des données nominatives à toute personne qui sait l'interroger.
Brute force
Tentative automatisée de découvrir un mot de passe en essayant des millions de combinaisons. Une attaque est dite « amplifiée » quand elle peut faire plusieurs tentatives par requête (xmlrpc en WordPress permet 1 000 essais en une seule requête).
CMS (Content Management System)
Logiciel permettant de gérer un site web sans coder : WordPress, Drupal, Joomla, Wagtail. Les CMS sont à la fois la solution la plus simple pour avoir un site et la principale source de vulnérabilités quand ils ne sont pas maintenus à jour.
CDN / WAF
Content Delivery Network : réseau qui sert le contenu de votre site depuis le serveur le plus proche du visiteur. Web Application Firewall : pare-feu applicatif qui filtre les requêtes malveillantes. Cloudflare est le plus connu et offre les deux gratuitement.
Certificate Transparency (CT logs)
Registre public obligatoire de tous les certificats SSL émis sur Internet. Outil légitime pour la transparence, il permet aussi à n'importe qui de découvrir la liste de vos sous-domaines en 5 secondes — y compris ceux que vous croyiez « cachés » (staging, preprod, dev). À consulter via crt.sh.
CVE / CVSS
Common Vulnerabilities and Exposures : identifiant unique d'une faille de sécurité connue (exemple : CVE-2024-6387). Common Vulnerability Scoring System : score de gravité de 0 à 10. Au-delà de 9, on parle de critique.
DMARC / SPF / DKIM
Triplet d'enregistrements DNS qui authentifient vos emails et empêchent les usurpateurs d'envoyer des messages en se faisant passer pour votre domaine. p=reject est le réglage le plus protecteur. p=none ne bloque rien — il observe seulement.
EOL (End of Life)
Logiciel qui n'est plus supporté par son éditeur : pas de mises à jour de sécurité, même quand des failles sont publiées. PHP 5.6 est EOL depuis 2018. Drupal 9 est EOL depuis 2023. Maintenir un EOL en production équivaut à laisser une porte ouverte étiquetée « entrez ».
HSTS / CSP / X-Frame-Options
Famille des « security headers » : instructions envoyées par votre serveur au navigateur pour qu'il refuse certaines attaques (force HTTPS, bloque les scripts injectés, refuse l'inclusion en iframe). Ils sont gratuits, ajoutés en quelques minutes. Leur absence est un signal d'amateurisme.
Kill chain
Chaîne d'attaque : enchaînement de petites vulnérabilités, isolément non critiques, qui combinées permettent une compromission. Les pentesters cherchent les chemins les plus courts dans ce graphe d'opportunités.
MFA / 2FA
Multi-factor authentication : authentification à plusieurs facteurs. En plus du mot de passe, un code à usage unique (SMS, application Google Authenticator, clé physique YubiKey). Annule à elle seule 95 % des attaques par mot de passe volé.
OSINT (Open Source Intelligence)
Renseignement à partir de sources ouvertes, accessibles à tous : LinkedIn, Wayback Machine, registres DNS publics, Have I Been Pwned, Google. Les phases 0 et 1 d'un audit s'appuient exclusivement sur l'OSINT.
PII (Personally Identifiable Information)
Données à caractère personnel : nom, prénom, email, téléphone, adresse, photo, géolocalisation. Sous RGPD, leur traitement est encadré et leur fuite déclarable à la CNIL sous 72 h.
RCE (Remote Code Execution)
Exécution de code à distance : la pire des vulnérabilités, qui permet à un attaquant de faire tourner ses propres programmes sur votre serveur. Conduit généralement à une compromission complète et à du ransomware.
Rate limiting
Limitation du nombre de requêtes autorisées par minute, par utilisateur ou par IP. Empêche le brute force d'aboutir en multipliant le temps nécessaire par 1 000 ou 10 000. Sans rate limiting, un panel admin tombe en quelques heures de scan automatisé.
Sécurité par défaut / Privacy by design
Principe selon lequel un logiciel doit être sécurisé et respectueux de la vie privée à l'installation, sans configuration manuelle. À l'opposé, beaucoup de services exigent que l'utilisateur durcisse activement la configuration — sinon, il prend les défauts permissifs.
Self-hosted
Logiciel installé et exploité sur ses propres serveurs (par opposition à un service cloud managé). Donne le contrôle, mais exige une compétence d'administration système maintenue dans la durée.
Shadow IT
Outils, comptes ou services utilisés par le personnel sans validation officielle de l'organisation. Un Trello personnel pour gérer des bénéficiaires, un Drive partagé entre bénévoles, un compte Zoom pro de l'université d'à côté. Échappe à la cartographie et donc à la protection.
Subdomain takeover
Reprise de contrôle d'un sous-domaine orphelin pointant vers un service externe désactivé. Si campagne2019.assoc.fr pointe vers un Heroku abandonné, n'importe qui peut recréer ce Heroku et hériter du sous-domaine.
VPN
Virtual Private Network : tunnel chiffré entre l'utilisateur et le réseau de l'organisation. Dans un contexte de sécurité, sert à restreindre l'accès aux services internes — seules les personnes connectées au VPN peuvent atteindre /admin, par exemple.
xmlrpc.php
Endpoint hérité de WordPress, conçu pour permettre aux applications externes de poster des articles. Activé par défaut, il est devenu le vecteur de prédilection du brute force amplifié et de plusieurs familles d'attaques DDoS. À désactiver dans la quasi-totalité des cas modernes.
§ 13 — CONCLUSION

Trois enseignements transversaux

1. Le secteur ESS n'est pas en crise — il est en retard.

Aucune des organisations auditées n'est en perdition totale. Aucune n'a non plus la posture professionnelle qu'on attendrait d'une PME qui traite des données de mineurs ou de bénéficiaires précaires. La distance qui sépare le score médian observé (5/10) du score souhaitable (7/10) ne se mesure pas en années de chantier, mais en jours d'attention. Les cibles qui ont franchi le pas l'ont fait avec des budgets nuls ou symboliques.

2. Le risque n°1 n'est pas le pirate solitaire — c'est l'attaque de masse opportuniste.

L'imaginaire collectif associe la cybersécurité à des attaquants ciblés et sophistiqués. La réalité observée est plus prosaïque : des scanners automatisés ratissent Internet, repèrent les services obsolètes, tentent les mots de passe par défaut, monétisent ce qu'ils trouvent. Une organisation ESS n'est pas trop petite pour être attaquée — elle est trop visible pour ne pas l'être. La question n'est pas « si » mais « quand le scanner passera ».

3. Le facteur déterminant n'est pas la technologie — c'est la gouvernance.

Deux organisations avec la même stack peuvent avoir des scores radicalement différents selon qu'elles ont, ou pas, un référent technique nommément responsable, joignable, formé. Le contrat de prestation, la procédure d'offboarding, la décision d'arbitrage budgétaire, la clarté des rôles : ce sont des sujets de direction, pas de technique. La cybersécurité commence en conseil d'administration.


« Remédiation #1 : 0 €, 30 minutes, restriction d'IP sur les panels d'administration — élimine les findings hauts les plus courants. » Observation cross-audits, panorama 2026

Pour aller plus loin

Vous voulez situer votre propre organisation ? Notre auto-diagnostic cybersécurité ESS reprend les 16 dimensions clés du baromètre en 3 minutes, gratuit et anonyme. Voir aussi la page qui suis-je et les formations cybersécurité & numérique responsable.

Ce panorama est un état des lieux. La suite dépend des organisations elles-mêmes, de leurs prestataires, de leurs financeurs — et de la décision, partagée ou non, de prendre la sécurité au sérieux avant qu'un incident ne l'impose.