Aller au contenu

Surface d'attaque : comprendre ce qu'on expose

Mise à jour :

La surface d’attaque représente l’ensemble des points d’entrée potentiels qu’un attaquant peut exploiter pour compromettre un système. Plus cette surface est grande, plus les opportunités d’attaque sont nombreuses. Réduire la surface d’attaque est un objectif fondamental de toute stratégie de sécurité.

En résumé : La surface d’attaque = tous les points où un attaquant peut interagir avec votre système. Ports ouverts, applications exposées, APIs, utilisateurs, code source, dépendances, configurations… Plus la surface est grande, plus le risque est élevé.

L’erreur de l’exposition par défaut

Une erreur classique consiste à exposer des services sans évaluer leur nécessité réelle.

Exemples de raisonnements dangereux :

  • “Ce port est ouvert sur le serveur par défaut, ça doit être normal”
  • “L’interface d’admin est sur un sous-domaine, personne ne la trouvera”
  • “Ce service n’est pas documenté, il n’y a pas de risque”
  • “On ouvre le pare-feu le temps du debug, on fermera après”
  • “Les endpoints de monitoring ne sont pas sensibles”

Chaque élément exposé représente :

  • Un vecteur d’attaque potentiel
  • Une surface à maintenir (patches, monitoring)
  • Une source d’information pour la reconnaissance
  • Un risque de misconfiguration

:::caution[Erreur fréquente] Penser qu’un service non référencé est invisible. Les scanners automatiques trouvent les ports ouverts en quelques minutes. La sécurité par l’obscurité n’existe pas. :::

Les dimensions de la surface d’attaque

La surface d’attaque ne se limite pas aux ports réseau. Elle comprend plusieurs dimensions qu’il faut toutes considérer.

Surface d’attaque numérique

ComposantExemplesRisque
RéseauPorts ouverts, services exposésExploitation directe
ApplicationsAPIs, interfaces web, formulairesInjection, XSS, CSRF
DonnéesBases de données, fichiers, backupsFuite, vol, corruption
IdentitésComptes, mots de passe, tokensUsurpation, élévation
CodeDépendances, librairies, imagesSupply chain attack
CloudBuckets, VMs, IAMMisconfiguration

Surface d’attaque physique

L’accès physique reste un vecteur d’attaque :

  • Serveurs accessibles sans contrôle d’accès
  • Ports USB activés sur les machines critiques
  • Imprimantes et équipements IoT non sécurisés
  • Badges d’accès compromis

Surface d’attaque humaine

Les utilisateurs sont souvent le maillon faible :

  • Phishing et ingénierie sociale
  • Mots de passe faibles ou réutilisés
  • Shadow IT et outils non approuvés
  • Insiders malveillants ou négligents

La métaphore du navire

Un navire avec une coque intacte flotte. Un navire avec dix brèches coule. Chaque service exposé, chaque port ouvert, chaque dépendance non patchée est une brèche potentielle dans la coque.

Réduire la surface d’attaque, c’est colmater les brèches inutiles et surveiller celles qui doivent rester ouvertes.

Attack Surface Management (ASM)

La gestion de la surface d’attaque (ASM) est le processus continu d’identification, de surveillance et de réduction des points d’exposition.

Inventaire des actifs

On ne peut pas protéger ce qu’on ne connaît pas :

  • Assets externes : domaines, IPs publiques, services exposés
  • Assets internes : serveurs, applications, bases de données
  • Assets cloud : VMs, conteneurs, buckets, fonctions serverless
  • Assets tiers : SaaS, APIs partenaires, dépendances

Découverte continue

La surface d’attaque évolue en permanence :

ÉvénementImpact sur la surface
Nouveau déploiementNouveaux services exposés
Ajout de dépendanceNouvelles vulnérabilités potentielles
Configuration modifiéePorts/services inattendus
Changement cloudRessources mal configurées
Acquisition d’entrepriseSurface inconnue héritée

Réduction active

L’inventaire ne suffit pas. Il faut activement réduire :

  • Fermer les ports et services non nécessaires
  • Désactiver les fonctionnalités non utilisées
  • Segmenter pour limiter l’exposition interne
  • Patcher les vulnérabilités connues
  • Supprimer les comptes et accès obsolètes

