Brevet FR3133087A1 — publié le 20230901

Titre de l'invention : Procédé et module de détection de tentatives d’attaques informatiques dans un parc d’ordinateurs. Procédé de détection d’une tentative d’attaque informatique mis en œuvre par un ordinateur (EQ n ), ladite attaque exploitant une vulnérabilité (CVE k ) d’une fonction à protéger (fc1) s’exécutant dans un processus (p1) d’un espace utilisateur (USR n ) dudit ordinateur (EQ n ), un lancement de l’exécution de ladite fonction à protéger (fc1) ayant pour conséquence l’exécution, avant ladite attaque, d’une fonction du noyau (oper_exec), ledit procédé comportant des étapes de : - exécution (F_Ex) d’une politique de mitigation (PG k ) dans ledit noyau (KER n ), ladite politique de mitigation (PG k ) étant associée à ladite fonction du noyau (oper_exec) et étant chargée dans un espace de nommage (ENSECURE1) du noyau associé audit processus (p1) et dédié à la sécurité ; - envoi (F_E) à un serveur de gestion de sécurité (CNode) d’un message (Log i ) comportant une donnée représentative dudit processus (p1). Fig. 1 Procédé et module de détection de tentatives d’attaques informatiques dans un parc d’ordinateurs. L’invention se rapporte au domaine général de la sécurisation des programmes informatiques. L’invention vise plus particulièrement un procédé pour orchestrer la sécurité informatique d’une infrastructure d’équipements informatiques à l’aide de politiques de mitigation. On rappelle que lorsqu’un logiciel présente une vulnérabilité, la mitigation ne vise pas à corriger ce logiciel qui continue à s’exécuter normalement, mais à bloquer les effets de la vulnérabilité. Par exemple, si un logiciel présente une faille de sécurité lorsqu’il envoie un paquet particulier via une fonction d’envoi de paquets, une mitigation de cette vulnérabilité peut consister à bloquer le processus d’envoi de ce paquet particulier. La mitigation ne supprime pas la vulnérabilité mais elle la rend inexploitable. Dans le domaine de la sécurité informatique, les failles de sécurité sont répertoriées dans une liste publique accessible à l’adresse https://cve.mitre.org/, chaque vulnérabilité référencée dans la liste étant identifiée par un identifiant unique CVE (pour Common Vulnerabilities and Exposures en anglais). Des milliers d’identifiants CVE sont émis chaque année, et un logiciel complexe peut cumuler des centaines de CVE. La gestion des CVE pour maintenir la sécurité d’un parc d’équipements informatiques peut donc s’avérer excessivement complexe. L’invention vise à faciliter la gestion de la sécurité d’un parc d’ordinateurs en détectant les processus de ces ordinateurs subissant une tentative d’une attaque informatique. Corollairement, l’invention permet de renforcer la sécurité d’un parc d’ordinateurs. À cet effet, et selon un premier aspect, l’invention concerne un procédé de détection d’une tentative d’attaque informatique mis en œuvre par un ordinateur, ladite attaque exploitant une vulnérabilité d’une fonction à protéger s’exécutant dans un processus d’un espace utilisateur dudit ordinateur, un lancement de l’exécution de la fonction à protéger ayant pour conséquence l’exécution, avant ladite attaque, d’une fonction du noyau, ledit procédé comportant des étapes de : - exécution d’une politique de mitigation dans le noyau, la politique de mitigation étant associée à ladite fonction du noyau et étant chargée dans un espace de nommage du noyau associé audit processus et dédié à la sécurité ; et si ladite politique de mitigation détecte lors de son exécution un vecteur d’attaque pris en charge par ladite politique et ciblant ladite fonction à protéger : - envoi à un serveur de gestion de sécurité d’un message comportant une donnée représentative dudit processus. Corrélativement, l’invention propose un module de détection d’une tentative d’attaque informatique dans un ordinateur, ladite attaque exploitant une vulnérabilité d’une fonction à protéger s’exécutant dans un processus d’un espace utilisateur dudit ordinateur, un lancement de l’exécution de ladite fonction à protéger ayant pour conséquence l’exécution, avant ladite attaque, d’une fonction du noyau, ledit module comportant: - un sous module d’exécution configuré pour exécuter une politique de mitigation dans ledit noyau, ladite politique de mitigation étant associée à ladite fonction du noyau et étant chargée dans un espace de nommage du noyau associé audit processus et dédié à la sécurité ; - un sous-module d’envoi configuré pour envoyer, à un serveur de gestion de sécurité, un message comportant une donnée représentative du processus, ledit sous-module d’envoi étant configuré pour envoyer ledit message si ladite politique de mitigation détecte un vecteur d’attaque pris en charge par ladite politique et ciblant ladite fonction à protéger. Ainsi, le procédé permet d’identifier les processus sur lesquels ont lieu des attaques informatiques, une attaque informatique désignant une ou plusieurs instructions permettant de contourner une ou plusieurs règles de sécurité dans l’exécution d’un processus informatique. On appelle vulnérabilité une faille dans un processus, cette faille permettant, si elle est exploitée, d’outrepasser des règles de sécurité du système informatique sur lequel ce processus est exécuté. Par exemple la vulnérabilité CVE-2021-44228 baptisée « Log4Shell » est présente dans le composant logiciel de journalisation Log4J. Le composant Log4J est utilisé par de nombreuses applications utilisant le langage Java. Cette vulnérabilité permet à un attaquant distant dans les cas les plus sévères de faire exécuter un code arbitraire par la machine cible. On rappelle qu’un espace de nommage isole, dans une abstraction, l’instance d’une ressource système pour les processus associés à cet espace de nommage. Les modifications apportées à la ressource système sont visibles pour les autres processus associés à l'espace de nommage, mais sont invisibles pour les autres processus. Les espaces de nommage sont notamment utilisés pour mettre en œuvre des conteneurs. On écrira par la suite qu’une ressource système dans un espace de nommage est déclarée par cet espace de nommage. Un conteneur est un environnement d’exécution sur lequel s’exécutent des processus, un conteneur étant associé à un ensemble d’espaces de nommage permettant d’isoler l’exécution de ces processus du reste des processus du système. Dans un mode de réalisation, la donnée représentative d’un processus et comprise dans le message est une donnée représentative de l’espace de nommage associé au processus. Le procédé de détection permet alors d’identifier les espaces de nommage, par exemple des conteneurs, subissant une attaque informatique. Il convient de préciser que les conteneurs ne constituent qu’un exemple non limitatif dans un mode particulier de réalisation du procédé tel que décrit ci-dessus. Le procédé permet d’envoyer des messages identifiant les espaces de nommages des processus attaqués à un serveur de gestion de sécurité. Le serveur de gestion de sécurité peut notamment recevoir de tels messages d’autres ordinateurs qui mettent en œuvre ce même procédé de détection. Également, dans des modes de réalisation du procédé, les messages envoyés à un serveur de gestion de sécurité comprennent les identifiants des vulnérabilités exploitées par les attaques. Le procédé présenté propose d’utiliser une politique de mitigation exécutée dans le noyau de l’ordinateur. Avantageusement, il n’est pas nécessaire de redémarrer le noyau pour que la politique de mitigation soit effective. Conformément au procédé, le programme de la politique de mitigation chargée dans le noyau est un programme exécutable. Il ne s’agit pas d’une simple signature ou d’un simple ensemble de règles. L’exécution de la politique de mitigation au niveau du noyau est déclenchée, directement ou indirectement, par le lancement de l’exécution, dans l’espace utilisateur, de la onction à protéger. Par exemple, l’exécution de la politique de mitigation est déclenchée directement par la fonction à protéger, autrement dit par la fonction à protéger elle-même. Dans un autre exemple, l’exécution de la politique de mitigation est déclenchée indirectement par la fonction à protéger, autrement dit par une autre fonction de l’espace utilisateur dont l’exécution est déclenchée par le lancement de l’exécution de la fonction à protéger. Dans un mode de réalisation, l’’exécution de la politique de mitigation permet à la fois de détecter une attaque utilisant cette fonction, et de bloquer cette attaque. Par la suite, on écrira que le processus est attaqué, ou bien que le conteneur (ou plus généralement l’espace de nommage) dans lequel s’exécute ce processus est attaqué, si une attaque est déclenchée directement ou indirectement par l’exécution de cette fonction. Le procédé décrit permet avantageusement de remonter l’information sur des processus attaqués à un serveur de gestion de la sécurité. Cette information peut par exemple identifier les conteneurs, ou plus généralement les espaces de nommage, dans lesquels s’exécutent ces processus. Le serveur de gestion de sécurité peut être contrôlé par un administrateur central. Ce procédé peut être avantageusement appliqué à une pluralité d’ordinateurs dans un parc informatique, ce qui permet de remonter au serveur de gestion de sécurité l’information sur les attaques subies par chacun des ordinateurs du parc informatique. Dans ce cas, l’administrateur central a un rôle d’orchestration de la sécurité sur le parc d’ordinateurs. L’invention permet aussi à l’administrateur central de s’affranchir de la nécessité de consulter de manière manuelle chaque administrateur de chaque ordinateur pour que chacun d’entre eux, par exemple, vérifie manuellement et localement si une vulnérabilité donnée affecte les logiciels de leur machine. Selon un mode de mise en œuvre particulier du procédé de détection, ladite politique de mitigation est chargée dans un espace de nommage dédié à la sécurité et associé au processus racine dudit ordinateur. Un ordinateur mettant en œuvre le procédé de détection comprend un processus racine associé à des espaces de nommage dont héritent les espaces de nommage des conteneurs de l’ordinateur. Si une politique de mitigation est déclarée dans l’espace de nommage associé au processus racine et dédié à la sécurité, alors les espaces de nommages associés à chaque conteneur et dédiés à la sécurité héritent de cette politique de mitigation. Autrement dit, un processus s’exécutant dans un conteneur se verra protégée par la politique de mitigation déclarée dans l’espace de nommage associé au processus racine. Ce mode de réalisation permet avantageusement de surveiller automatiquement tous les conteneurs de l’ordinateur car chaque conteneur hérite des politiques de mitigation de l’espace de nommage associé au processus racine de l’ordinateur. Ainsi, pour tout conteneur (ou plus généralement pour tout espace de nommage dédié à la sécurité) de l’ordinateur, si un processus de ce conteneur appelle la fonction à protéger, la politique de mitigation est exécutée et permet de détecter si une attaque est en cours dans ce conteneur. Selon un mode de mise en œuvre particulier de l’invention, le procédé de détection comporte des étapes de : - réception, en provenance dudit serveur de gestion de sécurité, d’un identifiant de politique de mitigation ; - installation, dans ledit noyau de l’ordinateur, de la politique de mitigation correspondant audit identifiant de politique de mitigation. Ce mode de réalisation permet avantageusement à un administrateur central contrôlant le serveur de gestion de sécurité d’orchestrer l’installation de politiques de mitigation dans un parc d’ordinateurs. Les politiques de mitigation peuvent donc être gérées de façon centralisée, sans demander la contribution des administrateurs d’au moins certains ordinateurs du parc, ce qui permet d’éviter l’installation manuelle de la politique de mitigation sur au moins certaines, par exemple sur toutes les machines du parc. Selon un mode de mise en œuvre particulier du procédé de détection, ladite étape d’installation comporte des sous-étapes de : envoi d’une requête comportant l’identifiant de politique de mitigation à un serveur de sécurisation ; obtention, en réponse à la requête d’un fichier de description de ladite politique de mitigation ; obtention d’un code objet de la politique de mitigation identifiée dans ledit fichier de description ; génération d’un code exécutable de ladite politique de mitigation à partir dudit code objet; et installation du code exécutable dans ledit noyau. De façon avantageuse, le procédé de détection propose de télécharger le programme de la politique de mitigation appropriée lorsqu’une vulnérabilité affectant un logiciel s’exécutant sur l’équipement informatique a été identifiée, et d’installer automatiquement ce programme dans le noyau de l’équipement pour mitiger cette vulnérabilité. En variante, il peut être choisi d’installer systématiquement une politique de mitigation sur tous les ordinateurs. Le couplage avec un scanneur de vulnérabilité ici proposé pour n’installer la politique que si ce scanneur détecte que le logiciel est potentiellement vulnérable (indépendamment de son exploitabilité réelle) est une option. Ce mode de réalisation propose ainsi d’installer au besoin la politique de mitigation à partir d’un serveur de sécurisation. Cette utilisation d’un serveur de sécurisation permet avantageusement d’économiser de l’espace mémoire sur le noyau de l’ordinateur. Ce mode de réalisation permet également de mettre à disposition de l’ordinateur une base de données comportant une pluralité de politiques de mitigation pouvant être installées au besoin, sur décision du serveur de gestion de sécurité. Selon un mode de mise en œuvre particulier du procédé de détection, ladite étape d’envoi dudit message au serveur de gestion de sécurité est mise en œuvre à partir de l’espace utilisateur en réponse à l’envoi d’un signal par le noyau à l’espace utilisateur pour signaler la détection du vecteur d’attaque par la politique de mitigation. Un signal est envoyé du noyau vers l’espace utilisateur. Cet envoi est déclenché par l’exécution de la politique de mitigation. En particulier, l’envoi du message peut être codé dans la politique de mitigation elle-même. Une partie des données à envoyer peut être codée dans la politique de mitigation et une autre partie peut être récupérée automatiquement depuis le noyau (par exemple l’identifiant de l’espace de nommage dédié à la sécurité et/ou l’identifiant du processus courant). Ce signal contient l’information sur le processus, par exemple sur l’espace de nommage associé au processus et éventuellement le conteneur de ce processus, et peut identifier l’attaque. Le message envoyé au serveur de gestion de sécurité peut permettre de caractériser le processus attaqué et/ou son espace de nommage et/ou le conteneur dans lequel le processus s’est exécuté. En particulier, ce message peut reprendre les informations contenues dans le signal transmis à l’espace utilisateur par le noyau, et peut notamment contenir des informations supplémentaires pour caractériser plus précisément le conteneur attaqué, par exemple : nom de l’image conteneur, nom du processus principal, instant de démarrage du conteneur. De telles informations complémentaires peuvent être utiles notamment si un conteneur est arrêté et relancé. Dans ce cas, un signal obtenu par le noyau ne permet pas de faire le lien entre le conteneur arrêté et le conteneur relancé puisque ce dernier est associé à un espace de nommage dont l’identifiant a changé avec la relance du conteneur. Le nom de l’image conteneur permet notamment de faire ce lien. Les informations complémentaires peuvent également être utiles pour pouvoir appliquer un traitement de sécurité à tous les processus exécutant une image conteneur identique à celle du processus attaqué qui a déclenché l’exécution de la politique de mitigation et l’envoi du signal. Selon un mode de mise en œuvre du procédé de détection, ledit au moins un message comporte au moins une information parmi : - un identifiant de l’ordinateur ; - une donnée représentative de l’espace de nommage associé au processus attaqué et dédié à la sécurité ; - un identifiant de la vulnérabilité ;- un instant auquel l’exécution de la politique de mitigation a été déclenchée. Ce mode de mise en œuvre permet avantageusement de localiser spatialement et temporellement une attaque sur un parc d’ordinateurs mettant en œuvre le procédé de détection. L’identifiant de l’ordinateur est par exemple son adresse IP (« Internet Protocol » en anglais). La donnée représentative du conteneur peut par exemple être l’identifiant de l’espace de nommage du conteneur dédié à la sécurité et comprenant la politique de mitigation. Selon un second aspect, l’invention propose un procédé d’identification mis en œuvre par un serveur de gestion de sécurité pour identifier une tentative d’attaque informatique sur au moins un ordinateur, ladite attaque exploitant une vulnérabilité d’une fonction à protéger s’exécutant dans un espace utilisateur de l’ordinateur. Ce procédé comporte des étapes de : - réception en provenance dudit au moins un ordinateur, d’un message comportant une donnée représentative d’un processus s’exécutant dans ledit espace utilisateur, lorsqu’un vecteur d’attaque ciblant ladite fonction à protéger a été détecté par l’exécution, dans le noyau de l’ordinateur, d’une politique de mitigation chargée dans un espace de nommage du noyau dédié à la sécurité et associé à ce processus ; - ajout à une liste d’une donnée représentative de ce message. Corrélativement, l’invention propose un module d’identification pouvant être mis en œuvre dans un serveur de gestion de sécurité, ledit module étant configuré pour identifier une tentative d’attaque informatique sur au moins un ordinateur, ladite attaque exploitant une vulnérabilité d’une fonction à protéger s’exécutant dans un espace utilisateur de l’ordinateur, ledit module comportant : - un sous-module de réception configuré pour recevoir en provenance dudit au moins un ordinateur un message comportant une donnée représentative d’un processus s’exécutant dans ledit espace utilisateur, lorsqu’un vecteur d’attaque ciblant la fonction à protéger a été détecté, dans le noyau de l’ordinateur, par l’exécution d’une politique de mitigation chargée dans un espace de nommage du noyau dédié à la sécurité et associé à ce processus; - un sous-module d’ajout configuré pour ajouter à une liste une donnée représentative dudit message. L’invention propose un procédé permettant d’identifier, à partir d’un serveur, l’ensemble des processus attaqués dans un parc d’ordinateurs, et/ou les espaces de nommage ou conteneurs associés à ces processus. Cette identification des processus attaqués permet avantageusement de faciliter l’orchestration de la sécurité sur le parc d’ordinateurs par un administrateur central contrôlant le serveur de gestion de sécurité. À cet effet, l’invention propose de mettre en commun les messages provenant des ordinateurs attaqués en les ajoutant dans une liste. Cette liste permet notamment à l’administrateur de prendre des décisions concernant la gestion de la sécurité dans le parc d’ordinateurs. Par exemple, la présence de certaines attaques sur des processus ou conteneurs particuliers peut inciter à installer des programmes de sécurité supplémentaires pour améliorer la sécurité de ces processus ou de ces conteneurs. Selon un mode particulier de mise en œuvre, le procédé comporte une étape d’envoi audit au moins un ordinateur d’un identifiant de ladite politique de mitigation. Ainsi, si l’administrateur central prend connaissance d’une nouvelle vulnérabilité mettant en danger le parc d’ordinateurs, l’invention lui permet avantageusement de commander l’installation d’une politique de mitigation sur l’ensemble du parc pour protéger les ordinateurs de cette vulnérabilité. Ce mode de réalisation permet d’éviter de solliciter les administrateurs des différents ordinateurs pour qu’ils installent manuellement les politiques de mitigation pour protéger ces ordinateurs. Selon un mode particulier de mise en œuvre de l’invention, le procédé d’identification comporte une étape d’envoi audit au moins un ordinateur, d’un identifiant d’un serveur de sécurisation à partir duquel est extraite ladite politique de mitigation. Dans un cas où les politiques de mitigation sont réparties sur plusieurs serveurs de sécurisation, l’invention permet à chaque ordinateur d’identifier le serveur de sécurisation auprès duquel télécharger la politique de mitigation souhaitée. Chacun des procédés décrits ci-dessus peut être mis en œuvre par un programme informatique. Par conséquent, l’invention vise également un programme d’ordinateur sur un support d’enregistrement, ce programme étant susceptible d’être mis en œuvre dans un équipement informatique ou plus généralement dans un ordinateur. Ce programme comporte des instructions permettant la mise en œuvre d’un procédé tel que décrit ci-dessus. Ce programme peut utiliser n’importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n’importe quelle autre forme souhaitable. L’invention vise aussi un support d'informations ou un support d’enregistrement lisibles par un ordinateur, et comportant des instructions d’un programme d'ordinateur tel que mentionné ci-dessus. Le support d'informations ou d’enregistrement peut être n'importe quelle entité ou dispositif capable de stocker les programmes. Par exemple, les supports peuvent comporter un moyen de stockage, tel qu'une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou encore un moyen d'enregistrement magnétique, par exemple un disque dur, ou une mémoire flash. D'autre part, le support d'information ou d’enregistrement peut être un support transmissible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par lien radio, par lien optique sans fil ou par d'autres moyens. Le programme selon l'invention peut être en particulier téléchargé sur un réseau de type Internet. Alternativement, le support d'informations ou d’enregistrement peut être un circuit intégré dans lequel un programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution de l’un des procédés tels que décrits précédemment. Brève description des annexes et des figures D’autres caractéristiques et avantages de la présente invention ressortiront de la description faite ci-dessous, en référence aux dessins annexés qui en illustrent un exemple de réalisation dépourvu de tout caractère limitatif. Sur les annexes : [Annexe. 1] L’annexe 1 représente un premier extrait de code exécutable d’une politique de mitigation pouvant être utilisé dans un mode particulier de réalisation ; [Annexe. 2] L’annexe 2 représente un deuxième extrait de code exécutable d’une politique de mitigation pouvant être utilisé dans un mode particulier de réalisation ; Sur les figures : la représente une mise en œuvre des procédés de détection et d’identification conforme à un mode particulier de réalisation ; la représente des dispositifs de détection et d’identification conformes à un mode particulier de réalisation ; la représente une étape d’installation du procédé de détection conforme à un mode particulier de réalisation ; la représente un exemple de fichier de description conforme à un mode particulier de mise en œuvre ; la représente des composants d’un noyau d’ordinateur conforme à un mode de réalisation particulier ; la représente une table des processus mémorisée dans un noyau d’ordinateur conforme à un mode particulier de réalisation ; la représente sous forme d’ordinogramme les principales étapes d’un procédé de sécurisation pouvant être mis en œuvre dans un mode particulier de réalisation. Description détaillée de plusieurs modes de réalisation particuliers La représente un mode particulier de réalisation de l’invention dans lequel les procédés de détection et d’identification sont mis en œuvre. Sur l’exemple représenté par la , un seul ordinateur EQ n met en œuvre le procédé de détection et le procédé d’identification est mis en œuvre pour identifier des attaques informatiques sur cet ordinateur EQ n . Un tel exemple sur un seul ordinateur est représenté par soucis de simplicité mais n’est en rien limitatif de l’invention. En particulier, les procédés de détection et d’identification peuvent être mis en œuvre sur plusieurs ordinateurs. Il est à préciser que dans d’autres modes de réalisation de l’invention, les procédés de détection et d’identification peuvent être mis en œuvre indépendamment l’un de l’autre. Les étapes, représentées sur la , du procédé de détection mis en œuvre par l’ordinateur EQ n sont des étapes de : - réception F_R, en provenance d’un module MIDA d’un serveur de gestion de sécurité, d’un identifiant d’une politique de mitigation PG k ; - installation F_I de la politique de mitigation PG k dans un noyau KER n de l’ordinateur EQ n ; - exécution F_Ex d’une politique de mitigation PG k dans le noyau KER n ; - envoi F_E1 d’un signal depuis le noyau KER n vers l’espace utilisateur USR n ; - envoi F_E2, en réaction audit envoi F_E1, d’un message Log i de l’espace utilisateur USR n vers ledit serveur de gestion de sécurité CNode. Les étapes du procédé d’identification représentées sur la sont des étapes de : - envoi E_E depuis le serveur de gestion de sécurité vers l’ordinateur EQ n , d’un signal permettant l’installation de politique de mitigation PG k ; - réception E_R du message Log i en provenance de l’espace utilisateur USR n de l’ordinateur EQ n ; - ajout E_A d’une donnée représentative du message Log i à une liste. Les étapes du procédé d’identification sont effectuées par un module MIDA du serveur de gestion de sécurité CNode tandis que les étapes du procédé de détection sont effectuées par un module MDET n de l’espace utilisateur de l’ordinateur EQ n . Le module MIDA envoie et reçoit des signaux ou des messages par l’intermédiaire de moyens de communications 13’ représentés sur la . Le module MDET n envoie et reçoit des signaux ou des messages par l’intermédiaire de moyens de communications 13. Le signal envoyé à l’ordinateur lors de l’étape E_E est par exemple de la forme http://IPHost:port/add_policy?namespace=0&CVE_ID=CVEID où « IPHost:port » est l’adresse IP de l’ordinateur EQ n , où l’argument « namespace=0 » indique que la politique de mitigation est à installer dans un espace de nommage du processus racine de l’ordinateur EQ n , et où l’argument « CVE_ID=CVEID » indique l’identifiant CVEID de la vulnérabilité CVE contre laquelle protéger les conteneurs de l’ordinateur EQ n . Il est à noter que l’installation, dans cet exemple, de la politique de mitigation PG k dans un espace de nommage du processus racine correspond à un mode particulier de mise en œuvre de l’invention et n’est pas limitatif. Notamment, des espaces de nommage associés à d’autre processus peuvent être choisis pour y installer la politique de mitigation PG k . L’intérêt de choisir l’espace de nommage du processus racine réside dans le fait que les conteneurs dans lesquels sont exécutés les autres processus héritent de la politique de mitigation PG k installée dans l’espace de nommage du processus racine. Ainsi, dans ce cas, la politique de mitigation permet de détecter des tentatives d’attaques dans tous les conteneurs de l’ordinateur EQ n et de les protéger. Suite à la réception F_R du signal en provenance du serveur de gestion de sécurité CNode, le module MDET n met en œuvre une étape d’installation F_I de la politique de mitigation PG k sur le noyau KER n , en réponse à ce signal. Par exemple, si ce signal contient l’identifiant d’une vulnérabilité CVE, le module MDET n met en œuvre l’installation d’une politique de mitigation permettant de protéger l’ordinateur EQ n contre cette vulnérabilité. Un mode particulier de mise en œuvre de l’étape d’installation F_I est représenté sur la et sera décrit ci-après. Sur la est également représentée une étape d’exécution F_Ex de la politique de mitigation PG k dans le noyau KER n . Dans cet exemple, l’exécution de la politique de mitigation est déclenchée par l’exécution (en anglais « call ») d’une fonction fc1 vulnérable appelée lors de l’exécution du processus p1 dans le conteneur C1. Dans ce mode de réalisation le lancement de l’exécution de cette fonction vulnérable fc1 entraîne indirectement l’exécution d’une fonction du noyau oper_exec() qui entraîne elle-même l’exécution de la politique de mitigation PG k . En particulier, l’exécution de la fonction à protéger fc1 entraîne l’exécution d’une fonction exec() dans l’espace utilisateur USR n , qui elle-même entraîne l’exécution dans le noyau de la fonction oper_exec(). Dans un autre mode de réalisation, l’exécution d’une fonction à protéger entraîne directement l’exécution d’une fonction dans le noyau associée à une politique de mitigation. Le déclenchement de la politique de mitigation PG k par l’exécution de la fonction du noyau oper_exec() est par exemple permis par un point de déclenchement (« hook » en anglais) bien connu de l’homme du métier. Ce mécanisme permet de lier la politique de mitigation PG k à la fonction oper_exec() de telle sorte que la politique de mitigation PG k est exécutée avant l’attaque, si celle-ci devait se produire. En fonction du résultat de l’exécution de la politique de mitigation, la fonction vulnérable est bloquée ou exécutée. Une telle exécution de la politique de mitigation PG k dans le noyau KER n est notamment décrite dans le document [1] qui propose un procédé de sécurisation utilisant une politique de sécurité, la politique de mitigation prenant le rôle d’une politique de sécurité. Un tel procédé est représenté sur la et est décrit ultérieurement. Si la politique de mitigation PG k détecte une attaque, un envoi FE_1 d’un signal vers l’espace utilisateur USR n est effectué. L’instruction de ce premier envoi FE_1 peut être directement codé dans le programme exécutable de la politique de mitigation. Ce signal peut par exemple prendre la forme « Timestamp, IPHost, SecurityNamespaceID, CVEID, Msg ». Ici, « Timestamp » correspond à la milliseconde où la politique de mitigation a été déclenchée en réponse à la tentative d’exploitation de la vulnérabilité identifiée « CVEID ». « IPHost » correspond à l’adresse IP de l’ordinateur EQ n . « SecurityNamespaceID » correspond à l’espace de nommage dédié à la sécurité du conteneur C1 sur lequel a été exécuté le processus p1 qui a déclenché la politique. « Msg » correspond à un message textuel additionnel pour décrire l’attaque. Un exemple d'écriture de ce signal peut être : « 1644824642, 192.168.1.152, 4026532216, CVE-2021-3156, Attempt to exploit CVE-XXXX-XXXX blocked ». Lors de l’étape F_E2 de l’envoi vers le serveur de gestion de sécurité Cnode, le module MDET n peut éventuellement enrichir le message décrit ci-dessus avec des informations de contexte pour caractériser plus précisément le conteneur attaqué (par exemple : nom de l’image conteneur, nom du processus principal, instant de démarrage du conteneur), pour former le message Log i . Le message Log i envoyé lors de l’étape F_E2 est réceptionné par le serveur de gestion de sécurité CNode lors de l’étape E_R. Lors de l’étape E_A, un signal représentatif de ce message Log i est ajouté à une liste. Ce signal peut par exemple être une copie du message Log i , ou une version compressée de ce message. L’exemple de la vulnérabilité CVE-2021-3156 permet d’illustrer l’exécution d’une politique de mitigation. Cette vulnérabilité CVE qui affecte la commande sudo est particulièrement critique étant donné que sudo est utilisé dans de très nombreux environnements. Lorsqu’une commande est passée avec sudo, les arguments de la commande sont d’abord concaténés et les métacaractères sont échappés avec un antislash (par exemple, "\" devient "\\"). Lorsqu’un caractère spécial, par exemple [,{,(,\ ou ^, est lu en tant que caractère normal et non en tant que caractère spécial, il peut être précédé d’un antislash \. On appelle cela échapper un caractère. En particulier, l’ échappement décrit ici n’est pas effectué lorsque sudo est exécuté via le lien symbolique sudoedit -s. De ce fait, si un argument de la commande sudoedit se termine par un seul antislash, les arguments n’étant pas échappés par sudo, le programme va copier des caractères hors des limites du tampon mémoire (« buffer » en anglais), ce qui entraînera un dépassement de la mémoire tampon (« buffer overflow » en anglais). Une politique de mitigation attachée à la fonction noyau oper_exec() déclenchée par le lancement de l’exécution d’un binaire, peut mitiger la vulnérabilité CVE-2021-3156 en détectant et en bloquant toute tentative d’exécuter la commande sudoedit avec un argument se terminant par un unique antislash. Un exemple d’extrait de code exécutable en langage eBPF (pour « Extended Berkeley Packet Filter » ) d’une telle politique de mitigation est présenté dans l’annexe 1. Dans cet extrait de code, le premier appel à la fonction STRING_HELPER vérifie si la commande exécutée est sudoedit. Le second appel vérifie si un argument se termine avec un unique antislash. Si la commande sudoedit est exécutée avec un unique antislash, alors l’exécution de la commande est annulée (avec l’instruction « RET_DENIED »), sinon, la commande est exécutée (avec l’instruction « RET_ALLOWED »). Dans cet exemple, la fonction STRING_HELPER est une fonction de support nécessaire à l’exécution de la politique de mitigation. Elle peut notamment être chargée sur le noyau KER n comme décrit ultérieurement. L’annexe 2 présente un extrait de code exécutable en langage eBPF d’une politique de mitigation indiquant un envoi d’un message vers l’espace utilisateur si la commande sudoedit a été lancée avec un unique antislash. Ce message indique la détection de cette attaque par la politique de mitigation. Cet extrait de code peut notamment être ajouté à une ligne précédent l’instruction « return RET_DENIED » dans l’extrait de code présenté par l’annexe 1. La représente un ensemble composé d’un serveur de gestion de sécurité CNode, de deux ordinateurs EQ 1 et EQ 2 et d’un serveur de sécurisation SRV SEC . Le serveur de gestion de sécurité CNode est doté d’un module MIDA mettant en œuvre le procédé d’identification conformément à un mode de réalisation de l’invention. Il est également doté de moyens de communication 13’ avec les ordinateurs et d’un module COM de communication avec un utilisateur, par exemple un administrateur de l’ensemble d’ordinateurs. Chaque ordinateur EQ 1 et EQ 2 est équipé pour mettre en œuvre le procédé de détection conformément à un mode de réalisation de l’invention. Par soucis de clarté, les détails de l’ordinateur EQ 2 ne sont pas détaillés sur la , mais celui-ci comporte comme l’ordinateur EQ 1 les composants permettant de mettre en œuvre le procédé de détection d’attaques informatiques. L’ordinateur EQ 1 comporte un système logiciel SYS 1 et des composants matériels, dont notamment : un processeur 10, une mémoire vive de type RAM 11, une mémoire morte de type ROM 12, des moyens de communication 13 et une mémoire réinscriptible non volatile, par exemple un disque dur 14. Les moyens de communication 13 sont configurés pour communiquer avec le serveur de sécurisation SRV SEC et le serveur de gestion de sécurité CNode. Le serveur SERV SEC et les autres moyens utilisés dans cet exemple pour mettre en œuvre l’étape d’installation F_I d’une politique de mitigation sont présentés ci-dessous. Ce serveur de sécurisation SERV SEC comporte une base de données BD comportant un ensemble d’identifiants CVE de vulnérabilités et en association avec chacun de ces identifiants de vulnérabilité ID CVEi , l’identifiant ID Fi d’un fichier de description d’un programme PG i configuré pour s’exécuter dans le noyau d’un ordinateur et pour mettre en œuvre une politique de mitigation apte à mitiger la vulnérabilité d’identifiant ID CVEi . Le fichier de description identifié par ID Fi est représenté sur la et est décrit ultérieurement. Les programmes PG i peuvent être téléchargés par l’équipement EQ 1 auprès du serveur de sécurisation SERV SEC . Par soucis de simplicité, on appelle politique de mitigation un tel programme PG i mettant en œuvre une politique de mitigation. Un identifiant ID CVEi de vulnérabilité est par exemple de la forme CVE-AAAA-IIII, où AAAA est l'année de publication et IIII un numéro unique. Dans le mode de réalisation décrit ici, les politiques de mitigation PG i téléchargeables auprès du serveur de sécurisation SERV SEC sont des fichiers sources en langage eBPF, notés PG S i . Dans un autre mode de réalisation décrit ici, les politiques de mitigation PG i téléchargeables auprès du serveur de sécurisation SERV SEC sont des fichiers objets notés PG O i obtenus par compilation de fichiers sources PG S i en langage eBPF. Dans le mode de réalisation décrit ici, les fichiers de description sont au format JSON (en anglais « Java Script Object Notation »). Dans l’exemple de réalisation décrit ici, le fichier de description ID Fi d’une politique de mitigation PG i comporte : - dans un champ « ID VUL », l’identifiant ID CVEi de la vulnérabilité que cette politique peut mitiger ; et - dans une structure « META_PG » des métadonnées du programme de mitigation PG i . Dans le mode de réalisation décrit ici, les métadonnées du programme de mitigation PG i comportent : - une métadonnée « NP » correspondant au nom de ce programme PG ; et - au moins une métadonnée « HK » correspondant à un point de déclenchement (en anglais « hook ») de ce programme. Dans le mode de réalisation décrit ici, une politique de mitigation PG i peut faire appel à au moins une fonction de support (ou dépendance, en anglais « helper ») HLP i,j . Dans l’exemple de réalisation décrit ici, lorsqu’une politique PG i fait appel à au moins une fonction de support HLP i,j : - le fichier de description ID Fi comporte, dans une structure « META_HLP » des métadonnées de cette fonction de support HLP i,j ; et - ces fonctions de support HLP i,j peuvent être téléchargées auprès du serveur de sécurisation SERV SEC. Dans le mode de réalisation décrit ici, les métadonnées META_HLP d’une fonction de support HLP i,j comportent : - une métadonnée « NH » correspondant au nom de cette fonction de support ; - une métadonnée « HSH » correspondant à un haché de cette fonction de support ; et - une métadonnée « EP » correspondant à un point d’entrée de la fonction. Le système logiciel SYS 1 comporte un noyau ou système d’exploitation KER 1 , et un espace utilisateur USR 1 . Dans le mode de réalisation décrit ici, le système d’exploitation KER 1 est de type Linux (marque déposée). Dans le mode de réalisation représenté sur la , le module de détection MDET 1 comporte un sous-module d’installation MINST 1 . Ce sous-module MINST 1 est configuré pour mettre en œuvre l’étape d’installation F_I du procédé de détection conforme à l’invention et dont les principales étapes sont représentées sous forme d’ordinogramme à la . Dans l’exemple décrit ici, l’espace utilisateur USR 1 comporte : - un processus racine p0 et un conteneur C1 associés à des droits de niveau utilisateur créés par le processus racine p0 ; et - un outil d’administration ADM 1 associé à des droits de niveau administrateur. Dans cet exemple, le lancement de l’exécution d’une fonction vulnérable fc1 (par exemple sudoedit) entraîne l’exécution de la fonction exec dans l’espace utilisateur USR n , elle-même lançant l’exécution de la fonction oper_exec à exécuter dans le noyau KER 1 . La fonction vulnérable à protéger fc1 est par exemple la fonction sudoedit mentionnée ci-avant. Une vulnérabilité CVE telle que la CVE-2021-3156 décrite précédemment peut être détectée au niveau des opérations LSM (pour « Linux Security Module ») déclenchées par le lancement de l’exécution de cette fonction fc1. Dans ce cas, un administrateur central peut effectuer l’étape d’envoi E_E d’un signal reçu par le noyau de chaque ordinateur EQ 1 et EQ 2 , ou seulement à un des deux ordinateurs. Comme décrit précédemment, dans ce mode de réalisation, ce signal comprend un identifiant de la vulnérabilité. Cet identifiant permet de mettre en œuvre l’étape d’installation F_I. La représente un mode particulier de mise en œuvre de l’étape d’installation F_I du procédé de détection. Dans cet exemple, l’installation F_I est mise en œuvre par un sous-module MINST n d’installation de l’ordinateur EQ n . Ce mode particulier est décrit dans la demande de brevet Français déposée le 02/03/2021 sous le numéro 2102026. On décrit ici cette étape d’installation F_I pour un ordinateur EQ n pouvant désigner un des ordinateurs EQ 1 et EQ 2 représentés sur la . Au cours d’une sous-étape F10 de l’étape d’installation F_I, le sous-module d’installation MINST n envoie une requête REQ au serveur SRV SEC , cette requête REQ comportant l’identifiant de vulnérabilité ID CVEk correspondant au signal envoyé E_E par le serveur de gestion de sécurité et reçu (F_R) dans l’espace utilisateur USR n de l’ordinateur EQ n . Au cours d’une sous-étape F20, le sous-module d’installation MINST n reçoit, en réponse à la requête REQ, le fichier de description dont l’identifiant ID Fk est associé à l’identifiant de vulnérabilité ID CVEk dans la base de données BD du serveur de sécurisation SRV SEC . Ce fichier de description ID Fk est représenté à la . Dans l’exemple de réalisation décrit ici, le fichier de description ID Fk comporte : - dans le champ « ID VUL », l’identifiant ID CVEk de la vulnérabilité ; - dans la structure « META_PG », les métadonnées d’une politique PG k de mitigation de la vulnérabilité ID CVEk ; et - dans la structure « META_HLP » les métadonnées de deux fonctions de support HLPk1 et HLPk2 appelées par la politique PG k . Dans l’exemple de la , les métadonnées META_PG du programme de mitigation PG k comportent : - la métadonnée « NP » correspondant au nom PG k de ce programme ; et - la métadonnée « HK » correspondant au point de déclenchement du programme PG k constitué ici par l’appel de la fonction oper_exec, qui correspond par exemple à l’exécution d’un binaire. Dans l’exemple de la , les métadonnées META_HLP de la fonction de support HLPk1 comportent : - la métadonnée « NH » correspondant au nom HLPk1 de cette fonction de support ; - la métadonnée « HSH » comprenant un haché « a0…65f » de cette fonction de support ; et - la métadonnée « EP » correspondant à un point d’entrée DYNFUN dans cette fonction de support, par exemple 4. Dans l’exemple de la , les métadonnées META_HLP de la fonction de support HLPk2 comportent : - la métadonnée « NH » correspondant au nom HLPk2 de cette fonction de support - la métadonnée « HSH » comprenant un haché « c7…409 » de cette fonction de support ; et - la métadonnée « EP » correspondant à un point d’entrée DYNFUN dans cette fonction de support ; par exemple 2. Au cours d’une sous-étape F30 de l’étape d’installation F_I, le sous-module d’installation MINST n vérifie si les fonctions de support HLPk1 et HLPk2 nécessaires à l’exécution de la politique de mitigation PG k et identifiées dans le fichier de description ID Fk reçu à la sous-étape F20 sont déjà installées dans le noyau KER n . Dans le mode de réalisation décrit ici, le module MINST n effectue cette vérification à travers une interface noyau du noyau KER n . Cette opération peut être réalisée en interrogeant un système de fichier virtuel, par exemple similaire au système Sysfs décrit en particulier dans le manuel Linux https://man7.org/linux/man-pages/man5/sysfs.5.html. En pratique, des fonctions de support génériques susceptibles d’être appelées par de nombreux programmes de mitigation peuvent être préinstallées dans le noyau KER n . Dans l’exemple de réalisation décrit ici, les fonctions de support HLPk1 et HLPk2 sont déjà installées dans le noyau KER n et le résultat du test F30 est positif. Au cours d’une sous-étape F40, le module d’installation MINST n télécharge le programme de mitigation PG k identifié dans le fichier de description ID Fk reçu à la sous-étape F20. Dans le mode de réalisation décrit ici, ce téléchargement s’effectue auprès du serveur de sécurisation SRV SEC . Dans le mode de réalisation décrit ici, ce programme (noté PG S k ) est téléchargé en code source au format eBPF. Au cours d’une sous-étape F50, le module d’installation MINST n compile le programme de mitigation PG k . Au cours d’une sous-étape F60, le programme de mitigation PG k est lié avec un fichier d’en-tête HDF selon un mécanisme d’édition de liens (en anglais « link »), pour obtenir un programme de mitigation exécutable PG E k . Dans le mode de réalisation décrit ici, ce fichier d’en-tête HDF est mémorisé dans la mémoire non volatile réinscriptible 14 ( ). Ce fichier d’en-tête HDF est mis à jour à chaque fois qu’une fonction de support HLPk1 et HLPk2 est installée dans le noyau KER n . Un exemple de fichier d’en-tête HDF peut comporter, en supposant que seules les fonctions de support HLPk1 et HLPk2 sont installées dans le noyau KER n et que la fonction HLPk1 a été installée avant la fonction HLPk2 : - une première ligne L1 ajoutée au moment de l’installation de la fonction de support HLPk1 dans le noyau KER n ; et - une deuxième ligne L2 ajoutée au moment de l’installation de la fonction de support HLPk2. Chaque ligne L1, L2 peut comporter : - la chaîne de caractère « #define __ID_ », concaténée - au nom de la fonction de support, c’est-à-dire à la chaîne de caractères « HLPk1 », « HLPk2 », concaténé - au caractère « _ », concaténé - au haché de la fonction de support, à savoir dans cet exemple « a0…65f » pour la ligne L1 et « c7…409 » pour la ligne L2, concaténé - à la chaîne de caractères « __ », concaténé - à un numéro correspondant à un index de position de la fonction de support dans la mémoire du noyau KER n , 0 pour la ligne L1 et 1 pour la ligne L2. Le fichier d’en-tête HDF peut comporter, après l’ensemble des lignes L1, L2, … correspondantes à chacune des fonctions de support installées dans le noyau KER n , une ligne : # define fnsup_stat(fs_id, h, pe_id, arg) fnsup_dyn(__ID_##fs_id##_##h##__, pe_id, arg) L’homme du métier comprend ainsi que si, par exemple, le fichier de mitigation PG k , comporte dans son code source l’instruction fnsup_stat(HLPk1, a0…65f, 4, arg), la sous-étape F60 d’édition de lien traduit cette instruction : - dans un premier temps en fnsup_dyn(__ID_HLPk1_a0…65f__, 4, arg), - puis dans un deuxième temps, en fnsup_dyn(0, 4, arg), car, en ligne L1, __ID_HLPk1_a0…65f__ est défini à 0 où 4 correspond au point d’entrée à appeler dans la fonction support HLPk1. La forme exécutable de la politique de mitigation PG k , en binaire, est mémorisée dans la mémoire non volatile 14 de l’ordinateur EQ n pour installation dans une zone ZPS du noyau KER n au cours d’une sous-étape F70 décrite ultérieurement. Dans le mode de réalisation décrit ici, la fonction fnsup_stat est une fonction statique qui agit comme un proxy pour appeler les fonctions de support installées dans le noyau KER n . Dans le mode de réalisation décrit ici, cette fonction comporte trois paramètres : - un identifiant de la fonction support fs_id, valorisé à « 0 » dans cet exemple ; - un point d’entrée pe_id dans la fonction support, valorisé à 4 dans cet exemple ; et - des arguments valorisés ici à arg. Conformément à ce mode de réalisation de l’invention, lorsque les programmes de mitigation sont chargés dans le noyau (sous-étape F70 décrite ultérieurement), un espace mémoire leur est réservé, et l’adresse de cet espace mémoire est associé à l’identifiant fs_id de fonction de support dans une table TB du noyau KER n . Dans l’exemple de la qui illustre un noyau KER n d’un ordinateur EQ n , la table TB du noyau KER n illustre la situation dans laquelle le programme de mitigation PG k est installé à l’adresse @PG k , avec un identifiant de fonction de support valorisé à 0 de sorte que l’exécution de l’instruction fnsup_dyn(0, 4, arg) déclenche l’exécution de la politique de mitigation PG k au point d’entrée 4, avec les arguments arg. De retour au test F30 ( ), s’il s’avère qu’au moins une fonction de support HLPk1 et HLPk2 identifiée dans le fichier de description n’est pas installée dans le noyau KER n , le résultat du test F30 est négatif, et cette fonction de support doit être téléchargée (étape H10) auprès du serveur SRV SEC et installée (étape H20) dans la zone ZPS du noyau KER n représentée sur la . Dans le mode de réalisation décrit ici, les fonctions de support sont téléchargées en code objet et destinées à être liées avec le code objet de la politique de mitigation. Ces étapes de téléchargement sont effectuées par un module de l’espace utilisateur USR n bénéficiant de droits administrateur. Une fois que toutes les fonctions de support nécessaires à l’exécution de la politique de mitigation PG k sont installées dans le noyau KER n , ce fichier peut être compilé (sous-étape F50), linké (sous-étape F60) et chargé à son tour dans le noyau. Dans la variante de réalisation décrite précédemment, le programme de mitigation est téléchargé en code source. En variante, le programme de mitigation PG k est téléchargé sous forme de code objet (noté PG O k ) et la sous-étape F50 de compilation n’est pas nécessaire. Dans un mode de réalisation de cette variante, la compilation du programme de mitigation en code source utilise le fichier de description IF Fk de la , et génère en plus du code objet PG O k , un tableau comportant une case pour chaque fonction de support appelée par cette politique de mitigation. La k ième case de ce tableau est réservée pour contenir l’identifiant fs_id de la k ième fonction de support prise dans l’ordre du fichier de description ID Fk . Ce tableau est téléchargé en même temps que le code objet PG O k , au cours de l’étape F40. Au moment de l’édition de liens (sous-étape F60), chaque case k du tableau est remplie avec l’identifiant HLP k,1 de la k ième fonction de support. Il est important de rappeler que dans cet exemple, la politique de mitigation PG k vise à mitiger et à détecter la vulnérabilité exploitant l’appel de la fonction fc1 par un processus. Pour exécuter la politique de mitigation, et dans le mode de réalisation décrit ici, l’invention met en œuvre le procédé de sécurisation décrit dans le document [1]. Ce procédé de sécurisation est représenté sur la . Dans le mode de réalisation décrit ici, les processus de l’espace utilisateur USR n sont isolés grâce au mécanisme d’espaces de nommage. Par exemple, le système d’exploitation Linux propose plusieurs espaces de nommage (par exemple : Network, IPC, PID, User) qui peuvent être utilisés pour isoler des processus dans un mécanisme dans lequel on définit des ensembles de processus, de sorte que les processus d’un ensemble donné ne puissent pas voir les ressources utilisées par un autre ensemble de processus. Dans l’exemple décrit ici : - le processus racine p0 est associé respectivement à des espaces de nommage différents ENIPC0 (pour IPC), ENIPD0 (pour PID), ENUser0 (pour User) ; - les processus du conteneur C1, en l’occurrence le processus p1, sont associés à des espaces de nommage différents ENIPC1, ENIPD1, ENUser1. Dans l’exemple décrit ici, le processus p1 appelle la fonction fc1 à protéger, dont l’exécution appelle une autre fonction exec s’exécutant dans l’espace utilisateur USR n . Dans le mode de réalisation décrit ici, on considère que les opérations oper_open() d’ouverture de fichier, oper_exec() d’exécution de fonction sont des opérations sensibles. Dans l’exemple de la le processus p1 du conteneur C1 appelle : - l’appel système open() d’ouverture de fichier qui génère lors de son exécution, l’opération sensible oper_open(); et - l’appel système exec() d’exécution d’un binaire qui génère lors de son exécution, l’opération sensible oper_exec();. Dans l’exemple de la , le processus p0 ne fait pas appel aux fonctions exec(), open(). Conformément au mécanisme décrit dans le document [1] et représenté sur la , les processus p0 et p1 sont également associés à un espace de nommage ENSECURE dédié à la gestion de la sécurité. Dans le mode de réalisation décrit ici, le processus p0 est associé à l’espace de nommage de gestion de la sécurité ENSECURE0 et le conteneur C1 est associé à l’espace de nommage de gestion de la sécurité ENSECURE1. La représente une table TABPID des processus mémorisée dans le noyau KER n . Dans le noyau KER n , un processus est constitué d’une structure comportant plusieurs champs permettant de gérer son cycle de vie comme son identifiant PID, ses drapeaux (flags en anglais), sa pile (stack en anglais), et un champ nsproxy qui comporte des pointeurs vers les espaces de nommage. En particulier, le champ nsproxy comporte un pointeur ENSECURE vers l’espace de nommage dédié à la gestion de la sécurité associé à ce processus. Cet espace de nommage définit une structure de données qui comprend notamment la politique de mitigation. L’espace de nommage ENSECURE d’un processus comporte un lien vers l’espace de nommage ENSECURE du parent de l’espace de nommage de ce processus. Dans l’exemple décrit ici, ENSECURE1 associé au conteneur C1 pointe vers l’espace de nommage ENSECURE0 du processus p0. Les espaces de nommage ENSECURE forment donc un arbre. De façon connue de l’homme du métier, un processus peut changer d’espace de nommage pour rejoindre l’espace de nommage d’un de ses processus fils, par exemple en utilisant la commande unshare(). Depuis l’espace utilisateur USR n , il est possible d’accéder à l’identifiant d’un espace de nommage mais il n’est pas possible de modifier sa structure. Cette caractéristique permet avantageusement d’empêcher toute modification ou désactivation d’une politique de sécurité ou de mitigation par un conteneur. Dans l’exemple de réalisation décrit ici, on suppose que le processus p0() a défini une politique de mitigation PG k pour sécuriser les appels à l’opération sensible d’exécution de fonction oper_exec(). On suppose qu’il n’a pas défini de politique de sécurité pour sécuriser les appels à l’opération sensible d’ouverture de fichier oper_open(). Dans l’exemple de réalisation décrit ici, on suppose que le conteneur C1 n’a pas défini sa propre politique de sécurité pour sécuriser les appels par ses processus, en l’occurrence p1, à l’opération sensible d’exécution de binaire oper_exec(), en complément de la politique PG k définie par le processus p0. On se place maintenant dans le contexte dans lequel la politique de mitigation PG k a été générée par compilation et édition de liens au cours des sous-étapes F50 et F60 de l’étape d’installation F_I. Le programme de mitigation PG k stocké dans la mémoire non volatile 14 doit être chargé dans la zone ZPS de politiques de sécurité du noyau KER n . Dans le mode de réalisation de l’étape d’installation F_I décrit ici, le sous-module d’installation MINST n comporte des instructions load_ps() pour charger (sous-étape F70) un programme de mitigation sous forme d’un fichier eBPF compilé sous forme binaire dans la zone ZPS du noyau KER n . Cette fonction load_ps() consiste à ouvrir le fichier eBPF compris dans la mémoire non volatile 14 et à le copier vers une interface avec le noyau KER n . Comme décrit précédemment, cette étape comprend l’allocation d’un espace mémoire dans la zone ZPS pour cette fonction de mitigation, et l’association de l’adresse de cet espace mémoire avec un identifiant fs_id de fonction de support dans une table TB du noyau KER n . Dans le mode de réalisation décrit ici, cette écriture dans l’interface noyau déclenche un événement pour stocker le programme de mitigation dans l’espace de nommage du processus racine p0. Dans le mode de réalisation décrit ici en lien avec la , le noyau KER n comporte une infrastructure de contrôle de sécurité ICS de gestion des Modules de sécurité Linux, un module de gestion de sécurité Linux LSM1 et éventuellement au moins un autre module de sécurité LSM2, par exemple, un module SELinux ou un module AppAmor. Dans l’exemple de réalisation décrit ici, le noyau KER n comporte une table de contrôle TABCTR qui définit, pour chaque opération sensible OPS (ouverture de fichier, exécution d’un binaire, …) si le module de sécurité LSM1 veut contrôler ou non ces opérations sensibles. Dans l’exemple de vérification décrit ici, on suppose que le module de sécurité LSM1 ne souhaite vérifier que l’opération sensible d’exécution d’un binaire oper_exec(). La représente sous forme d’ordinogramme les principales étapes d’un procédé de sécurisation mis en œuvre par le gestionnaire d’appel système GAS, l’infrastructure de contrôle de sécurité ICS (en anglais framework LSM) et par le module de sécurité LSM1 tels que représentés à la . Dans l’exemple de réalisation décrit ici, le gestionnaire d’appel système GAS détermine, au cours d’une étape E10, si un appel système déclenché par un processus de l’espace utilisateur doit réaliser une opération sensible OPS. Si c’est le cas, il déclenche l’infrastructure de contrôle de sécurité ICS du noyau KER n . L’infrastructure ICS détermine si l’opération sensible OPS est répertoriée dans la table TABCTR. Dans l’exemple de réalisation décrit ici, si un processus souhaite réaliser l’opération sensible d’ouvrir un fichier (oper_open()) par appel à la fonction open(), comme cette opération sensible n’est pas vérifiée par le module de sécurité LSM1, le résultat de l’étape de détermination est négatif. Cette opération peut néanmoins être vérifiée par le module de sécurité LSM2, par exemple SELinux et un module AppAmor. Lorsque le processus p1 appelle la fonction exec, l’infrastructure ICS détermine que cette opération est répertoriée dans la table TABCTR et elle déclenche l’exécution du module de sécurité LSM1 au cours d’une étape E20. Au cours d’une étape E30, le module de sécurité LSM1 détermine l’espace de nommage associé au processus courant à l’origine de cet appel. Il utilise pour cela le processus courant de la table des processus TABPID. Il s’agit en l’occurrence du processus p1. Le module de sécurité LSM1 exécute ensuite une boucle pour exécuter les politiques de l’espace de nommage du processus courant liées à cette opération sensible. Dans un mode de réalisation particulier, le module de sécurité LSM1 exécute ensuite une boucle pour exécuter les politiques de ses espaces de nommage ancêtres s’ils existent. Au cours d’une étape E40 le module de sécurité LSM1 détermine si l’espace de nommage courant a défini une ou plusieurs politiques de sécurité pour vérifier la validité de l’opération sensible. C’est le cas si la fonction exec() d’exécution d’un binaire a été appelée par le processus p1. Si c’est le cas, le module de sécurité concerné LSM1 exécute au cours d’une étape E50 la ou les politiques de sécurité définies dans l’espace de nommage dédié à la gestion de sécurité ENSECURE du processus courant pour cette opération sensible. En l’espèce, au cours de la première itération, aucune politique de mitigation PG k n’est exécutée. Dans le mode de réalisation décrit ici, une politique de mitigation, et en particulier la politique de mitigation PG k renvoie un résultat RET négatif si elle détecte un problème de sécurité (traduisant par exemple un comportement malveillant ou anormal) et un résultat positif si elle ne détecte aucun problème de sécurité. Si cette valeur RET est positive, le module de sécurité détermine, s’il existe, l’espace de nommage parent de l’espace de nommage du processus courant (étape E60) et la boucle se répète. En l’espèce, au cours de la deuxième itération la politique de mitigation PG k de l’espace de nommage ENSECURE0 du processus p0 est exécutée et la fonction open_exec() est bloquée. Le module de sécurité LSM1 enregistre ce blocage dans un fichier de log FLOG ( ) du noyau KER n au cours d’une étape E70 et envoie un résultat négatif RET à l’infrastructure de contrôle de sécurité ICS. Ce fichier de log FLOG peut être analysé par l’administrateur au moyen de l’outil d’administration ADM. Dans un autre cas où toutes les politiques de sécurité (dans cet exemple, uniquement la politique de mitigation PG k est installée) de toute l’arborescence d’espaces de nommages ont été exécutées avec un résultat RET positif, le module de sécurité LSM1 envoie un résultat positif RET à l’infrastructure de contrôle de sécurité ICS (test E90). Dans le mode de réalisation décrit ici, si l’infrastructure de contrôle de sécurité ICS reçoit un résultat RET positif, elle ne déclenche pas d’action particulière et l’appel système est exécuté, sauf si une action est déclenchée par un autre module de sécurité LSM2, par exemple, un module SELinux ou un module AppAmor. Dans le mode de réalisation décrit ici, si l’infrastructure de contrôle de sécurité ICS reçoit un résultat RET négatif, l’infrastructure de contrôle de sécurité ICS déclenche une action de sécurité AS au cours d’une étape E80. Cette action peut consister à détruire le processus à l’origine de l’appel et à lever une alerte dans le fichier de log FLOG. [1] : Snappy : Programmable Kernel-Level Policies for Containers, Maxime Bélair, Sylvie Laniepce, Jean-Marc Menaud, Mars 2021, ACM ISBN 978-1-4503-8104-8/21/03 Ci-dessous sont présentées les annexes. [Annexe. 1] if (secuhub_helper(STRING_HELPER, HASH_STRING, STRING_BINNAME, {(void*)0, "/usr/bin/sudo"}) == 1 && secuhub_helper(STRING_HELPER, HASH_STRING, STRING_REGEX, {(void*)-1, "^(.*[^\\])?\\$"}) == 1) return RET_DENIED; return ALLOWED [Annexe 2] secuhub_helper(STRING_HELPER, HASH_STRING, ALERT_ONCE, {PR_ERR, "Attempt to exploit CVE-2021-3156 blocked"}); Procédé de détection d’une tentative d’attaque informatique mis en œuvre par un ordinateur (EQ n ), ladite attaque exploitant une vulnérabilité (CVE k ) d’une fonction à protéger (fc1) s’exécutant dans un processus (p1) d’un espace utilisateur (USR n ) dudit ordinateur (EQ n ), un lancement de l’exécution de ladite fonction à protéger (fc1) ayant pour conséquence l’exécution, avant ladite attaque, d’une fonction du noyau (oper_exec), ledit procédé comportant des étapes de : - exécution (F_Ex) d’une politique de mitigation (PG k ) dans ledit noyau (KER n ), ladite politique de mitigation (PG k ) étant associée à ladite fonction du noyau (oper_exec) et étant chargée dans un espace de nommage (ENSECURE1) du noyau associé audit processus (p1) et dédié à la sécurité ; et, si ladite politique de mitigation détecte lors de son exécution un vecteur d’attaque pris en charge par ladite politique et ciblant ladite fonction à protéger (fc1) : - envoi (F_E) à un serveur de gestion de sécurité (CNode) d’un message (Log i ) comportant une donnée représentative dudit processus (p1). Procédé selon la revendication 1 caractérisé en ce que l’exécution de ladite fonction à protéger (fc1) entraîne l’exécution d’une autre fonction (exec) dudit espace utilisateur (USR n ) qui entraîne l’exécution de ladite fonction (oper_exec) du noyau. Procédé selon la revendication 1 ou 2 dans lequel ladite politique de mitigation (PG k ) est chargée dans un espace de nommage (ENSECURE0) dédié à la sécurité et associé à un processus racine dudit ordinateur (EQ n ). Procédé de détection selon l’une des revendications 1 à 3 comportant des étapes de : - réception (F_R), en provenance dudit serveur de gestion de sécurité, d’un identifiant (ID CVEk ) de politique de mitigation ; - installation (F_I), dans ledit noyau (KER n ), de ladite politique de mitigation (PG k ) correspondant audit identifiant de la politique de mitigation (PG k ) . Procédé selon la revendication 4 dans lequel ladite étape d’installation (F_I) comporte des sous-étapes de : - envoi (F10) d’une requête (REQ) comportant ledit identifiant (ID CVEk ) de politique de mitigation à un serveur de sécurisation (SRV SEC ) ; - obtention (F20), en réponse à la requête (REQ), d’un fichier (ID Fk ) de description de ladite politique de mitigation (PG k ) ; - obtention (F40, F50) d’un code objet (PG O k ) de la politique de mitigation (PG k ) identifiée dans ledit fichier de description (ID Fk ) ; - génération (F60) d’un code exécutable (PG E k ) de ladite politique de mitigation (PG k ) à partir dudit code objet (PG O k ); et - installation (F70) du code exécutable (PG E K ) dans ledit noyau (KER n ). Procédé selon l’une des revendications 1 à 5 dans lequel ladite étape d’envoi (F_E) dudit au moins un message (Log i ) au serveur de gestion de sécurité (CNode) est mise en œuvre à partir dudit espace utilisateur (USR n ) en réponse à l’envoi (F_E1) d’un signal par ledit noyau (KER n ) audit espace utilisateur (USR n ) pour signaler ladite détection dudit vecteur d’attaque. Procédé selon l’une des revendications 1 à 6 dans lequel ledit au moins un message (Log i ) comporte au moins une information parmi : - un identifiant (IP n ) dudit ordinateur (EQ n ) ; - une donnée représentative dudit espace de nommage (ENSECURE1) associé audit processus (p1) et dédié à la sécurité ; - un identifiant de ladite vulnérabilité (CVE k ) ; - un temps auquel l’exécution de la politique de mitigation a été déclenchée. Procédé d’identification mis en œuvre par un serveur de gestion de sécurité (CNode) pour identifier une tentative d’attaque informatique sur au moins un ordinateur (EQ n ), ladite attaque exploitant une vulnérabilité (CVE k ) d’une fonction (fc1) à protéger s’exécutant dans un espace utilisateur de l’ordinateur, ledit procédé comportant des étapes de : - réception (E_R) en provenance dudit au moins un ordinateur (EQ n ), d’un message (Log i ) comportant une donnée représentative d’un processus (p1) s’exécutant dans ledit espace utilisateur, lorsqu’un vecteur d’attaque ciblant ladite fonction à protéger (fc1) a été détecté, dans le noyau de l’ordinateur, par l’exécution d’une politique de mitigation (PG k ) chargée dans un espace de nommage (ENSECURE1) du noyau dédié à la sécurité et associé à ce processus ; - ajout (E_A) à une liste d’une donnée représentative dudit message (Log i ). Procédé selon la revendication 8 comportant une étape d’envoi (E_E) audit au moins un ordinateur (EQ n ), d’un identifiant de ladite politique de mitigation (PG k ). Module de détection (MDET n ) d’une tentative d’attaque informatique dans un ordinateur (EQ n ), ladite attaque exploitant une vulnérabilité (CVE k ) d’une fonction à protéger (fc1) s’exécutant dans un processus (p1) d’un espace utilisateur (USR n ) dudit ordinateur (EQ n ), un lancement de l’exécution de ladite fonction à protéger (fc1) ayant pour conséquence l’exécution, avant ladite attaque, d’une fonction du noyau (oper_exec), ledit module comportant : - un sous-module d’exécution (M_Ex) configuré pour exécuter une politique de mitigation (PG k ) dans ledit noyau (KER n ), ladite politique de mitigation (PG k ) étant associée à ladite fonction du noyau (oper_exec) et étant chargée dans un espace de nommage (ENSECURE1) du noyau associé audit processus (p1) et dédié à la sécurité ; - un sous-module d’envoi (M_E) configuré pour envoyer à un serveur de gestion de sécurité (CNode) un message (Log i ) comportant une donnée représentative dudit processus (p1), ledit sous-module d’envoi (M_E) étant configuré pour envoyer ledit message si ladite politique de mitigation détecte un vecteur d’attaque pris en charge par ladite politique et ciblant ladite fonction à protéger (fc1). Module (MIDA) d’identification pouvant être mis en œuvre par un serveur de gestion de sécurité (CNode), ledit module (MIDA) étant configuré pour identifier une tentative d’attaque informatique sur au moins un ordinateur (EQ n ), ladite attaque exploitant une vulnérabilité (CVE k ) d’une fonction (fc1) à protéger s’exécutant dans un espace utilisateur dudit ordinateur, ledit module (MIDA) comportant : - un sous-module de réception (M_R) configuré pour recevoir en provenance dudit au moins un ordinateur (EQ n ), un message (Log i ) comportant une donnée représentative d’un processus (p1) s’exécutant ledit espace utilisateur, lorsqu’un vecteur d’attaque ciblant la fonction à protéger a été détecté, dans le noyau de l’ordinateur, par l’exécution d’une politique de mitigation (PG k ) chargée dans un espace de nommage (ENSECURE1) du noyau dédié à la sécurité et associé au processus (p1) ; - un sous-module d’ajout (M_A) configuré pour ajouter à une liste une donnée représentative dudit message (Log i ). Programme d'ordinateur comprenant des instructions qui, lorsque le programme est exécuté par un ordinateur, conduisent celui-ci à mettre en œuvre un procédé selon l’une des revendications 1 à 9. Support d’enregistrement, lisible par un ordinateur (EQ n ) et/ou un serveur (CNode), d’un programme informatique comportant des instructions pour l’exécution des étapes d’un procédé selon au moins une des revendications 1 à 9.