13/05/2024

Cybersécurité

Analyse et réduction de la surface d’attaque

I. Présentation

Lorsque l'on aborde la sécurité d'un système d'information, la notion de surface d'attaque est très importante. Nous allons dans cet article essayer de comprendre ce qu'est la surface d'attaque, comment l'analyser et enfin, comment réduire sa taille.

II. Qu'est-ce que la surface d'attaque ?

La surface d'attaque d'un système d'information peut être décrite de la façon suivante : il s'agit de tous les points d'entrée et de communication qu'un système d'information possède avec l'extérieur. Voyons quelques exemples :

  • un site web commercial avec un formulaire mis à disposition des clients pour la demande de devis;
  • un port VPN ouvert sur la passerelle réseau;
  • un montage d'un système de fichier externe sur un serveur de fichier;
  • les services actifs d'un serveur;
  • l'interface de gestion d'une application quelconque;
  • etc.

Tout ce qui est en interaction avec les visiteurs ou les utilisateurs fait partie de la surface d'attaque. C'est une notion que l'on peut également retrouver dans le domaine militaire. La surface d'attaque est tout simplement l'ensemble des points qui sont susceptibles d'être attaqués, car un attaquant peut être en contact avec. On retrouve également comme description de la surface d'attaque qu'elle est l'exposition du système d'information (architecture, serveurs, services, applications et même hommes), c'est ce qui peut être atteint, donc potentiellement vulnérable.

Il est courant, lorsque l'on parle de la surface d'attaque, d'en distinguer quatre sortes :

  • La surface d'attaque logicielle : Il s'agit de tous les points d'entrée/sortie d'une application avec son environnement (OS, librairies, accès en lecture/écriture, etc.)
  • La surface d'attaque réseau : On parle ici des ports ouverts, des IP actives, des flux réseaux et protocoles utilisés,etc.
  • La surface d'attaque humaine : Il s'agit de tous les points (humains) vulnérables au phishing et aux techniques de social engineering par exemple, la ressource humaine est un élément central de la sécurité du SI et elle est bien souvent omise dans la conception de la politique de sécurité et sa mise en place.
  • La surface d'attaque physique.

En quoi est-ce important ?

La taille, ou l'étendue, de la surface d'attaque va tout simplement refléter son exposition aux attaques éventuelles. Plus une surface d'attaque est étendue et importante, plus il va falloir travailler pour sécuriser en profondeur l'ensemble des points qui composent cette surface d'attaque.

Lorsque l'on parle de la surface d'attaque et de sa réduction dans le monde informatique, il est commun de reprendre la stratégie appliquée dans le film 300. Dans ce film, le groupe de spartiate en infériorité numérique (300 soldats), face aux hordes ennemies (des milliers de soldats), utilise une stratégie de réduction de la surface d'attaque pour vaincre. Voici une illustration de cette stratégie, celle-ci peut directement être appliquée à la protection d'un SI :

Schématisation d'une surface d'attaque non contrôlée.

Dans le cas où la surface n'est pas réduite, où elle n'a pas subi d'analyse et de correction comme c'est le cas dans beaucoup de SI, on se retrouve avec une grande surface d'attaque. Alors, la défense et les moyens de filtrage et de contrôle sont plus complexes à mettre en place et à organiser. Une attaque de surface de grande taille se caractérise par de nombreux points d'entrée sur le système d'information, ainsi, un attaquant aura de nombreuses possibilités d'attaque et de chances supplémentaires d'y trouver une vulnérabilité pour atteindre le SI. Dans le film 300, cette stratégie aurait pu être adoptée, mais les Spartiates n'auraient pas survécu bien longtemps en raison de leur infériorité numérique. Voyons maintenant le schéma qui illustre une surface d'attaque réduite et contrôlée :

Schématisation d'une surface d'attaque réduite.

Dans ce cas, la surface d'attaque est contrôlée et réduite, on se retrouve donc avec une quantité moins importante de points d'entrée. L'attaquant a donc moins de possibilités d'attaque et moins de chances de trouver une porte d'entrée vulnérable sur le SI. De plus, les points de défense, de filtrage et de contrôle couvrent une zone moins importante et sont donc plus faciles à gérer et au final, plus efficaces. Il faut également noter que si la surface d'attaque est plus petite et mieux définie, les points de défenses peuvent être moins nombreux, cela signifie donc moins de main-d’œuvre pour les mettre en place, mais également moins d'achats de logiciels et matériels de protection comme des routeurs ou des modules de filtrage.

III. Analyser une surface d'attaque, comment ?

