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
| Composant | Exemples | Risque |
|---|---|---|
| Réseau | Ports ouverts, services exposés | Exploitation directe |
| Applications | APIs, interfaces web, formulaires | Injection, XSS, CSRF |
| Données | Bases de données, fichiers, backups | Fuite, vol, corruption |
| Identités | Comptes, mots de passe, tokens | Usurpation, élévation |
| Code | Dépendances, librairies, images | Supply chain attack |
| Cloud | Buckets, VMs, IAM | Misconfiguration |
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énement | Impact sur la surface |
|---|---|
| Nouveau déploiement | Nouveaux services exposés |
| Ajout de dépendance | Nouvelles vulnérabilités potentielles |
| Configuration modifiée | Ports/services inattendus |
| Changement cloud | Ressources mal configurées |
| Acquisition d’entreprise | Surface 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
/debuglaissé par les développeurs - Endpoint
/metricspour le monitoring (sans auth) - Endpoint
/graphqlavec introspection activée
Attaque :
- L’attaquant scanne les endpoints communs
- Il trouve
/debug→ informations système complètes - Il trouve
/metrics→ architecture interne révélée - Il utilise l’introspection GraphQL → schéma complet de l’API
- 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 :
| Principe | Application |
|---|---|
| Deny by default | Tout est fermé sauf ce qui est explicitement ouvert |
| Minimisation | N’installer/exposer que le strict nécessaire |
| Segmentation | Isoler les services pour limiter la propagation |
| Chiffrement | Protéger les données en transit et au repos |
| Moindre privilège | Limiter 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
-
La surface d’attaque inclut tout ce qu’un attaquant peut atteindre — réseau, applications, données, identités, code et humains.
-
On ne protège pas ce qu’on ne connaît pas — l’inventaire des assets est la première étape indispensable.
-
La surface d’attaque évolue en permanence — chaque déploiement, dépendance ou changement la modifie.
-
Deny by default — tout est fermé sauf ce qui est explicitement nécessaire et documenté.
-
La sécurité par l’obscurité n’existe pas — les scanners trouvent les services exposés en quelques minutes.
-
La réduction est un processus continu — pas un projet ponctuel mais une discipline permanente.
Liens utiles
- Minimisation — Réduire ce qui est installé
- Moindre privilège — Réduire ce qui est accessible
- Défense en profondeur — Protéger malgré une surface exposée
- Durcissement — Réduire la surface d’attaque au niveau système