Brevet FR3096489A1 — publié le 20201127

Description Titre de l'invention : Procédé de génération d'une base de données d'expressions régulières utilisée pour déterminer la version d'un composant logiciel [0001] Arrière-plan de l'invention [0002] L'invention se rapporte au domaine général de la gestion des composants logiciels. [0003] Elle trouve une application privilégiée niais non limitative dans la gestion des composants logiciels constituant le logiciel d'un objet connecté. [0004] Lors de l'audit d'un objet connecté, il est habituel et nécessaire de recenser les failles ou vulnérabilités d'un objet (ou CVE pour Common Vulnerability & Exposure). [0005] Pour cela, il est connu d'interroger une base de données (cve-details ou cve-search) avec le numéro de version et le nom du composant logiciel. [0006] Une première technique utilisée pour récupérer les numéros de version d'un composant logiciel de l'objet à auditer consiste à écouter le réseau (par exemple par nmap) pour détecter les services réseaux accessibles sur l'objet (ex : telnet, ssh, serveur web) et à identifier leur version en utilisant les informations (« bannière ») données par ce service. [0007] Cette première technique est très partielle, car elle ne permet de détecter que les services réseaux IP. En particulier, elle ne permet pas de récupérer la version des composants logiciels internes (par exemple dbus pour le bus de communication interne, libcurl pour le client http, ou encore bluez pour le composant bluetooth). [0008] Une deuxième technique consiste à se connecter en ssh, telnet ou en port série (par une faille ou un mot de passe faible), puis à lancer un exécutable, par exemple avec un paramètre de commande, pour obtenir des informations (par exemple : openssl - -version) [0009] Cette deuxième méthode nécessite que l'auditeur se connecte sur l'équipement. Par ailleurs elle ne fonctionne que sur des composants logiciels contenant des fichiers « applicatifs ». En particulier, elle ne permet pas de récupérer la version des librairies comme libssl ou libcurl. [0010] Ces solutions ne sont pas satisfaisantes. [0011] Objet et résumé de l'invention [0012] L'invention vise par conséquent une solution pour obtenir la version d'un composant logiciel. Elle peut être utilisée pour obtenir la version d'un ou plusieurs composants logiciels d'un objet à auditer. [0013] Plus précisément, et selon un premier aspect, l'invention propose un procédé de gé- nération d'une base de données d'expressions régulières associée à un composant. 2 logiciel. Ce procédé comporte : - une étape de génération d'au moins une version du composant logiciel de date connue, cette version du composant logiciel étant composée d'au moins un fichier binaire ; - une étape de recherche dans une zone prédéterminée dudit au moins un fichier binaire d'une chaîne de caractères comportant cette version ; - une étape de détermination, par un procédé d'apprentissage, d'au moins une expression régulière respectée par au moins une desdites chaînes et comportant une variable correspondant à cette version ; et - une étape de mémorisation de ladite au moins une expression régulière dans une base de données en remplaçant, dans cette expression régulière, la variable par une expression régulière correspondant au format attendu d'une version. [0014] Corrélativement, l'invention concerne un dispositif de génération d'une base de données d'expressions régulières associée à un composant logiciel. Ce dispositif comporte : - un module de génération d'au moins une version dudit composant logiciel de date connue, cette version du composant logiciel étant composée d'au moins un fichier binaire ; - un module de recherche dans une zone prédéterminée dudit au moins un fichier binaire d'une chaîne de caractères comportant une dite version ; - un module de détermination, par un procédé d'apprentissage, d'au moins une expression régulière respectée par au moins une desdites chaînes et comportant une variable correspondant à cette version ; et - un module de mémorisation de ladite au moins une expression régulière dans une base de données, en remplaçant, dans ladite expression régulière, ladite variable par une expression régulière correspondant au format attendu d'une version. [0015] Selon un deuxième aspect, l'invention concerne un procédé de détermination de la version d'au moins un composant logiciel composé d'au moins un fichier en code binaire Ce procédé comporte: - une étape de recherche, dans une zone prédéterminée dudit fichier, d'au moins une chaîne de caractères respectant au moins une expression régulière mémorisée dans une base de données associée audit au moins un composant logiciel et générée par un procédé de génération tel que mentionné ci-dessus ; - une étape d'identification dans ladite au moins une chaîne de caractères, d'au moins une version, dite « version candidate » respectant l'expression régulière correspondant au format attendu d'une version ; - une étape de détermination de la version dudit au moins un composant logiciel à partir de ladite au moins une version candidate. 3 [0016] Corrélativement, l'invention vise aussi un dispositif de détermination de la version d'au moins un composant logiciel composé d'au moins un fichier en code binaire, comportant : - un module de recherche, dans une zone prédéterminée dudit fichier, d'au moins une chaîne de caractères respectant au moins une expression régulière mémorisée dans une base de données associée audit au moins un composant logiciel et générée par un procédé de génération tel que mentionné ci-dessus; - un module d'identification dans ladite au moins une chaîne de caractères, d'au moins une version, dite « version candidate » respectant ladite expression régulière correspondant au format attendu d'une version ; - un module de détermination de la version dudit au moins un composant logiciel à partir de ladite au moins une version candidate. [0017] Ainsi, et d'une façon générale, l'invention propose une solution consistant à essayer de détecter automatiquement des chaînes de caractères correspondant à des versions dans le code binaire d'un composant logiciel en utilisant une base de données d'expressions régulières découvertes par un procédé d'apprentissage. [0018] Dans un mode particulier de réalisation de l'invention, l'expression régulière cor- respondant au format attendu d'une version est [0-9](.[0-9]-4a-zA-ZP)-E. D'autres formats peuvent être utilisés. [0019] Dans un mode de réalisation du procédé de génération d'une base de données selon l'invention, on attribue un score aux expressions régulières dans la base de données. [0020] Ces scores sont ajustés automatiquement. Ils sont utilisés pour donner un poids aux expressions régulières les plus usuelles. [0021] Dans un mode de réalisation, le procédé de détermination de la version d'au moins un composant logiciel selon l'invention comporte : - une étape d'augmentation du score associé auxdites expressions régulières respectées par au moins une chaîne de caractères de ladite zone prédéterminée ; et/ou - une étape de diminution du score associé aux expressions régulières qui ne sont respectées par aucune chaîne de caractères de ladite zone prédéterminée, ces scores étant pris en compte dans l'étape de détermination de la version dudit au moins un composant logiciel. [0022] Dans un mode de réalisation de l'invention, le procédé de détermination de la version d'au moins un composant logiciel comporte une étape de suppression, dans la base de données, des expressions régulières attribuées à un score inférieur à un seuil déterminé. [0023] Ces scores peuvent être utilisés pour choisir la version d'un composant logiciel lorsque plusieurs versions candidates ont été déterminées. [0024] Dans un mode de réalisation de l'invention, le procédé de détermination de la version d'au moins un composant logiciel comporte : - une étape de détection d'une condition pour départager au moins deux dites versions candidates différentes identifiées pour ce premier composant logiciel, à partir des scores attribués aux expressions régulières ayant permis d'identifier lesdites versions candidates ; - la mise en oeuvre d'un procédé de détermination tel que mentionné ci-dessus pour déterminer la version d'au moins un autre composant logiciel, le premier composant logiciel et ledit au moins un autre composant logiciel étant des composants d'un même logiciel ; - l'étape de détermination de la version du premier composant logiciel comportant : + l'obtention d'une date de publication dudit au moins un autre composant logiciel ; + l'obtention des dates de publication desdites au moins deux versions candidates du premier composant logiciel ; + la version dudit premier composant logiciel étant déterminée parmi lesdites versions candidates en fonction desdites dates de publication. [0025] Dans un mode de réalisation de l'invention, la détection est vérifiée lorsque : - les versions candidates ont un score identique ; ou - les versions candidates ont toutes un score inférieur à un seuil. [0026] Dans un mode de réalisation de l'invention, au cours de l'étape de recherche, on ne prend en compte que les expressions régulières qui ont été utilisées après une date déterminée. [0027] Ce mode de réalisation permet d'accélérer le procédé de détermination. [0028] Dans un mode de réalisation de l'invention, cette date déterminée est comprise dans un entête d'un logiciel comprenant le composant logiciel, cette date correspondant à la date de génération dudit logiciel. [0029] Dans un mode de réalisation de l'invention, cette zone réservée est une zone comprenant les constantes et les chaînes de caractères du composant logiciel. [0030] Dans un mode particulier de réalisation, les différentes étapes du procédé de gé- nération d'une base de données d'expressions régulières, et/ou les différentes étapes du procédé de détermination de la version d'au moins un composant logiciel sont déterminées par des instructions de programmes d'ordinateurs. [0031] En conséquence, l'invention vise aussi un programme d'ordinateur sur un support d'informations, ce programme étant susceptible d'être mis en oeuvre dans un point d'accès ou plus généralement dans un ordinateur, ce programme comportant des instructions adaptées à la mise en oeuvre des étapes d'un procédé tel que décrit ci-dessus. [0032] 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. 100331 L'invention vise aussi un support d'informations ou d'enregistrement lisible par un ordinateur, et comportant des instructions d'un programme d'ordinateur tel que mentionné ci-dessus. [0034] Le support d'informations ou d'enregistrement peut être n'importe quelle entité ou dispositif capable de stocker le programme. Par exemple, le support peut 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. [0035] D'autre part, le support d'informations ou d'enregistrement peut être un support trans- missible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d'autres moyens. Le programme selon l'invention peut être en particulier téléchargé sur un réseau de type Internet. [0036] Alternativement, le support d'informations ou d'enregistrement peut être un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution du procédé en question. Brève description des dessins [0037] D'autres caractéristiques et avantages de la présente invention ressortiront de la des- cription 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 figures : [0038] [fig.11 la figure I représente un logiciel ; [0039] [fig.21 la figure 2 représente une table de version pouvant être utilisée dans l' invention ; [0040] [fig.31 la figure 3 représente l'architecture d'un fichier binaire de composant logiciel [0041] [fig.41 la figure 4 illustre, sous forme d'organigramme, les principales étapes d'un procédé de génération d'une base de données d'expressions régulières selon l'invention, dans un mode particulier de réalisation ; [0042] [fig.51 la figure 5 illustre, sous forme d'organigramme, les principales étapes d'un procédé de détermination dc la version d'un composant logiciel selon l'invention, dans un mode particulier de réalisation ; [0043] [fig.6Aet6B] les figures 6A et 6B représentent de façon schématique un dispositif de génération d'une base de données d'expressions régulières selon l'invention, dans un mode particulier de réalisation ; [0044] [fig.7Aet7B] les figures 6A et 6B représentent de façon schématique un dispositif de génération d'une base de données d'expressions régulières selon l'invention, dans un mode particulier de réalisation. Description détaillée de l'invention 6 [0045] La figure 1 représente un logiciel LOU composé de composants logiciels CLi, chaque composant logiciel ayant une version vi. Un composant logiciel CLi de version v; est composé d'un ou plusieurs fichiers binaires [0046] Dans l'exemple de la figure 1 : - le composant logiciel CL, a la version v; ; il est composé de deux fichiers binaires F 13.1 et F13.2 ; - le composant logiciel CL, a la version v2; il est composé de trois fichiers binaires F 2,2.1, F2,22 et F2223 ; [0047] Par exemple, le composant logiciel OpenSSL est composé de plusieurs fichiers binaires par exemple: - l'applicatif openssl qui permet à un utilisateur de générer des certificats ; - les librairies libssl.so et libcrypto.so qui peuvent être utilisées par l'applicatif openssl ou par d'autres composants logiciels ; - des fichiers de configuration comme /etc/ssl/openssl.cnf. [0048] Dans le mode de réalisation décrit ici, le logiciel LOG comporte en outre un entête comportant la date DLOG de génération de ce logiciel LOU. [0049] La figure 2 représente une table de versions TV comportant pour chaque version v; d'un composant logiciel CLi, sa date de publication [0050] La figure 3 représente l'architecture d'un fichier binaire de composant logiciel Fi,pc. Un tel fichier comporte : - un entête H indiquant son type (fichier applicatif, librairie, fichier de configuration, ...) ; - une zone de code binaire ZCB comportant du code assembleur à exécuter, cette zone étant appelée zone ELF « .text » sous Linux; et - une zone ZCC comportant des chaînes de caractères et des constantes TXTy, cette zone étant appelée zone ELF « .rodata » sous linux. [0051] L'invention propose de rechercher la version vi d'un composant logiciel CLi dans la zone prédéterminée ZCC des fichiers binaires Fi,pc contenant les chaînes de caractères et les constantes, soit dans la zone ELF .rodata sous Linux [0052] En référence à la figure 4, nous allons maintenant décrire les principales étapes d'un procédé de génération d'une base de données d'expressions régulières selon l'invention. [0053] Dans l'exemple décrit ici, ce procédé génère une base de données BDc,,, associée au composant logiciel CL1. [0054] Ce procédé comporte une étape El° de génération d'au moins une version v; du composant logiciel CL; de date connue, par exemple 1000 versions. La génération d'un composant logiciel est une étape connue de l'homme du métier du logiciel consistant à créer ce composant par exemple par compilation de fichiers sources, d'édition de lien 7 avec des librairies, ... [0055] Chaque version vi du composant logiciel CL, ainsi obtenue est composée d'au moins un fichier binaire F41.. [0056] Par exemple, la création de la version v3 du composant logiciel CL, permet d'obtenir les deux fichiers binaires F131 et F1,2,2. [0057] Cette étape de génération peut utiliser l'utilitaire Buildroot disponible à l'adresse https://buildroot.org/, cet utilitaire étant configure pour générer un composant logiciel à partir d'un fichier d'entrée comportant la liste des sous-composants de cc composant à activer. [0058] Le procédé de génération selon l'invention comporte ensuite une boucle de traitement de tous les fichiers binaires obtenus à l'étape E10. [0059] Cette boucle comporte un test El5 pour vérifier si tous les fichiers ont été traités. [0060] Si cc n'est pas le cas, le résultat du test El 5 est négatif et le test El 5 est suivi par une étape E20 de recherche dans la zone prédéterminée ZCC du fichier binaire Fi .0] en cours de traitement d'une chaîne de caractères comportant la version \Ti. [0061] Par exemple, on recherche la version v' dans les deux fichiers binaires F, , et F, 32. [0062] Cette recherche peut être effectuée en utilisant la fonction grcp. [0063] Par exemple, la commande « grep -ra 0.9.7f libssl.so* libcrypto.so openssl » recherche les chaînes de caractères comportant la version « 0.9.7f » dans les fichiers libssl.so*, libcrypto.so, et openssl. [0064] L'annexe A donne des exemples de chaînes de caractères comportant la version 0.9.7f du composant logiciel OpenSSL. [0065] Lorsque le résultat de l'étape E20 de recherche est positif, le procédé de génération selon l'invention comporte une étape E30 de détermination, par un procédé d'apprentissage, d'au moins une expression régulière ExRegn respectée par au moins une des chaînes de caractères obtenues à l'étape E20 et comportant une variable correspondant à ladite version. L'expression régulière peut par exemple être obtenue en remplaçant dans la chaîne de caractères, la version par une variable. [0066] L'Annexe B fournit des exemples d'expressions régulières respectées par au moins une chaîne de caractères de l'Annexe A et dont la variable $VERSION correspond à la version 0.9.7f. [0067] Ces expressions régulières sont mémorisées dans une base de données BDREc, au cours d'une étape E40, en remplaçant la variable $VERSION par une expression régulière ExRegv'sion correspondant au format attendu d'une version. [0068] Dans le mode de réalisation décrit ici, une version est une suite de chiffres et de lettres séparées par des points, on peut par exemple la décrire avec l'expression régulière ExReg suivante : [0-9](.[0-9]-F[a-zA-Z])-F. [0069] Dans le mode de réalisation décrit ici, le procédé attribue au cours d'une étape E50 8 un score SC' à l'expression régulière ExReg' dans la base de données. Dans l'exemple de réalisation décrit ici, ce score SC, est une constante, par exemple 5. [0070] Une fois que les recherches de chaînes de caractères ont été effectuées pour tous les fichiers binaires obtenus à l'étape El 0, le résultat du test El 5 est négatif et le procédé de génération se termine. [0071] L'annexe C représente une base de données BD'Lc obtenue par l'invention. [0072] Dans le mode de réalisation décrit ici, on enregistre également dans la base de données BDREG la période dans le temps au cours de laquelle une expression régulière a été utilisée. Dans l'exemple de l'annexe C, à titre d'exemple, l'expression régulière ExRegi a été utilisée pour le composant logiciel CL, entre mars 2011 et juillet 2012. [0073] En référence à la figure 5, nous allons maintenant décrire les principales étapes d'un procédé de détermination de la version d'au moins un composant logiciel CL,. [0074] Ce procédé comporte une étape F10 d'obtention du ou des fichiers binaires composant ce composant logiciel. On utilise la notation Fi,7,1, pour exprimer le fait que la version du composant logiciel est inconnue. [0075] Le procédé de détermination selon l'invention comporte ensuite une boucle de traitement de tous les fichiers binaires Fi.?,, obtenus à l'étape F10. [0076] Cette boucle comporte un test F15 pour vérifier si tous les fichiers ont été traités. [0077] Si cc n'est pas le cas, le résultat du test F15 est négatif et le test F15 est suivi par une étape F20 de recherche dans la zone prédéterminée ZCC du fichier binaire en cours de traitement d'au moins une chaîne de caractères respectant au moins une expression régulière mémorisée dans la base de données BDREG associée à ce composant logiciel et générée par un procédé de génération tel que décrit en référence à la figure 4. [0078] Dans l'exemple de réalisation décrit ici, cette étape consiste à rechercher les chaînes de caractères STR, respectant les expressions régulières ExRegn de la base de données BDR,r, telle qu'illustrée dans l'Annexe C. [0079] Si une telle chaîne STR, est trouvée, le procédé de détermination comporte une étape F30 d'identification dans cette chaîne de caractères STRP, d'au moins une version vk, dite « version candidate », la version vic respectant l'expression régulière ExReg,,i,', correspondant au format attendu d'une version. [0080] Une fois que tous les fichiers binaires obtenus à l'étape FIO ont été traités, le résultat du test FI5 est négatif. [0081] Dans le mode de réalisation décrit ici, le test FIS est alors suivi par une étape F40 de gestion des scores SC' attribués aux expressions régulières ExRegn. [0082] Dans le mode de réalisation décrit ici : - les scores SC' associés aux expressions régulières ExReg' identifiées à l'étape F20, c'est-à-dire respectées par au moins une chaîne de caractères de la zone prédéterminée ZCC d'un fichier Fi,?,k sont augmentés, éventuellement jusqu'à une valeur limite, par 9 exemple 10 ; - les scores SC' des autres expressions régulières sont diminués ; et - les expressions régulières ExReg' attribuées à un score inférieur à un seuil déterminé sont supprimées de la base BDREG. [0083] Dans un mode de réalisation, le seuil déterminé de suppression est égal à 1. [0084] Dans un mode de réalisation, on ne recherche pas toutes les expressions régulières niais uniquement celles dont la date de validité enregistrée en troisième colonne dans la hase de données BDRE.G telle qu'illustrée avec l'Annexe C est postérieure à une date déterminée. Cette date peut être la date DLOG de génération du logiciel LOG. [0085] L'étape F40 est suivie par une étape générale de détermination de la version v; du composant logiciel CL; à partir de la ou des versions candidates vk. [0086] Dans le mode de réalisation décrit ici, on détermine au cours d'un test F50 s'il est possible de déterminer directement la version v; du composant logiciel CL; à partir des versions candidates vk ou s'il est nécessaire de départager les versions candidates vk. [0087] Dans un mode de réalisation, on considère qu'il est nécessaire de départager des versions candidates différentes VI, si elles ont un score identique ou si elles ont toutes un score inférieur à un seuil. Dans cc cas le résultat du test F50 est négatif. [0088] Dans le mode de réalisation décrit ici, lorsqu'il est nécessaire de départager deux versions candidates vk possibles pour un composant logiciel CLi on utilise les informations obtenues pour un autre composant logiciel CL, du même logiciel LOG dont on connait la version avec certitude. [0089] Au cours d'une étape F60 on recherche un composant logiciel CL, du même logiciel LOU dont on connait la version v, avec certitude et on détermine la date de début de publication Dq.i de ce composant logiciel CL,. [0090] Au cours d'une étape F80 on retient pour version cri du composant CLi la version pour laquelle la date de publication D, est la plus proche de D',_ [0091] La figure 6A représente l'architecture matérielle d'un dispositif DG de génération d'une base de données d'expressions régulières conforme à un mode particulier de réalisation de l'invention. Dans le mode de réalisation décrit ci-après ce dispositif DG peut être constitué par un ordinateur. [0092] Ce dispositif DG comprend notamment un processeur 13, une mémoire vive 14, un disque dur 15 ainsi que des moyens de communication 17 lui permettant de communiquer sur un réseau de télécommunications. [0093] Le disque dur 15 constitue en outre un support d'enregistrement conforme à l'invention, lisible par le processeur 13 et sur lequel est enregistré ici un programme d'ordinateur PROGA conforme à l'invention. [0094] Le programme d'ordinateur PROGA définit des modules fonctionnels (et logiciels ici), configurés pour mettre en oeuvre les étapes du procédé de génération d'une base de données d'expressions régulières selon l'invention. [0095] Ces modules sont représentés schématiquement à la figure 6B. Ils comportent : - un module M10 de génération d'au moins une version du composant logiciel de date connue, cette version vj du composant logiciel CL; étant composée d'au moins un fichier binaire Fitij., ; - un module M20 de recherche dans une zone ZCC prédéterminée dudit au moins un fichier binaire Fitij., d'une chaîne de caractères comportant une dite version ; - un module M30 de détermination, par un procédé d'apprentissage, d'au moins une expression régulière ExReg' respectée par au moins une desdites chaînes et comportant une variable correspondant à cette version ; et - un module M40 de mémorisation de ladite au moins une expression régulière dans une base de données, en remplaçant, dans ladite expression régulière ExReg', ladite variable WERSION par une expression régulière ExRegp' correspondant au format attendu d'une version. [0096] La figure 7A représente l'architecture matérielle d'un dispositif DD de détermination de la version d'un composant logiciel conforme à un mode particulier de réalisation de l'invention, cc composant logiciel comportant au moins un fichier en code binaire. Dans le mode de réalisation décrit ci-après ce dispositif DD est peut être constitué par un ordinateur. [0097] Ce dispositif DD comprend notamment un processeur 23, une mémoire vive 24, un disque dur 25 ainsi que des moyens de communication 27 lui permettant de communiquer sur un réseau de télécommunications. [0098] Le disque dur 25 constitue en outre un support d'enregistrement conforme à l'invention, lisible par le processeur 23 et sur lequel est enregistré ici un programme d'ordinateur PROGB conforme à l'invention. [0099] Le programme d'ordinateur PROGB définit des modules fonctionnels (et logiciels ici), configurés pour mettre en oeuvre les étapes du procédé de détermination de la version d'un composant logiciel selon l'invention. [0100] Ces modules sont représentés schématiquement à la figure 7B. Ils comportent : - un module MF20 de recherche, dans une zone ZCC prédéterminée dudit fichier, d'au moins une chaîne de caractères STR,, respectant au moins une expression régulière ExReg,, mémorisée dans une base de données BDREC, associée audit au moins un composant logiciel et générée par un procédé de génération tel que décrit précédemment; - un module MF30 d'identification dans ladite au moins une chaîne de caractères STRp, d'au moins une version, dite « version candidate » vk respectant ladite expression régulière ExRegvendp, correspondant au format attendu d'une version ; - un module MF40 de détermination de la version vi dudit au moins un composant 11 logiciel à partir de ladite au moins une version candidate. [0101] ANNEXE A [0102] MD5 part of OpenSSL 0.9.7f 22 Mar 2005 SHA part of OpenSSL 0.9.7f 22 Mar 2005 SHAl part of OpenSSL 0.9.7f 22 Mar 2005 DES part of OpenSSL 0.9.7f 22 Mar 2005 I ihdes part of OpenSSL 0.9.7f 22 Mar 2005 Diffie-Hellman part of OpenSSL 0.9.7f 22 Mar 2005 [0103] ANNEXE B [0104] MD5 part of OpenSSL WERSION part of OpenSSL SVERSION [0-91+ part of OpenSSL SVERSION OpenSSL WERSION OpenSSL WERSION 22 Mar 2005 WERSION 22 Mar 2005 [0105] ANNEXE C [0106] n ge i;..9 1 MDS part of OpenSSL -9] .{0- + - -211-1- 5 03/11-07/12 part OpenSSL [O- g]( 9]-F[a- -Zr [ - ± S part of OpenSSL [0-9](40-91-qa-z.A-Zr)-1- S OpenSSL 0-91[0- -4-[ - -Z )-k- 5 5 OpenSSL [0-9H. - [ - -Z 1-1-. 22 Mer 2005 6 [09j(Jo9]+jazA 22 Mer 2005 12 REVENDICATIONS[Revendication 1] Procédé de génération d'une base de données (BDREG) d'expressions ré- gulières (ExRegn) associée à un composant logiciel (CL), ce procédé comportant : - une étape (El 0) de génération d'au moins une version dudit composant logiciel de date connue, ladite version (vi) dudit composant logiciel (CL ) étant composée d'au moins un fichier binaire (F4k) ; - une étape (E20) de recherche dans une zone (ZCC) prédéterminée dudit au moins un fichier binaire (FLik) d'une chaîne de caractères comportant ladite version ; - une étape (E30) de détermination, par un procédé d'apprentissage, d'au moins une expression régulière (ExReg') respectée par au moins une desdites chaînes et comportant une variable ($VERSION) correspondant à ladite version ; et - une étape (E40) de mémorisation de ladite au moins une expression régulière dans une base de données, en remplaçant, dans ladite expression régulière (ExReg'), ladite variable ($VERSION) par une expression régulière (ExReg;'') correspondant au format attendu d'une version. [Revendication 2] Procédé de génération d'une base de données selon la revendication 1 dans lequel on attribue (E50) un score à ladite au moins une expression régulière dans ladite base de données. [Revendication 3] Procédé de génération d'une base de données selon la revendication 1 ou 2 dans lequel ladite expression régulière (ExRegy',i0R) correspondant au format attendu d'une version est [0-9[C[0-9]+[a-zA-Z]t)+. [Revendication 4] Procédé de détermination de la version d'au moins un composant logiciel (CLi) composé d'au moins un fichier (Fi j,k) en code binaire, comportant : - une étape (F20) de recherche, dans une zone (ZCC) prédéterminée dudit fichier, d'au moins une chaîne de caractères (STRp) respectant au moins une expression régulière (ExRegn) mémorisée dans une base de données (BDREG) associée audit au moins un composant logiciel et générée par un procédé de génération selon l'une quelconque des revendications 1 à 3 ; - une étape (F30) d'identification dans ladite au moins une chaîne de caractères (STR,), d'au moins une version, dite « version candidate » (vk) respectant ladite expression régulière (ExRegversion) correspondant au 13 [Revendication 5] [Revendication 6] [Revendication 7] format attendu d'une version ; - une étape de détermination de la version (\Ti) dudit au moins un composant logiciel à partir de ladite au moins une version candidate. Procédé de détermination de la version d'au moins un composant logiciel selon la revendication 4 dans lequel ladite base de données est générée par un procédé de génération selon la revendication 2, caractérisé en cc qu'il comporte : - une étape (F40) d'augmentation du score associé auxdites expressions régulières respectées par au moins une chaîne de caractères de ladite zone prédéterminée ; et/ou - une étape (F40) de diminution du score associé aux expressions régulières qui ne sont respectées par aucune chaîne de caractères de ladite zone prédéterminée, lesdits scores étant pris en compte dans ladite une étape de détermination de la version dudit au moins un composant logiciel Procédé de détermination de la version d'au moins un composant logiciel selon la revendication 5 caractérisé en ce qu'il comporte une étape (F40) de suppression dans ladite base de données des expressions régulières attribuées à un score inférieur à un seuil déterminé. Procédé de détermination de la version d'un premier composant logiciel selon la revendication 5 ou 6, caractérisé en ce qu'il comporte : - une étape (F50) de détection d'une condition pour départager au moins deux dites versions candidates (vk) différentes identifiées pour ce premier composant logiciel, à partir des scores attribués aux expressions régulières ayant permis d'identifier lesdites versions candidates ; - la mise en oeuvre d'un procédé de détermination selon la revendication 3 ou 4 pour déterminer la version d'au moins un autre composant logiciel, ledit premier composant logiciel (CLi) et ledit au moins un autre composant logiciel (CL,) étant des composants d'un même logiciel (LOU); - ladite étape de détermination de la version dudit premier composant logiciel comportant : + l'obtention (F60) d'une date de publication (D,) dudit au moins un autre composant logiciel ; + l'obtention des dates de publication desdites au moins deux versions candidates dudit premier composant logiciel ; + la version (y) dudit premier composant logiciel étant déterminée parmi lesdites versions candidates en fonction desdites dates de pu- 14 [Revendication 8] [Revendication 9] [Revendication 10] [Revendication 11] [Revendication 12] [Revendication 13] blication (Dià, Procédé de détermination de la version d'un premier composant logiciel selon la revendication 7, caractérisé en cc ladite condition est détectée lorsque : - lesdites versions candidates ont un score identique ; ou - lesdites versions candidates ont toutes un score inférieur à un seuil Procédé de détermination de la version d'au moins un composant logiciel selon l'une quelconque des revendications 4 à 8, caractérisé en ce que, au cours de ladite étape de recherche, on ne prend en compte que les expressions régulières qui ont été utilisées après une date déterminée. Procédé de détermination de la version d'au moins un composant logiciel selon la revendication 9, caractérisé en ce que ladite date déterminée est comprise dans un entête d'un logiciel comprenant ledit composant logiciel, ladite date correspondant à la date de génération dudit logiciel. Procédé selon l'une quelconque des revendications 1 à 10 dans lequel ladite zone réservée est une zone comprenant les constantes et les chaînes de caractères dudit composant logiciel. Procédé de détermination selon la revendication 11 dans lequel ladite zone est une zone au format ELF (Executahle and Linking Format). Dispositif de génération d'une base de données (BDREG) d'expressions régulières (ExReg) associée à un composant logiciel (CL,), ce dispositif comportant : - un module (M10) de génération d'au moins une version dudit composant logiciel de date connue, ladite version (\Ti) dudit composant logiciel (CL,) étant composée d'au moins un fichier binaire (E,J,k) - un module (M20) de recherche dans une zone (ZCC) prédéterminée dudit au moins un fichier binaire (FLoc) d'une chaîne de caractères comportant une dite version ; - un module (M30) de détermination, par un procédé d'apprentissage, d'au moins une expression régulière (ExRegi,) respectée par au moins une desdites chaînes et comportant une variable ($VERSION) correspondant à ladite version ; et - un module (M40) de mémorisation de ladite au moins une expression régulière dans une base de données, en remplaçant, dans ladite expression régulière (ExRegn), ladite variable ($VERSION) par une expression régulière (ExRegversion) correspondant au format attendu d'une version. 15 [Revendication 14] Dispositif de détermination de la version d'au moins un composant logiciel (CL,) composé d'au moins un fichier en code binaire, comportant : - un module (MF20) dc recherche, dans une zone (ZCC) prédéterminée dudit fichier, d'au moins une chaîne de caractères (STRp) respectant au moins une expression régulière (ExReg') mémorisée dans une base de données (BDREG) associée audit au moins un composant logiciel et générée par un procédé de génération selon l'une quelconque des revendications 1 à 3 ; - un module (MF30) d'identification dans ladite au moins une chaîne de caractères (STRp), d'au moins une version, dite « version candidate » ) respectant ladite expression régulière (ExReg',) correspondant au format attendu d'une version ; - un module (MF40) dc détermination de la version (vi) dudit au moins un composant logiciel à partir de ladite au moins une version candidate [Revendication 15] Programme d'ordinateur (PROGÀ) comportant des instructions pour l'exécution des étapes du procédé de génération d'une base de données selon l'une quelconque des revendications 1 à 3 lorsque ledit programme est exécuté par un ordinateur (ORD). [Revendication 16] Support d'enregistrement lisible par un ordinateur sur lequel est en- registré un programme d'ordinateur comprenant des instructions pour l'exécution des étapes du procédé de génération d'une base de données selon l'une quelconque des revendications 1 à 3. [Revendication 17] Programme d'ordinateur (PROGB) comportant des instructions pour l'exécution des étapes du procédé de détermination de la version d'un composant logiciel selon l'une quelconque des revendications 4 à 12 lorsque ledit programme est exécuté par un ordinateur (ORD). [Revendication 18] Support d'enregistrement lisible par un ordinateur sur lequel est en- registré un programme d'ordinateur comprenant des instructions pour l'exécution des étapes du procédé de détermination de la version d'un composant logiciel selon l'une quelconque des revendications 4 à 12.