OWASP, chaîne logicielle et mise en conformité

Durcir une application et préparer sa conformité : référentiels en vigueur, contrôle d'accès, injection, secrets, chaîne logicielle, détection et réponse à incident, puis plan de mise en conformité auditable.

  1. Public cible

    Débutants, étudiants et professionnels qui souhaitent acquérir une pratique structurée dans ce domaine.

  2. Objectifs

    Comprendre les notions essentielles et les appliquer dans un projet vérifiable.

  3. Prérequis

    Aucune connaissance préalable n’est strictement obligatoire ; les prérequis détaillés sont précisés dans les ateliers.

  4. Niveau

    Tous niveaux

  5. Ressources

    • Documentation officielle et références citées dans les ateliers.
    • Exercices, examens et projet de synthèse du catalogue.
  6. Validation des compétences

    La validation repose sur les évaluations actives et les livrables pratiques du cours.

  7. Besoins techniques

    Un ordinateur, un navigateur et les outils indiqués dans le premier atelier sont suffisants pour commencer.

Exercices, examens et projets

Référentiels et cadrage

Exercice

Atelier Cybersécurité

Tester les accès et corriger une vulnérabilité sur une application réelle.

Obligatoire Consulter
Examen

Examen Cybersécurité

Évaluer OWASP Top 10, secrets, chaîne logicielle et conformité.

Obligatoire Consulter

Accès, injection et authentification

Exercice

Atelier Cybersécurité

Tester les accès et corriger une vulnérabilité sur une application réelle.

Obligatoire Consulter
Examen

Examen Cybersécurité

Évaluer OWASP Top 10, secrets, chaîne logicielle et conformité.

Obligatoire Consulter

Configuration, chiffrement et secrets

Exercice

Atelier Cybersécurité

Tester les accès et corriger une vulnérabilité sur une application réelle.

Obligatoire Consulter
Examen

Examen Cybersécurité

Évaluer OWASP Top 10, secrets, chaîne logicielle et conformité.

Obligatoire Consulter

Chaîne logicielle et intégrité

Exercice

Atelier Cybersécurité

Tester les accès et corriger une vulnérabilité sur une application réelle.

Obligatoire Consulter
Examen

Examen Cybersécurité

Évaluer OWASP Top 10, secrets, chaîne logicielle et conformité.

Obligatoire Consulter

Détection et réponse à incident

Exercice

Atelier Cybersécurité

Tester les accès et corriger une vulnérabilité sur une application réelle.

Obligatoire Consulter
Examen

Examen Cybersécurité

Évaluer OWASP Top 10, secrets, chaîne logicielle et conformité.

Obligatoire Consulter

Projet final et mise en conformité

Exercice

Atelier Cybersécurité

Tester les accès et corriger une vulnérabilité sur une application réelle.

Obligatoire Consulter
Examen

Examen Cybersécurité

Évaluer OWASP Top 10, secrets, chaîne logicielle et conformité.

