Versions et dépendances
6 constats, dont 1 critique. Symfony et PHP hors support, 14 dépendances vulnérables.
Voici ce que vous recevez à l’issue d’un audit Symfony : la structure, le niveau de détail et le ton d’un rapport réel.
Ce rapport est construit à partir de constats que nous rencontrons régulièrement. L’application décrite est un cas type : elle ne correspond à aucun client, et aucune donnée réelle n’y figure. Nos audits sont couverts par un accord de confidentialité.
Demande du client : savoir si l’application peut être reprise et remise à niveau, ou s’il faut la réécrire.
L’application fonctionne et rend le service attendu. Sa base de code est saine dans l’ensemble : une réécriture n’est pas justifiée.
Elle repose en revanche sur un socle qui n’est plus maintenu, et l’audit relève 29 constats, dont 3 critiques :
Les deux derniers se corrigent en quelques jours et doivent l’être sans attendre. Le premier demande une remise à niveau par paliers, à préparer par des tests.
Charge totale estimée : 25 à 35 jours, répartis sur 3 mois, hors améliorations de fond traitées ensuite en maintenance.
29 constats au total, dont 3 critiques.
6 constats, dont 1 critique. Symfony et PHP hors support, 14 dépendances vulnérables.
5 constats, dont 2 critiques. Secrets dans le dépôt, export non cloisonné.
7 constats. Logique métier dans les contrôleurs, code mort.
4 constats. Requêtes coûteuses, index manquants.
3 constats. Parcours critiques non testés.
4 constats. Déploiement manuel, sauvegardes non testées.
Lecture des états : « Critique » signale un risque avéré pour la production ou les données. « À corriger » demande une action dans les prochains mois. « À surveiller » est sans urgence, à traiter en maintenance.
La criticité d’un constat mesure le risque. La priorité d’une action fixe l’ordre de traitement, en tenant compte des dépendances entre actions.
Total P1 et P2 : 28 à 32 jours. Les actions P3 ne sont pas chiffrées : elles sont absorbées progressivement par la maintenance.
Chaque constat du rapport fait l’objet d’une fiche identique. Voici les trois fiches critiques.
Constat : L’application tourne sous Symfony 4.4 et PHP 7.4, deux versions qui ne reçoivent plus de correctifs de sécurité. 14 dépendances présentent des vulnérabilités publiées, dont 3 classées élevées.
Comment nous l’avons vu : Analyse du composer.lock, audit des dépendances, relevé des dépréciations dans les logs.
Risque : Les failles découvertes ne seront plus corrigées. Plus la montée de version est repoussée, plus elle coûte cher, et l’hébergeur finira par retirer cette version de PHP.
Recommandation :
Charge estimée : 10 à 14 jours Priorité : P2. Le risque est critique, mais la migration ne peut pas démarrer sans les tests de l’action 3.
Constat : Le fichier .env.prod est versionné. Il contient le mot de passe de la base de production, la clé APP_SECRET, les identifiants SMTP et la clé d’une API tierce. Ces valeurs figurent aussi dans l’historique du dépôt depuis 4 ans.
Comment nous l’avons vu : Recherche de secrets dans le code et dans l’historique Git, relevé des personnes ayant accès au dépôt.
Risque : Toute personne ayant eu accès au dépôt, y compris d’anciens intervenants, peut se connecter à la base de production ou utiliser les services tiers au nom de l’entreprise. Supprimer le fichier ne suffit pas : les valeurs restent lisibles dans l’historique.
Recommandation :
Charge estimée : 1 jour Priorité : P1, immédiat.
Constat : La fonction d’export CSV vérifie que l’utilisateur est connecté, mais pas son périmètre. En modifiant un paramètre de l’adresse, un utilisateur exporte les dossiers d’une autre agence, coordonnées des clients comprises.
Comment nous l’avons vu : Revue du contrôleur d’export, puis vérification avec deux comptes de test de périmètres différents sur l’environnement de préproduction.
Risque : Fuite de données personnelles entre entités. Si la faille a été exploitée, elle entraîne une obligation de notification à la CNIL et aux personnes concernées.
Recommandation :
Charge estimée : 2 jours Priorité : P1, sous 15 jours.
Le rapport complet de ce cas type fait une quarantaine de pages.
Le rapport est remis en PDF 48 heures avant la restitution, puis présenté en visioconférence : d’abord la synthèse pour la direction, ensuite le détail pour les équipes techniques. Il vous appartient : vous pouvez le confier à l’équipe de votre choix.
Notre audit Symfony : ce que nous examinons, les accès nécessaires et le déroulement. Et ce qui s’est passé après ce rapport : de l’audit à la reprise d’une application Symfony. Sur la montée de version : mettre à jour une ancienne version de Symfony.