L'analyse de la surface d'attaque est simplement le fait d'établir une cartographie précise et documentée de tous les points d'entrée du système d'information. On peut effectuer l'analyse de la surface d'attaque d'un système d'exploitation, d'une machine précise, d'une application, d'un simple port. La surface d'attaque du système d'information sera finalement composée de l'ensemble de ces éléments.

Une fois que tous ces points sont listés et identifiés, il convient par la suite d'effectuer une analyses détaillées sur ceux-ci. On va alors, pour un port 80 ouvert par exemple, chercher tout ce qui pourrait être utilisé par un attaquant pour profiter de l'exposition de ce port 80. Sur une application, cela peut par exemple être le fait que l'application tourne avec les droits d'un utilisateur privilégié du système. Pour une analyse de la surface d'attaque humaine, il peut suffire du fait qu'un utilisateur "lambda" ait assez de privilèges pour effectuer des modifications sur certains systèmes ou certaines applications.

Il faut savoir qu'une vulnérabilité sera forcément nuisible lorsqu'elle est présente sur un point d'entrée du système d'information. Ainsi, plus la surface d'attaque est petite (peu étendue), moins les vulnérabilités, et donc les possibilités d'attaque et d'intrusion, seront nombreuses (mais pas forcément de moindre impact !).

À partir du moment où l'on a fait l'analyse et la cartographie de la surface d'attaque, on sait mettre en avant et identifier différents points qui sembleront plus critiques en fonction de leur impact potentiel sur le système d'information. On pourra également porter plus d'attention sur certains points d'entrée de la surface d'attaque en observant la probabilité qu'ils soient attaqués. Un port 22 sur un serveur ouvert sur internet est un point d'entrée très critique par exemple. Néanmoins, chaque point d'entrée à son importance et il ne faut en négliger aucun.

Lors de l'analyse de la surface d'attaque, on peut établir une hiérarchie et une suite dans les points d'entrée. Voici un schéma qui peut illustrer une partie de l'analyse de la surface d'attaque  :

Analyse de la surface d'attaque, après un port peuvent se cacher plusieurs points d'entrée.

Ici, l'analyse de la surface d'attaque commence par le point d'entrée qui est l'IP et le port de la machine. Il ne faut ici pas oublier l'OS du serveur qui peut déjà contenir des vulnérabilités. Sur ce point d'entrée tourne un service Apache2 qui peut lui aussi être attaqué, sur ce serveur Apache2, deux applications distinctes qui peuvent aussi contenir leurs propres vulnérabilités et qui contiennent des points d'entrée supplémentaires, sur un service web il peut par exemple s'agir de possibilité d'uploader des fichiers, de saisir du texte stocké sur le serveur, ou de la possibilité de faire des recherches... Chacun de ces points est une partie de la surface d'attaque.

L'analyse de la surface d'attaque permet finalement d'orienter et de définir ce qu'il faut défendre et protéger. Cette analyse doit être clairement documentée afin de savoir ce qui est présent sur le système d'information, on doit également régulièrement revérifier et analyser de nouveau la surface d'attaque afin de voir si des changements ont été opérés.

  • Quels sont les services que j'ai mis en place depuis ma dernière analyse de la surface d'attaque ?
  • Qu'est ce que ces services ont ouvert sur l'extérieur ou sur l'environnement de mon application ?
  • Ma surface d'attaque est-elle plus ou moins étendue qu'avant ?
  • Les vulnérabilités de tel point d'entrée de ma surface d'attaque sont-elles plus ou moins nombreuses ou dangereuses ?

Une fois que la surface d'attaque est cartographiée et connue, il faut maintenant travailler à la réduction de sa taille.

IV. Réduction et surveillance de la surface d'attaque

