Reconmind, accueil

Le livrable

Exemple de rapport de test d’intrusion : ce que vous recevez

La question arrive à presque chaque cadrage, et la réponse habituelle du marché est une plaquette. Vous trouverez ici la structure d’un rapport, une fiche complète et la chaîne d’exploitation correspondante.

Réponse courte

Que contient un rapport de test d’intrusion ?

Un rapport Reconmind comprend huit sections : une synthèse de direction de deux pages, le périmètre et ses limites, un tableau de bord des constats, les chaînes d’exploitation complètes, une fiche par vulnérabilité avec la requête exacte qui la démontre, les observations non reproduites, un plan de remédiation ordonné par risque réel, et après correction une attestation datée. Le rapport technique et la synthèse de direction sont livrés ensemble, jamais facturés séparément.

Sommaire : 6 sections

Huit sections, deux lecteurs

Chaque section est écrite pour un public précis. Mélanger les deux produit un document que personne ne lit en entier.

Structure d’un rapport
1. Synthèse de directionLecteur : comité de directionDeux pages. Ce qui est exposé, ce qu’une exploitation coûterait, les décisions à prendre et leur ordre. Aucun vocabulaire technique.
2. Périmètre et conditionsLecteur : tousCe qui a été testé, ce qui ne l’a pas été et pourquoi, les comptes utilisés, les dates et les créneaux. Cette section borne la portée du rapport.
3. Tableau de bord des constatsLecteur : RSSIRépartition par gravité, par composant et par cause. Permet de voir en une page si le problème est diffus ou concentré.
4. Chaînes d’exploitationLecteur : RSSI, équipes techniquesLes scénarios complets, maillon par maillon, du point d’entrée à l’impact démontré. C’est la partie que les scanners ne produisent pas.
5. Fiches de vulnérabilitéLecteur : équipes techniquesUne fiche par constat : requête, réponse, conditions de reproduction, impact, cause, correctif applicable, et les autres endroits où le même motif se retrouve.
6. ObservationsLecteur : équipes techniquesCe qui n’a pas pu être reproduit, ce qui mérite attention sans constituer une vulnérabilité, et ce qui sortait du périmètre.
7. Plan de remédiationLecteur : RSSI, directionLes actions ordonnées par risque réel, avec une estimation de charge et le rattachement aux référentiels (OWASP ASVS, ISO 27001, NIS 2).
8. Attestation de correctionLivré après correctionÉmise après la passe de vérification. Document daté et périmétré, opposable à un client, un assureur ou un comité de sécurité.

Voir en une page si le problème est diffus ou concentré

Répartition par gravité

Critique1
Élevée3
Moyenne5
Faible4
Observation6

19 entrées au total, dont 13 vulnérabilités prouvées et 6 observations. Les observations sont comptées à part : ce sont des pistes, pas des constats.

Causes regroupées

  • Autorisation vérifiée sur la session, pas sur l’objet6
  • Validation côté client uniquement3
  • Secrets et jetons à durée de vie illimitée2
  • Configuration par défaut non durcie2

Treize constats, quatre causes. Ce regroupement transforme une liste en plan de travail : il y a quatre choses à corriger, et non treize.

Quatre défauts enchaînés, un impact majeur

Pris isolément, les deux premiers maillons seraient classés « faible » et « moyen » par n’importe quel outil. C’est leur enchaînement qui produit la fuite.

Chaîne d’exploitation4 maillons
  1. Énumération de comptes sur la réinitialisation de mot de passe

    Le formulaire renvoie un message différent selon que l’adresse existe ou non. Classé « faible » par tout scanner, et sans impact pris isolément.

  2. Jeton d’invitation sans expiration

    Les invitations restent valides indéfiniment. Un jeton retrouvé dans un fil de discussion public reste utilisable des mois plus tard.

  3. Le rôle d’invitation hérite des droits du compte invitant

    L’attribution du rôle se fait côté client. En modifiant la requête d’acceptation, le compte créé obtient le rôle d’administrateur d’organisation.

  4. Lecture des factures de l’ensemble des locataires

    Depuis ce rôle, l’identifiant de facture est accepté sans vérification d’appartenance : les données financières de tous les clients de la plateforme sont lisibles.

Exemple fictif sur une plateforme SaaS multi-locataires. Aucun maillon n’est exploitable seul au niveau d’impact final ; le rapport note la chaîne en critique et chaque maillon à son niveau propre.

Le niveau de détail attendu par une équipe qui corrige

Si votre développeur ne peut pas rejouer le cas en deux minutes avec cette fiche, elle est mal écrite.

RM-001 · Contrôle d’accèsCritique · CVSS 9.1

