E7 — Cybersécurité des services informatiques

Casterman — SLAM, session 2025

Méthodologie et corrigé commenté — E7 — Cybersécurité des services informatiques, BTS SIO.

  • Durée 4h
  • Filière SLAM
  • Session 2025

Corrigé commenté Lockbay

Sujet officiel

Cas Casterman — Session 2025, U7/E7 (SLAM), durée 4h, coef 4, sur 80 points (4 dossiers : 15 + 26 + 23 + 16 pts). 📄 Télécharger le sujet officiel Casterman (PDF, réseaucerta.org)

Lockbay n’héberge pas le sujet : ce corrigé est une production originale Lockbay qui répond aux questions du sujet officiel. Sujet © Éducation nationale.

Le cas Casterman (maison d’édition, progiciel BDPro en Java) couvre quatre dossiers : analyse de risque, sécurisation de l’authentification, gestion des droits, et mise en ligne d’une API REST. Corrigé question par question.

Dossier A — Analyse des risques 15 pts
A1.1

Justifier les niveaux des critères (D-I-C) des récits utilisateurs

La méthode : pour chaque récit, on évalue le besoin de confidentialité, intégrité, disponibilité selon l’impact d’une atteinte sur la donnée manipulée.

a) Confidentialité (récit 1) : niveau élevé si le récit manipule des données personnelles/stratégiques (dont la divulgation nuirait) ; faible s’il s’agit d’informations publiques (ex. catalogue).

b) Intégrité (récit 3) : niveau élevé si une altération des données fausserait le métier (ex. droits, tarifs, contenu d’un ouvrage à publier).

c) Différence de preuve (récits 2 vs 3) : le besoin de traçabilité/preuve est plus fort là où il faut pouvoir prouver qui a fait quoi (action sensible, juridiquement engageante) que sur une opération anodine.

A2.1

Deux impacts d’un rançongiciel réussi

  1. Indisponibilité : chiffrement des données et des serveurs → activité bloquée (BDPro inutilisable).
  2. Perte financière et fuite de données : coût de la rançon/remise en service, et en cas de double extorsion, exfiltration puis publication des données (atteinte à la confidentialité et à la réputation).
A2.2

Trois mesures techniques anti-rançongiciel

  1. Sauvegardes régulières, testées, hors ligne/immuables (règle 3-2-1) — pour restaurer sans payer.
  2. Mises à jour systématiques (OS, applications) — fermer les failles exploitées.
  3. Antivirus/EDR + filtrage de la messagerie (le rançongiciel arrive souvent par hameçonnage). (On peut ajouter : segmentation réseau, MFA, sensibilisation.)
A2.3

Obligations en cas de violation de données personnelles

a) La CNIL doit être notifiée (dans les 72 heures) ; et les personnes concernées doivent être informées si la violation engendre un risque élevé pour leurs droits et libertés.

b) La violation doit obligatoirement être consignée dans le registre des violations de données (tenu par le responsable de traitement).

Dossier B — Sécuriser BDPro 26 pts
B1.1

a) Les mots de passe en clair doivent être supprimés car, en cas de fuite de la base (vol, injection, sauvegarde compromise), tous les comptes sont immédiatement utilisables par l’attaquant — y compris ailleurs (réutilisation de mots de passe).

b) La solution adaptée est l’empreinte (hachage), pas le chiffrement : un mot de passe ne doit jamais pouvoir être déchiffré. On stocke un condensat (avec sel, ex. bcrypt/Argon2) et on compare des empreintes à la connexion. Le chiffrement est réversible (la clé volée révèle tout) → inadapté pour un mot de passe.

B2.1

Trigger majUtilisateur (historique des mots de passe)

a) La table HistoMotDePasse reste vide parce que le déclencheur n’effectue pas l’insertion de l’ancien mot de passe : soit le test sur mdpExisteHisto est mal exploité (l’action n’est faite que dans une branche jamais atteinte), soit l’INSERT INTO HistoMotDePasse est absent du traitement.

b) Correction : dans le cas où mdpExisteHisto retourne false, le trigger doit (1) INSERT l’ancien mot de passe dans HistoMotDePasse, (2) compter les entrées de cet utilisateur, (3) supprimer la plus ancienne si le total dépasse 5, (4) mettre à jour mdpActuel/dateHeureMdpActuel dans Utilisateur — dans cet ordre.