Le système d'information d'une entreprise est un élément vivant, c'est pour cela qu'il arrive constamment que certains services deviennent inutilisés ou ne soient utilisés que très rarement. D'autres services sont peu mis à jour, car ils sont considérés comme peu critiques. La réduction de la surface d'attaque (ou ASR pour "Attack Surface Reduction") permet d'avoir un meilleur contrôle sur ce qui est exposé et ainsi d'améliorer la sécurité globale du SI ou d'une application, mais quelles sont les actions à mener pour réduire la taille de la surface d'attaque et pour la contrôler ? Nous allons ici explorer plusieurs pistes :

  • Une fois que tous les points de la surface d'attaque ont été identifiés, on pourra généralement y distinguer des points plus critiques que d'autres. Il sera alors possible de mettre en place des outils de surveillance ou de protections avancés sur ces points (les points critiques comme les points moins critiques). On pourra par exemple mettre en place une centralisation et une analyse des logs à l'aide de Rsyslog et d'un IDS comme Snort ou Suricata. Les systèmes d'analyse de logs tels que les IDS permettent en effet de relever plus tôt les intrusions ou les comportements anormaux, ce qui va dans le sens d'une surveillance accrue d'un point d'entrée.
  • On peut également procéder, pour les systèmes fortement exposés à une analyse de sécurité régulière, utiliser outils comme les scripts Lynis et LBSA sous Linux qui permettent de mettre en place les vérifications de différents points de sécurité et au final, d'assurer une sécurité minimale.
  • Le contrôle de la taille de sa surface d'attaque passe également par la gestion de son évolution. Une fois que la surface d'attaque est définie et identifiée, il est important de garder ce contrôle même lorsque le système évolue. On doit donc, lors d'une modification, savoir précisément ce qu'ouvre tel ou tel outil sur la surface d'attaque et procéder si nécessaire à une nouvelle analyse de celle-ci.

Sur un système d'exploitation, la réduction de la taille de la surface d'attaque ou de l'exposition aux attaques passe bien souvent par l'analyse de ce qui n'est pas ou peut utilisé sur le système, on va ensuite décider de fermer services et ports inutiles pour limiter les possibilités d'interaction à distance avec ce système. C'est un principe largement connu, mais peu appliqué, car il nécessite du temps et une connaissance profonde de l'utilisation des services et des serveurs par le SI et les utilisateurs. Ce processus, appliqué à l'OS ou aux applications, s'appelle l'hardening ou "durcissement" : qu'est ce que l'hardening ?

Les différentes procédures d'authentification sont également un moyen de réduire l'exposition globale d'un système, on va effet essayer de "cacher" la majeure partie des interactions possibles derrière une ou plusieurs authentifications. On va alors réduire le nombre de personnes pouvant effectuer des actions avancées ou dangereuses et ainsi réduire la surface d'attaque totale.

De grands principes de la sécurité informatique permettent de réduire la taille de la surface d'attaque, on notera par exemple :

  • Le contrôle des accès réseaux et systèmes : On va ici vouloir mettre en place des restrictions et des filtrages avancés pour ne laisser passer que les flux qui sont légitimes au travers un routeur par exemple. De la même façon, les firewalls des systèmes exposés seront actifs et les filtres configurés de façon très précise.
  • Le principe de moindre privilège : Lorsqu'il s'agit de limiter l'impact de la corruption d'un poste utilisateur ou même les effets d'une attaque par social engineering, le principe de moindre privilège peut permettre de réduire la surface d'attaque. On va alors donner à un utilisateur ou un groupe le minimum de privilège par rapport à ses besoins, on pourra donc savoir précisément les systèmes et informations auxquels a accès tel utilisateur et avoir une idée plus précise de la taille de sa surface d'attaque, mais aussi de l'impact potentiel que peut avoir une attaque sur cet élément humain. Le principe de moindre privilège s'applique également à la partie application, on va alors éviter de faire tourner un service ayant une interaction avec l'extérieur en tant que root par exemple, le fait de le faire tourner avec les droits d'un utilisateur avec moins de privilèges réduira la taille de la surface d'attaque du système par rapport à cette application.

Nous avons vu plus haut que la surface d'attaque était aussi composée des hommes qui utilisent et agissent sur le système d'information, la formation des utilisateurs du SI est également un moyen de réduire la surface d'attaque, en plus du principe du moindre privilège, on va sensibiliser les utilisateurs aux différentes attaques, mais également leur apprendre à se méfier de certains appels ou de certains mails qui peuvent paraître suspect (social engineering).

Du côté des applications comme des architectures systèmes et réseaux, on retrouve l'intérêt du "secure by design", il s'agit alors de penser la sécurité dès la phase de conception et non à la fin ou lorsque le temps nous le permet. Cela permet bien souvent d'éviter des erreurs, des oublies ou des failles de sécurité de conception.

Nous avons dans ce billet vu ce qu'est la surface d'attaque, comment entamer son analyse et quelques pistes de réduction de sa taille, n'hésitez pas à partager vos méthodes de défense et d'analyse de la surface d'attaque dans les commentaires ou dites nous si vous étiez déjà familier avec ce principe de la sécurité informatique.

author avatar
Mickael Dorigny Co-founder
Co-fondateur d'IT-Connect.fr. Auditeur/Pentester chez Orange Cyberdéfense.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.