Scénario 1 : Le serveur de test oublié

Une équipe déploie un serveur de test pour un projet pilote.

Configuration initiale :

  • Serveur cloud avec IP publique
  • Tous les ports ouverts “pour simplifier les tests”
  • Application déployée avec credentials par défaut
  • Base de données accessible depuis internet

6 mois plus tard :

  • Le projet est abandonné
  • Le serveur reste actif (personne ne le désactive)
  • Un scanner automatique trouve le port MySQL ouvert
  • Credentials par défaut → accès total
  • Les données du pilote contenaient des infos clients réelles

Avec gestion de surface d’attaque :

  • Inventaire automatique des assets cloud
  • Alerte sur le nouveau serveur avec ports ouverts
  • Revue de sécurité obligatoire avant exposition
  • Procédure de décommissionnement automatique
  • Le serveur n’aurait jamais dû être exposé ainsi

Scénario 2 : L’API non documentée

Une application web expose plusieurs endpoints API.

Surface initiale :

  • API principale documentée et sécurisée
  • Endpoint /debug laissé par les développeurs
  • Endpoint /metrics pour le monitoring (sans auth)
  • Endpoint /graphql avec introspection activée

Attaque :

  1. L’attaquant scanne les endpoints communs
  2. Il trouve /debug → informations système complètes
  3. Il trouve /metrics → architecture interne révélée
  4. Il utilise l’introspection GraphQL → schéma complet de l’API
  5. Il exploite une faille découverte grâce à ces informations

Avec réduction de surface :

  • Endpoints de développement désactivés en production
  • Metrics accessibles uniquement en interne
  • Introspection GraphQL désactivée en production
  • Scanner de surface automatique détectant les expositions

Comment réduire la surface d’attaque

Audit initial

Cartographier l’existant avec des outils appropriés :

  • Scan externe : Shodan, Censys, nmap depuis l’extérieur
  • Scan interne : inventaire des services, ports, applications
  • Scan cloud : outils natifs (AWS Config, Azure Policy)
  • Scan code : analyse des dépendances (Snyk, Trivy)

Principes de réduction

Appliquer systématiquement ces principes :

PrincipeApplication
Deny by defaultTout est fermé sauf ce qui est explicitement ouvert
MinimisationN’installer/exposer que le strict nécessaire
SegmentationIsoler les services pour limiter la propagation
ChiffrementProtéger les données en transit et au repos
Moindre privilègeLimiter les droits de chaque composant

Surveillance continue

La réduction n’est pas un projet ponctuel :

  • Scans réguliers de la surface externe
  • Alertes sur les nouveaux services exposés
  • Revue périodique des accès et permissions
  • Tests de pénétration réguliers
  • Bug bounty pour la découverte externe

Pièges courants

L’inventaire incomplet

Ne considérer que les serveurs “officiels” et oublier les environnements de développement, les serveurs legacy, les ressources cloud éphémères.

La surface d’attaque dynamique

Penser que l’audit initial suffit. La surface évolue à chaque déploiement, chaque nouvelle dépendance, chaque changement de configuration.

Le shadow IT invisible

Ignorer les services déployés par les équipes en dehors des processus officiels : instances cloud personnelles, SaaS non approuvés, outils tiers.

L’obsession du périmètre

Se concentrer sur la surface externe et oublier la surface interne. Un attaquant qui pénètre le réseau trouve une surface d’attaque interne souvent bien plus large.

À retenir

  1. La surface d’attaque inclut tout ce qu’un attaquant peut atteindre — réseau, applications, données, identités, code et humains.

  2. On ne protège pas ce qu’on ne connaît pas — l’inventaire des assets est la première étape indispensable.

  3. La surface d’attaque évolue en permanence — chaque déploiement, dépendance ou changement la modifie.

  4. Deny by default — tout est fermé sauf ce qui est explicitement nécessaire et documenté.

  5. La sécurité par l’obscurité n’existe pas — les scanners trouvent les services exposés en quelques minutes.

  6. La réduction est un processus continu — pas un projet ponctuel mais une discipline permanente.

Liens utiles