B3.2

Intérêt de la signature électronique du PDF final

Elle garantit l’intégrité (le PDF n’a pas été modifié après signature) et l’authenticité/non-répudiation (il provient bien de l’éditeur). Pour l’imprimeur, c’est la preuve qu’il imprime la version exacte et validée voulue par Casterman.

B3.3

Transfert sécurisé d’un PDF de 2 Go

Un transfert chiffré adapté aux gros fichiers : par exemple SFTP (SSH File Transfer Protocol) vers un serveur dédié, ou une solution de transfert chiffrée de bout en bout — pas par courriel (taille + confidentialité non garantie).

Dossier C — Droits et accès à la base 23 pts
C1.2

Méthode possedeDroit

Elle parcourt les droits de l’utilisateur et renvoie true si le couple (table, opération) demandé est autorisé :

public boolean possedeDroit(String uneTable, String uneOperation) {
    for (Droit d : this.lesDroits) {
        if (d.getTable().equals(uneTable)
         && d.getOperation().equals(uneOperation)) {
            return true;
        }
    }
    return false;
}
C2.2

Nombre d’opérations delete sur les 30 dernières minutes

SELECT COUNT(*) AS nb_delete
FROM Log
WHERE operation = 'delete'
  AND dateHeure >= NOW() - INTERVAL 30 MINUTE;

C2.3

Surveillance des insert sur BandeDessinee

a) La requête fournie ne répond pas au besoin : elle liste les idUtilisateur mais ne compte pas par utilisateur et n’applique aucun seuil (« plus de 5 ajouts »). Il manque un GROUP BY et un HAVING.

b) Correction :

SELECT idUtilisateur, COUNT(*) AS nb_ajouts
FROM Log
WHERE nomTable = 'BandeDessinee'
  AND operation = 'insert'
  AND dateHeure >= CONCAT(CURRENT_DATE(), ' 08:00:00')
GROUP BY idUtilisateur
HAVING COUNT(*) > 5;
Dossier D — Mise en ligne et API REST 16 pts
D1.1

Pourquoi DELETE et PUT sont dangereux

Ce sont des méthodes d’écriture : DELETE supprime une ressource et PUT la modifie/remplace. Mal contrôlées, elles permettent une altération ou une destruction de données → atteinte directe à l’intégrité de la base.

D1.2

Sécuriser la méthode delete de Controle (+ code HTTP)

Avant d’exécuter la suppression, on vérifie l’autorisation via autoriseAction(). Si le demandeur n’a pas le droit, on renvoie un statut HTTP 403 (Forbidden) sans toucher la base :

si NON autoriseAction(demandeur, ...) :
    réponse HTTP 403 (Forbidden)   // accès refusé
sinon :
    exécuter la suppression
    réponse HTTP 200/204
D2.1

Pourquoi une API publique séparée (lecture seule) est plus sûre

Créer une seconde API dédiée, publique mais en lecture seule sur le seul catalogue, applique la séparation des privilèges : l’accès public n’expose aucune écriture ni donnée sensible et ne partage pas l’authentification de l’API métier. Modifier l’API existante l’aurait au contraire élargie et fragilisée.

D3.1

Réinitialisation de mot de passe oublié

a) Deux problèmes : (1) le courriel renvoie l’identifiant et un mot de passe en clair → fuite directe si la boîte mail est compromise (et le mot de passe est donc connu/stocké en clair) ; (2) rien ne prouve que le demandeur est bien le titulaire du compte (pas de vérification, pas de péremption).

b) Mode sécurisé : envoyer un lien de réinitialisation à usage unique, contenant un jeton aléatoire à durée de vie courte, qui mène vers un formulaire où l’utilisateur choisit un nouveau mot de passe (jamais transmis par mail, et stocké haché).

Points de barème (rappel)

DossierAttenduPoints
AD-I-C des récits, impacts/mesures rançongiciel, RGPD (CNIL, registre)15
BHachage vs chiffrement, correction du trigger, signature PDF, transfert SFTP26
CpossedeDroit, requêtes de surveillance (COUNT, GROUP BY/HAVING)23
DAPI REST : DELETE/PUT, code 403, API publique en lecture, reset sécurisé16
Total80
Sujet officiel © Éducation nationale — publié par le Réseau CERTA — Éducation nationale (lien source). Corrigé commenté et méthodologie © Lockbay Academy.