Note technique · Publié le 25 septembre 2026
Auditer une application de santé qui tourne depuis 2019
Des certificats sportifs pour des enfants atteints du syndrome de Marfan, un socle hors support, six failles majeures, et une sécurisation d'urgence avant la refonte.
On m'a contacté pour cette application de l'hôpital, et ça me tenait à cœur. Un enfant atteint du syndrome de Marfan ne peut pas faire n'importe quel sport à l'école, et un certificat d'inaptitude vague l'exclut de tout. L'application fait répondre trois spécialistes à un questionnaire, croise les réponses avec un référentiel d'activités scolaires, et produit un certificat qui dit, sport par sport, ce qui est autorisé. Douze centres hospitaliers, environ 200 à 260 certificats par an depuis 2019.
Le cœur métier tient en une cinquantaine de lignes, et l'aorte prime. Si aucune réponse de cardiologie n'autorise une activité, elle est interdite d'office. Sinon, une seule contre-indication suffit à la refuser. Toute l'intelligence est dans la table de correspondance entre réponses et autorisations, que le super-administrateur gère lui-même.
L'audit a trouvé un socle entièrement hors support, Symfony 4.2, PHP 7.2, PostgreSQL 9.6, Debian 9, avec 60 vulnérabilités publiées dont 5 critiques, aucune sauvegarde, et un envoi de mail cassé depuis 2022. Et six failles majeures, dont des certificats accessibles sans connexion, la base et Adminer ouverts sur Internet, et des mots de passe en clair. Le champ « identifiant hospitalier » contenait en pratique le nom et le prénom de l'enfant.
J'ai livré 23 pages de relevés reproductibles, six devis, un comparatif, un contrat de maintenance, une note pour le DPO et une checklist de recette par rôle. Puis une branche de sécurisation d'urgence, 12 commits et 69 tests verts, qui sort les certificats de la zone web, cloisonne les centres, ajoute un jeton anti-CSRF, retire le mot de passe des e-mails et durcit nginx.
Le déploiement suit trois fenêtres courtes, avec une répétition générale sur une réplique locale de la production et une recette par rôle. La suite proposée est une refonte vers Symfony 7, PHP 8, PostgreSQL 16 et Docker, avec un historique des certificats et un journal des actions, qui n'existent pas aujourd'hui.
C'est une application de santé. Sur le site, elle est présentée en étude de cas, avec des écrans reconstitués et aucune donnée réelle.