Obligatoire Consulter
  1. Référentiels et cadrage

    1. Présentation du cours

      Objectifs

      1. Lire et appliquer les référentiels de sécurité qui engagent l'entreprise.
      2. Repérer les failles applicatives les plus fréquentes et savoir les corriger.
      3. Sécuriser l'accès, la configuration, les secrets et la chaîne logicielle.
      4. Mettre en place une détection et une réponse à incident.
      5. Préparer une mise en conformité auditable.

      Public visé

      Développeurs, responsables techniques et RSSI. Aucune expérience préalable en sécurité n'est requise.

      Durée

      40 heures. Chaque module se termine par un atelier où les mesures sont vérifiées sur une application réelle.

      Avertissement

      Ce cours est pédagogique. Il ne remplace pas un audit professionnel, et les techniques présentées ne doivent pas être utilisées en dehors d'un cadre autorisé : tester une application qui n'est pas la sienne est illégal.

    2. OWASP Top 10 : la version en vigueur

      Le Top 10 OWASP recense les risques applicatifs les plus fréquents. La version de référence est la 2025, qui a remplacé la 2021.

      RangRisque
      A01:2025Contrôle d'accès défaillant
      A02:2025Mauvaise configuration de sécurité
      A03:2025Défaillance de la chaîne logicielle
      A04:2025Défaillances cryptographiques
      A05:2025Injection
      A06:2025Conception non sécurisée
      A07:2025Défaillances d'authentification
      A08:2025Défaillance d'intégrité des logiciels ou des données
      A09:2025Défaillance de journalisation et d'alerte
      A10:2025Mauvaise gestion des conditions exceptionnelles

      Deux enseignements à retenir de cette évolution : la chaîne logicielle (A03) est entrée au classement, ce qui traduit le poids réel des dépendances et des systèmes de construction ; et la gestion des conditions exceptionnelles (A10) fait son apparition, alors qu'on la croyait traitée depuis des années.

    3. NIS2 et RGPD : ce qui engage l'entreprise

      NIS2

      La directive (UE) 2022/2555 sur la sécurité des réseaux et des systèmes d'information devait être transposée en droit national le 17 octobre 2024.

      • elle étend les obligations à des secteurs entiers qu'ils relevaient du périmètre précédent ;
      • les entités concernées doivent s'enregistrer auprès de l'ANSSI ;
      • elles doivent signaler les incidents de sécurité d'impact important ;
      • des sanctions administratives sont prévues, pouvant atteindre un pourcentage du chiffre d'affaires mondial, avec interdiction temporaire d'exercer les responsabilités du dirigeant.

      La transposition française étant encore en cours au moment de la rédaction, le cours ne prétend pas décrire le détail des textes : il faut se référer aux publications de l'ANSSI, qui publie par ailleurs un socle de mesures de référence.

      RGPD

      Le règlement européen 2016/679 s'applique à toute entité traitant des données de personnes physiques dans l'Union. Il n'est pas un référentiel technique mais un cadre d'obligations : registre des traitements, analyses d'impact,notification des violations sous 72 heures, et principes de protection dès la conception.

      À retenir : une faille de sécurité et une non-conformité ne sont pas la même chose, mais elles se combinent. Une violation de données est d'abord un problème de conformité, ensuite une faille technique.

    4. Modèle de menace

      Avant de protéger quoi que ce soit, on écrit ce qu'on cherche à protéger, ce contre quoi, et ce qu'on accepte de perdre. Sans ce document, les mesures sont choisies au hasard.

      Quoi protéger      : les données clients, la facturation, l'acces administrateur
      Contre quoi         : une personne non autorisee, un voleur, une erreur interne
      Perte acceptable   : indisponibilite de 2 h ; perte de donnees : aucune
      Engins              : acces direct, vol de secret, injection, componente vulnerable

      Le modèle de menace sert ensuite de critère d'arbitrage : quand deux mesures sont possibles, on retient celle qui traite la menace qu'on a identifiée.

  2. Accès, injection et authentification

    1. Contrôle d'accès défaillant (A01)

      C'est le premier risque du classement 2025. Il ne s'agit pas seulement d'oublier une vérification : c'est le cas classique où l'application vérifie l'accès sur l'écran mais pas sur l'API.

      Vérifier côté serveur, à chaque requête

      # FAIBLE : le controle est dans l'ecran, l'API reste ouverte
      @app.route("/api/tickets")
      def liste():
          return jsonify(Ticket.query.all())   # n'importe quel utilisateur voit tout
      
      # CORRECT : le controle est dans la couche d'acces
      @app.route("/api/tickets/<id>")
      @require_authenticated
      def detail(id):
          ticket = Ticket.query.get_or_404(id)
          if ticket.dossier_id != g.utilisateur.dossier_id:
              abort(403)          # on verifie la propriete, pas seulement l'identite
          return jsonify(ticket.serialize())

      La règle : une donnée appartient à quelqu'un. La question n'est jamais « l'utilisateur est-il connecté ? » mais « cette donnée lui appartient-elle ? ».

      Le test systématique

      Pour chaque point d'accès : lister ce que l'API expose, puis demander chaque ressource avec les identifiants d'un autre utilisateur. Ce contrôle, appelé test d'IDOR (référence directe non sécurisée), trouve plus de failles que l'analyse de code.

    2. Injection (A05)

      Une injection survient quand une donnée utilisateur est concaténée dans une commande interpretée : requête SQL, commande système, expression régulière, requête NoSQL.

      Le principe

      # Vulnerable : la saisie est concatenee dans la requete
      cur.execute("SELECT * FROM users WHERE nom = '" + nom + "'")
      
      # Correct : la requete est preparee, la valeur est un parametre lie
      cur.execute("SELECT * FROM users WHERE nom = %s", (nom,))

      La requête préparée n'est pas « le SQL le plus sûr » : c'est une frontière. Le moteur reçoit la structure d'un côté, les données de l'autre, et ne les mélange jamais.

      Les autres vecteurs

      • Système : ne jamais passer une saisie à un shell ; utiliser un appel direct au programme avec une liste d'arguments.
      • NoSQL : un objet passé tel quel peut devenir un opérateur ; vérifier le type avant usage.
      • Expressions régulières : une entrée utilisateur dans un motif peut provoquer un accès inattendu aux données, voire un déni de service.
      • En-têtes et journaux : un retour à la ligne dans un journal permet d'y injecter une fausse entrée — c'est l'injection de journal.

      Priorité : la requête préparée d'abord, la validation en second. Valider en déniant des caractères spécifiques est fragile ; la requête préparée tient quelle que soit la donnée.

    3. Défaillances d'authentification (A07)

      • Mots de passe : hachage avec un algorithme lent et salé (bcrypt, Argon2, scrypt). Un algorithme rapide est une catastrophe : il accélère aussi l'attaque par force brute.
      • Stockage des sessions : un jeton d'authentification doit être aléatoire, conservé côté serveur, invalidé à la déconnexion et à la réinitialisation du mot de passe.
      • Limitation : après quelques échecs, la tentative doit être ralentie ou bloquée, sans laisser d'information sur l'existence du compte.
      • Réinitialisation : le lien de réinitialisation doit être à usage unique et expirer rapidement.
      • Multi-facteurs : activé par défaut sur les comptes à privilèges.

      Deux erreurs classiques : un message d'erreur qui distingue « compte inconnu » de « mot de passe faux », et un mot de passe oublié qui ne change pas la session courante — l attaquant reste connecté.

    4. Exercices

      1. Test d'IDOR : sur une application de votre atelier, listez les points d'accès qui exposent une ressource par identifiant et testez-les avec un autre compte.
      2. Correction d'injection : réécrivez une recherche qui concatène, en requête préparée. Ajoutez un caractère spécial en entrée pour vérifier que la correction tient.
      3. Revue d'authentification : relevez les messages d'erreur, la vitesse de réponse, la politique de mot de passe et la réinitialisation. Notez chaque écart.
  3. Configuration, chiffrement et secrets

    1. Mauvaise configuration (A02)

      Deuxième risque du classement 2025, et le plus facile à éviter : une configuration par défaut, un mode debug actif, un en-tête manquant.

      • Environnement de production identifié clairement, avec une liste de contrôle avant mise en service.
      • Mode debug et pages d'erreur détaillés désactivés : une trace d'exécution révèle la pile d'appels, la version et les chemins.
      • Compte par défaut supprimé ou changé.
      • Répertoires sensibles (administration, phpmyadmin, console) restreints par adresse.
      • En-têtes HTTP de sécurité : politique de contenu, transport forcé, protection contre le clickjacking, référentiel de politiques.

      Le réflexe : comparer la configuration de production à celle de développement, ligne par ligne. La différence est souvent le paramètre même du problème.

    2. Défaillances cryptographiques (A04)

      Le chiffrement ne sert qu'à deux choses : la confidentialité en transit et au repos, et l'intégrité. Tout le reste est du folklore.

      • En transit : TLS partout, y compris entre services internes. Le réseau interne n'est pas un réseau de confiance.
      • Au repos : base de données, sauvegardes, objet stocké.
      • Les mots de passe ne se chiffrent pas : ils se hachent, avec un algorithme lent et un sel par utilisateur.
      • Le secret ne se dérive pas du reste : une clé déduite du mot de passe est une clé faible.

      Deux erreurs classiques : faire sa propre cryptographie, et réutiliser un mode de chiffrement sur toutes les données. Quand on emploie une bibliothèque éprouvée, on lit ce qu'elle documente sur le mode d'emploi, et on ne le change pas au hasard.

    3. Gestion des secrets

      Un secret est toute valeur qui donne un accès : mot de passe, jeton, clé, certificat. Sa fuite est presque toujours due à trois erreurs.

      1. Secret dans le dépôt : même supprimé ensuite, il reste dans l'historique et dans les clones. Le changer est la seule action qui vaut.
      2. Secret en clair dans la configuration : il faut une source externe : coffre à secrets du fournisseur, coffre de l'hébergeur, gestionnaire de secrets — et une injection à l'exécution.
      3. Secret dans les journaux : un secret écrit dans une trace est compromis, même si la trace est supprimée ensuite.

      La règle de lecture : un secret ne doit jamais pouvoir être lu depuis le code, jamais apparaître dans un journal, et pouvoir être changé sans redéploiement de l'application.

    4. Exercices

      1. Liste de contrôle : écrivez la liste de configuration de votre environnement de production, et vérifiez-la ligne par ligne.
      2. Inventaire des secrets : listez tous les secrets utilisés par votre application, et indiquez pour chacun où il est stocké et s'il apparaît dans un journal.
      3. Rotation : décrivez la procédure de rotation d'un secret, et vérifiez qu'elle peut être exécutée sans redéploiement complet.
  4. Chaîne logicielle et intégrité

    1. Défaillance de la chaîne logicielle (A03)

      Ce risque entre au Top 10 en 2025 : il traduit le poids réel des dépendances, des registres et des systèmes de construction. Une application n'est plus seulement son code : c'est son code plus tout ce qu'elle embarque.

      Les trois surfaces

      • Dépendances : une bibliothèque compromise se propage à toutes les applications qui l'utilisent.
      • Registres et installateurs : un paquet publié puis retiré reste dans des caches et sur des machines.
      • Systèmes de construction : c'est là que se décide ce qui est réellement compilé et publié.

      Les mesures qui comptent

      1. Verrouiller les versions et garder le fichier de verrouillage versionné : c'est ce qui rend une construction reproductible.
      2. Réduire les dépendances : chaque dépendance est une surface d'attaque. Une petite bibliothèque stable vaut mieux qu'un ensemble instable et non maintenu.
      3. Vérifier les signatures et empreintes des artefacts téléchargés, et échouer si elles diffèrent.
      4. Analyser les vulnérabilités de façon automatique, avec un seuil qui bloque le déploiement.
      5. Isoler la construction : l'environnement qui construit n'a pas accès aux secrets de production.
    2. Intégrité des logiciels et des données (A08)

      Cette entrée couvre la confiance accordée à un artefact, et la vérification de ce qu'on a downloaded.

      • Mise à jour automatique : vérifier la signature avant d'appliquer, jamais après.
      • Désérialisation : lire une donnée sérialisée venue de l'extérieur peut exécuter du code. Les chargeurs sûrs n'instancient que les classes autorisées.
      • Intégrité des données au repos : un chiffrement sans authentification ne protège pas — un contenu chiffré reste modifiable, avec un risque de permutation. Il faut un mode qui authentique également.
      • Signatures de code : signer l'artefact publié permet de vérifier qu'il vient bien de vous.
    3. Mauvaise gestion des conditions exceptionnelles (A10)

      Entrée nouvelle du Top 10 2025, et pourtant ancienne cause de failles : le traitement de l'échec.

      • Erreur masquée : un except qui ignore l'erreur transforme un problème visible en silence.
      • Message trop détaillé : renvoyer une trace d'exécution à l'utilisateur facilite l'exploitation ; on journalise côté serveur, on répond « une erreur est survenue ».
      • Opération à moitié faite : si la seconde étape échoue, la première a déjà été appliquée. C'est l'absence de transaction qui laisse le système dans un état incohérent.
      • Échec non traité : un service qui s'interrompt sur une entrée imprévue devient un déni de service.

      Le principe : l'échec est un chemin normal. Il se conçoit, se teste et se mesure, exactement comme le cas nominal.

    4. Exercices

      1. Inventaire des dépendances : listez les dépendances directes et transitives de votre projet, et identifiez celles qui ne sont plus utilisées.
      2. Traitement d'erreur : relevez tous les blocs qui masquent une erreur dans votre application et remplacez-les par un traitement explicite.
      3. Transaction :Operations une opération en deux étapes dont la seconde peut échouer, et montrez ce qu'un traitement non transactionnel laisse derrière lui.
  5. Détection et réponse à incident

    1. Journalisation et alerte (A09)

      Neuvième risque du classement 2025. Une intrusion non détectée est une intrusion qui dure : la question n'est pas seulement « cela s'est-il produit ? » mais « combien de temps avant que je le sache ? ».

      Ce qu'il faut journaliser

      • connexions et échecs d'authentification ;
      • changements de privilèges et création de comptes ;
      • accès aux données sensibles et exports en masse ;
      • modifications de configuration et de secrets ;
      • échecs applicatifs inhabituels.

      Ce qu'il ne faut pas journaliser

      Mot de passe, jeton, carte bancaire, donnée personnelle complète. Un journal qui contient un secret devient une cible, et un journal plein de secrets coûte cher à protéger.

      L'alerte

      Un journal sans seuil d'alerte n'est qu'un fichier. Quelques signaux à surveiller en priorité : échecs d'authentification en rafale, accès inhabituels à des données sensibles hors heures ouvrées, et toute élévation de privilège.

    2. Réponse à incident

      La réponse à incident se prépare à froid. En pleine crise, personne n'improvise bien : les décisions se prennent à partir d'un document écrit avant.

      1. Préparer : qui décide, qui intervient, comment joindre l'ANSSI ou le client, comment préserver les preuves.
      2. Détecter et qualifier : périmètre, données concernées, impact.
      3. Contenir : isoler sans détruire les traces.
      4. Éradiquer et corriger : la cause, pas seulement le symptôme.
      5. Réagir : information des personnes concernées, notification aux autorités si obligatoire.
      6. Apprendre : retours d'expérience écrits, mesures ajoutées au guide de production.

      Deux échéances à connaître : le RGPD impose de notifier une violation de données à l'autorité de contrôle dans les meilleurs délais et, lorsque le risque est élevé, aux personnes concernées ; NIS2 impose aux entités concernées de signaler les incidents d'impact important à l'ANSSI, selon les règles nationales de notification.

      Le réflexe de départ, avant toute analyse : préserver les preuves. Redémarrer une machine ou purger des journaux fait perdre ce qui désigne la cause.

    3. Observation et déplacement latéral

      La référence publique pour décrire le comportement d'un attaquant est MITRE ATT&CK, qui organise ses techniques en tactiques. L'intérêt n'est pas la liste : c'est la méthode.

      Sur une machine compromise, on regarde ce que le processus fait réellement : les processus lancés, les connexions sortantes, les clés d'accès lues, les comptes utilisés. La plupart des intrusions ne restent pas sur la machine d'entrée : elles se déplacent latéralement vers d'autres machines, ce qui n'apparaît sur aucun pare-feu puisqu'il s'agit de trafic autorisé par des identifiants volés.

      La parade tient en deux points : principe du moindre privilège — un compte de service ne fait que ce qu'il lui faut — et surveillance des comptes — un usage inhabituel d'un compte service doit remonter.

    4. Exercices

      1. Plan d'incident : écrivez la procédure de réponse à incident de votre application : qui fait quoi, dans quel ordre, et à quoi on ne touche pas.
      2. Revue des journaux : relevez ce que votre application journalise aujourd'hui, et complétez la liste manquante.
      3. Exercice de crise : simulez la compromission d'un compte de service et décrivez les trois premiers gestes, sans rien détruire.
  6. Projet final et mise en conformité

    1. Projet final : auditer et durcir une application

      Le projet porte sur une application de votre choix, et vise un résultat vérifiable : un rapport de conformité et des mesures effectivement appliquées.

      Les cinq livrables

      1. Modèle de menace : ce qu'on protège, contre quoi, et ce qu'on accepte de perdre.
      2. Revue sur le Top 10 2025 : pour chacune des dix entrées, l'état, la preuve et la mesure prévue.
      3. Tests d'accès : tests d'IDOR et élévation de privilège réellement exécutés, avec le résultat obtenu.
      4. Inventaire des secrets et de la chaîne logicielle : dépendances, versions verrouillées, surface d'attaque.
      5. Plan de durcissement : mesures priorisées par effort et par impact, avec une échéance par mesure.

      Critères de réussite

      • chaque ligne du rapport renvoie à une preuve reproductible, pas à une impression ;
      • les cinq risques les plus probables sont traités en premier, pas les plus visibles ;
      • le plan est réalisable : chaque mesure a un responsable et une échéance ;
      • le rapport pourrait être lu par un auditeur externe sans oral.
    2. Mise en conformité

      La conformité se prépare comme un projet, pas comme une déclaration. Trois constats utiles :

      1. Le périmètre se décide tôt : savoir si l'entité relève de NIS2 conditionne tout le reste. La France n'ayant pas encore achevé sa transposition, on se réfère aux publications de l'ANSSI, qui propose un enregistrement en ligne et un socle de mesures.
      2. Les preuves priment sur les déclarations : ce qui est demandé, ce sont des traces : registres, comptes rendus, journaux, tests, rapports.
      3. La sécurité des données est un obligation de moyen : on ne garantit pas qu'aucune violation n'aura lieu, on montre qu'on a fait ce qu'il fallait pour la prévenir et la traiter.

      Deux référentiels ne sont pas obligatoires mais servent de structuration : ISO/IEC 27001 pour le système de management, et le référentiel CIS Controls pour les mesures techniques de référence.

    3. Ressources et évaluation

      Évaluation

      • Quiz à la fin de chaque module.
      • Atelier : test d'accès et correction sur une application de votre choix.
      • Projet final : rapport et plan de durcissement, évalués sur la qualité des preuves.
      • Revue : chaque atelier est relu, les remarques portent sur des points vérifiables.

      Grille du projet

      • méthodique : le modèle de menace précède les mesures
      • précis : chaque constat est prouvé
      • priorisé : l'effort et l'impact sont explicites
      • actionnable : qui fait quoi, et pour quand
Sources et documentation de reference

Atelier guidé

Auditer une application dont on ne possede pas le code, et verifier ce qu'on avance.

  1. Controle d’objet : tenter d’acceder a une ressource d’un autre compte et decrire le resultat attendu avant de tester.
  2. Surface : relever les cinq entrees d’une API, et dire pour chacune si elle est validee cote serveur.
  3. Secrets : chercher un secret expose cote client, et expliquer pourquoi il n’est pas secret.
  4. Rapport : rediger le constat : risque, preuve, consequence, correction proposee.

Restitution de l’atelier

  • Un modele de menace d’une page.
  • Le tableau de verification, une ligne par risque, avec preuve.
  • Un plan de durcissement priorise, avec une echeance par action.
Validation : Chaque ligne du rapport renvoie a une preuve reproductible. Une affirmation sans preuve n’y figure pas.

Publié le 28/09/2026