Accès inter-locataires via l’identifiant de facture

Un utilisateur authentifié du locataire A lit les factures du locataire B en modifiant l’identifiant transmis. L’autorisation est vérifiée sur la session (« cet utilisateur est-il connecté ? ») et non sur l’appartenance de l’objet demandé.

Reproduction

# 1. Authentification en tant que locataire A

POST /api/v2/auth/login

{ "email": "test-a@exemple.invalid", "password": "…" }

# 2. Lecture d’une facture d’un autre locataire

GET /api/v2/invoices/8814

Authorization: Bearer <jeton-locataire-A>

# 3. Réponse obtenue

HTTP/2 200

{ "tenant": "B-4471", "amount": 18400, "customer": "…" }

Reproduit 3 fois sur 3, le 14 et le 15 du mois, avec deux comptes distincts du locataire A.

Impact démontré

Lecture des données de facturation de l’ensemble des locataires de la plateforme : raison sociale, montants, adresses. Énumération possible par incrément de l’identifiant.

Cause

L’autorisation est implémentée au niveau du point d’entrée et vérifie l’authentification, pas la propriété. Le même motif se retrouve sur cinq autres points d’entrée, listés en annexe B.

Correctif applicable

Filtrer par locataire dans la couche d’accès aux données et non par point d’entrée : toute requête de lecture porte l’identifiant de locataire issu du jeton, jamais celui transmis par le client. Corriger les six occurrences ensemble plutôt qu’une par une, puis ajouter un test d’intégration qui vérifie qu’un compte du locataire A reçoit un 404 sur un objet du locataire B.

ASVS
V4.1.3
CWE
639
OWASP API
API1 · BOLA
Charge
2 à 3 j

Le terme technique de ce défaut est détaillé dans le glossaire : IDOR et BOLA.

Combien de temps vos équipes sont mobilisées

Exemple sur un test d’intrusion web au périmètre standard. La charge qui vous incombe est délibérément visible : c’est la question qu’on nous pose juste après le prix.

  1. 01Cadrage et autorisation1 j· temps partagéPérimètre, comptes de test, horaires, actions interdites, contacts d’urgence. Signature avant toute action technique.
  2. 02Reconnaissance1 j· notre chargeÉnumération de la surface, cartographie des parcours et des rôles, préparation des jeux de données.
  3. 03Exploitation et preuve5 j· notre chargeLe gros du travail : contrôle d’accès, logique métier, chaînage. Chaque constat est reproduit avant d’entrer au rapport.
  4. 04Rédaction et restitution2 j· notre chargeRapport technique, synthèse de direction, puis une session de questions-réponses avec vos équipes.
  5. 05Correction10 j· votre chargeVos équipes corrigent. Nous restons joignables sur les arbitrages, sans facturation supplémentaire.
  6. 06Vérification1 j· notre chargeNous rejouons les cas corrigés et émettons l’attestation. Compris dans la mission.

Notre chargeTemps partagéVotre charge

Sur le livrable

Pouvez-vous nous envoyer un vrai rapport anonymisé ?

Non, et la raison tient en une phrase : un rapport de test d’intrusion décrit comment entrer chez un client, et aucune anonymisation sérieuse ne survit à la description d’une chaîne d’exploitation. Nous montrons la structure, le niveau de détail et un exemple construit de toutes pièces. Pour aller plus loin, nous présentons un rapport réel en visioconférence, à l’écran, sans le transmettre.

Qui lit quoi dans ce rapport ?

La synthèse de direction est écrite pour un comité : dix minutes, aucun vocabulaire technique, les décisions à prendre et leur ordre. Le rapport technique est écrit pour les équipes qui corrigent : une fiche par constat, avec la requête exacte. Les deux sont livrés ensemble parce que séparer les publics en deux prestations facturées distinctement n’a aucune justification technique.

Que devient un constat que vous n’arrivez pas à reproduire ?

Il sort de la liste des vulnérabilités et passe dans une section « observations », avec la mention de ce qui a été tenté. Il n’est ni effacé ni présenté comme une vulnérabilité. Cette règle a un coût commercial : un rapport avec dix constats prouvés paraît moins impressionnant qu’un rapport avec quarante lignes automatiques, et c’est ce qui le rend utilisable.

À lire ensuite

Réponse à toute demande sous 24 h ouvrées

Un périmètre à faire tester ?

Le cadrage est gratuit et sans engagement. Trente minutes suffisent à savoir si une mission est pertinente, laquelle, et ce qu’elle coûterait.

  • Autorisation écrite obligatoire
  • Accord de confidentialité systématique
  • Vérification des correctifs incluse