Le système d’information des entreprises
Les entreprises (au sens large : entreprises industrielles ou commerciales, administrations, universités, armées, hôpitaux...) modernes disposent d’un système d’information, qui est le support de toutes leurs activités. Si le système d’information d’une université, par exemple, est indisponible, elle ne peut plus inscrire les étudiants, ni rémunérer les personnels, ni payer les fournisseurs, ni percevoir subventions et frais d’inscription, ni répartir les cours dans les amphithéâtres, ni délivrer de diplômes, en d’autres termes elle est paralysée. Si le système d’information permet d’effectuer toutes ces opérations, c’est parce qu’il comporte des bases de données qui peuvent fournir les informations nécessaires, structurées selon des nomenclatures qui constituent le vocabulaire de l’entreprise, lequel décrit son univers conceptuel. Bref, le système d’information est le système nerveux de l’entreprise, sans lui elle est morte.
La presse signale depuis plusieurs semaines une vague d’attaques contre les systèmes d’information qui visent plus particulièrement les hôpitaux et les collectivités territoriales. Les coupables sont le groupe de hackers russophone LockBit et ses clients, parce que ce groupe fournit des outils de cyberattaque à qui les rémunère (20% du montant des rançons). Ces attaques passent par l’Internet, nous les appellerons cyberattaques. Leur forme la plus fréquente est le rançongiciel (ransomware). Un rançongiciel est un logiciel malfaisant qui, introduit dans un système d’information, chiffre tout ou partie des données ; ensuite, l’auteur de l’attaque demande une rançon à la victime pour lui fournir la clé de déchiffrement, qui lui permettra (peut-être) de récupérer ses données.
Les suites d’une telle attaque peuvent être très graves : un hôpital qui n’a plus accès aux dossiers de ses malades doit annuler ou reporter des opérations, avec potentiellement des conséquences fatales.
Vecteur d’attaque
Une attaque contre le système d’information comporte généralement l’installation sur un ordinateur bien choisi d’un logiciel malfaisant qui va effectuer des modifications des données ; nous dirons qu’il s’agit du vecteur d’attaque. Le choix de l’ordinateur visé portera généralement sur un serveur d’importance vitale, par exemple un serveur de la base de données comptable, ou de la base de données du personnel. En général un tel serveur est administré par des professionnels qui veillent à sa protection, pour s’y introduire l’attaquant devra généralement procéder en plusieurs étapes, en passant par le poste de travail d’un utilisateur ordinaire, moins bien protégé, d’où il pourra s’introduire dans le serveur visé.
Introduire le vecteur d’attaque dans le système
L’attaquant qui dispose d’un vecteur d’attaque approprié pourra en général l’introduire dans le système cible par une page Web piégée. D’expérience, un message électronique qui contient un lien vers une page alléchante, envoyé au personnel de l’entreprise visée, a de bonnes chances d’obtenir la réaction voulue : cliquer sur le lien empoisonné, éventuellement donner des informations confidentielles. Le lien empoisonné peut déclencher le téléchargement d’un logiciel malfaisant (vecteur d’attaque) qui s’installera dans le système de l’utilisateur abusé. Cette technique se nomme hameçonnage (phishing).
Est-il difficile de construire une page Web avec un lien empoisonné ? Cela nécessite de bonnes connaissances techniques, mais des kits tout prêts sont disponibles sur des serveurs Web hébergés dans des pays dépourvus de législation répressive, ou dépourvus d’appareils judiciaires en mesure de les faire appliquer.
Le langage JavaScript, qui permet d’incorporer à une page Web le texte d’un programme qui s’exécutera dans le contexte du navigateur de l’internaute, est très utilisé pour ce type d’activité. Une variante de ce type d’attaque est le cross-site scripting (abrégé XSS) : un programme introduit frauduleusement dans la page lue peut rediriger furtivement la navigation vers un site malfaisant qui pourra injecter du code dans la page visitée et agir ainsi sur le navigateur et son environnement.
Disséminer le vecteur d’attaque
En général la phase précédente, d’hameçonnage, aboutit au dépôt du vecteur d’attaque sur le poste de travail d’un utilisateur de base, qui ne contient guère de données stratégiques. L’attaquant va chercher à propager le vecteur d’attaque vers un serveur plus stratégique. Heureusement pour lui, l’utilisateur de base utilise son poste de travail pour accéder à de tels serveurs, et là aussi l’attaquant dispose d’une large panoplie d’outils pour élever le niveau de ses privilèges et circuler dans le réseau de l’entreprise, ce qui lui permettra d’atteindre un serveur chargé de données intéressantes.
La plupart des logiciels de gestion contemporains sont accessibles sous forme de serveurs Web, auxquels les utilisateurs accèdent par leur navigateur (ici la locution « serveur Web » désigne un logiciel qui délivre des pages Web, pas un ordinateur). Si le serveur Web est mal conçu, ce qui est fréquent, il sera vulnérable à une infection par le navigateur d’un utilisateur. Les injections SQL, qui consistent à introduire dans le processus de navigation des commandes d’accès aux bases de données de l’entreprise, sont des facteurs de risque bien connus, mais trouvent encore des sites vulnérables.
Mentionnons aussi Cross-Site Request Forgery (CSRF), introduction frauduleuse de requêtes nuisibles sur un site dont la sécurité repose sur l’identification des internautes ; il s’agit d’induire un internaute à exécuter à son insu (mais sous son identité et avec ses droits d’accès) une requête frauduleuse qui, grâce à cette identification, aura de bonnes chances de franchir les dispositifs d’authentification.
Vulnérabilités
Jusqu’à présent nous avons parlé de vecteur d’attaque sans en préciser la nature. Pour attaquer un système logiciel dont on veut prendre le contrôle, il est possible de rechercher d’éventuelles erreurs de conception dans les méthodes employées par ses auteurs : algorithme inapproprié ou faux, mauvais choix de représentation des données, formule de calcul fausse... Ce sont des vulnérabilités.
Les méthodes peuvent être bonnes mais mal programmées. Un système d’exploitation tel que Windows comporte plusieurs dizaines de millions de lignes de texte de programme, et les logiciels de bureautique ou de base de données presque autant : il est certain que des logiciels aussi vastes, à l’écriture desquels ont contribué des centaines de programmeurs, comportent de nombreuses erreurs de programmation, ainsi que des passages qui, sans comporter d’erreurs au sens strict, utilisent des méthodes imprudentes.
Ainsi, de nombreux programmes sont vulnérables aux attaques par débordement de zone mémoire (buffer overflow) : à un emplacement du programme où il attend des données, l’attaquant introduit des données de taille supérieure à ce que le programmeur avait prévu, ce qui écrase la suite du texte et permet à l’attaquant d’y placer le texte de programme malfaisant. Normalement le programme doit avoir été écrit de façon à empêcher cette attaque, et les langages de programmation modernes la rendent impossible, mais les programmeurs sont faillibles et les langages de programmation périmés sont toujours très utilisés, ne serait-ce parce que l’on ne peut pas réécrire du jour au lendemain des millions de lignes de code.
Trouver une telle vulnérabilité, écrire un programme pour l’exploiter, demandent des compétences élevées et un travail important. Selon les experts du domaine, il n’existe pas plus d’une ou deux dizaines d’équipes dans le monde qui en soient capables, ce sont soit des cybercriminels, soit des agences étatiques. Mais ces exploitations de vulnérabilités, que l’on nomme exploits, en anglais avec prononciation du t final, sont vendues à des cybercriminels moins compétents, et finissent par se retrouver sur le Web, ce qui met la cyberattaque à la portée du peuple.
Qu’est-ce qu’un Zero Day ?
Nous venons d’exposer (très succinctement) ce que sont une vulnérabilité et son exploitation. Pour un attaquant, les vulnérabilités les plus fructueuses sont celles qui n’ont encore été découvertes par personne, et notamment pas par l’éditeur du logiciel vulnérable. Une telle vulnérabilité se nomme un zero-day lors de son apparition. Un zero-day coûte très cher sur le marché du logiciel malfaisant, parce qu’une attaque qui l’exploite va faire des ravages, puisque tous les systèmes visés sont vulnérables.
Une fois que l’attaque a eu lieu, la vulnérabilité est identifiée, et a priori l’éditeur va pouvoir la corriger, ce qui diminue l’intérêt du vecteur d’attaque. Mais cela ne signifie pas qu’il devienne inutilisable. Même si l’éditeur publie une mise à jour correctrice, tous les utilisateurs ne l’appliqueront pas, ce qui laisse de beaux espoirs d’exploitation à l’attaquant.
Ainsi l’attaque NotPetya du 27 juin 2017 exploitait une vulnérabilité de Windows corrigée par Microsoft au mois de mars 2017 (bulletin de sécurité MS17-010), mais beaucoup d’entreprises n’avaient pas mis à jour leur système d’exploitation, d’où cette cyberattaque mondiale. Des centaines de milliers d’ordinateurs dans le monde entier ont été affectés, avec destruction irréversible des données. Ainsi l’entreprise française Saint-Gobain estime les pertes occasionnées par l’attaque à 384 millions de dollars (cf. l’article de Wikipédia pour plus de détails), un budget qui aurait permis de payer un certain nombre d’ingénieurs en cybersécurité et d’installer quelques serveurs de sauvegarde.
L’ironie de l’affaire NotPetya, c’est que le zero-day avait été exploité par la National Security Agency (NSA) américaine, qui s’était bien gardée de le divulguer. C’est le groupe de hackers The Shadow Brokers qui a volé à la NSA les deux outils d’exploitation et les a publiés.
Il existe une base de données centralisée de publication des vulnérabilités identifiées, la base CVE (Common Vulnerabilities and Exposures), administrée par l’organisation à but non lucratif Mitre.
Quelles précautions à prendre ?
Nous n’avons examiné ci-dessus que les attaques massives, qui visent à frapper le maximum de victimes. Il y a des attaques plus insidieuses, celles qui visent à espionner ou à saboter furtivement une cible particulière. L’attaquant cherchera à s’introduire discrètement dans le système visé et à y rester le plus longtemps possible, pour atteindre ses buts, au moyen d’un vecteur d’attaque persistant (Advanced Persistent Threat, APT). Nous n’en dirons pas plus ici.
Il est illusoire d’espérer prévenir toutes les attaques. On peut néanmoins prendre un certain nombre de précautions de nature à éviter beaucoup d’attaques, et à limiter les dégâts si néanmoins on en est victime :
Avoir des ingénieurs compétents
C’est une précaution sine qua non : sans personnels compétents, aucun espoir. Pour une PME qui n’aurait pas les moyens de les rémunérer, il existe d’excellents prestataires. Éventuellement se renseigner auprès de l’Observatoire de la sécurité des systèmes d’information et des réseaux (OSSIR).
Des ingénieurs compétents sauront configurer convenablement les serveurs sensibles, le raccordement à l’Internet du réseau de l’entreprise, l’annuaire des utilisateurs et des ordinateurs (sans doute Active Directory, c’est peut-être le plus compliqué), en appliquant les bonnes pratiques de sécurité, qu’ils connaissent.
Sauvegardes régulières archivées en sécurité
Si le système d’information est détérioré ou détruit, l’entreprise peut être sauvée si elle dispose de sauvegardes récentes. Ce qui suppose qu’elles aient été archivées à l’abri des attaques, par exemple hors site, ou chez un hébergeur.
Configuration du réseau et des postes de travail
Beaucoup de salariés accèdent au réseau de l’entreprise avec leurs ordinateurs personnels : rien ni personne ne peut assurer que ces appareils soient correctement configurés, avec des logiciels mis à jour, exempts des logiciels de jeu des enfants, etc. Si ces ordinateurs accèdent au réseau de l’entreprise, il convient que ce soit avec le minimum de droits, et sans accès aux bases de données sensibles. Sinon, tout est possible... Il existe des systèmes de contrôle d’accès au réseau (Network Access Control, NAC), mais leur configuration est loin d’être un problème simple.
Par contre, les employés des services administratifs travaillent sur leur ordinateurs professionnels, depuis leur bureau : ces ordinateurs doivent être configurés par le service informatique, les utilisateurs ne doivent pas avoir les droits d’administrateur. C’est valable (surtout) pour les chefs de services.
Si un ordinateur est contaminé, il va contaminer ses voisins : il faut donc circonscrire le voisinage au plus petit périmètre possible, ce qui veut dire segmenter le réseau en sous-réseaux étanches. Il faut du matériel pour créer les sous-réseaux et des ingénieurs pour les configurer. Mais sinon...
Mise à jour des systèmes
Il faut mettre les systèmes à jour ponctuellement. Cela ne doit pas être laissé à la responsabilité des utilisateurs, mais effectué par le service informatique, avec des outils adaptés (ils existent). Cela prend du temps, c’est du travail, mais si on préfère NotPetya...
Bon, la cybersécurité ne se limite pas à ces mesures, mais si déjà on prend ces précautions, on élimine le risque de disparition de l’entreprise à la suite de l’attaque, ce qui n’est pas une simple vue de l’esprit.
Visiblement, certaines de ces règles de sécurité n’étaient pas appliquées dans les hôpitaux et les services publics frappés récemment par des cyberattaques.