• Aucun résultat trouvé

Un algorithme pour l'analyse de logs

N/A
N/A
Protected

Academic year: 2021

Partager "Un algorithme pour l'analyse de logs"

Copied!
35
0
0

Texte intégral

(1)Un algorithme pour l’analyse de logs Jean Goubault-Larrecq. To cite this version: Jean Goubault-Larrecq. Un algorithme pour l’analyse de logs. [Rapport de recherche] LSV-02-18, LSV, ENS Cachan. 2002. �hal-03201698�. HAL Id: hal-03201698 https://hal.archives-ouvertes.fr/hal-03201698 Submitted on 19 Apr 2021. HAL is a multi-disciplinary open access archive for the deposit and dissemination of scientific research documents, whether they are published or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.. L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés..

(2) J. Goubault−Larrecq. Un algorithme pour l’analyse de logs Research Report LSV−02−18, Nov. 2002. Ecole Normale Supérieure de Cachan 61, avenue du Président Wilson 94235 Cachan Cedex France.

(3) http://www.lsv.ens−cachan.fr/Publis/ Research Report LSV−02−18, Lab. Spécification et Vérification, CNRS & ENS de Cachan, France, Nov. 2002. Un algorithme pour l’analyse de logs Jean Goubault-Larrecq 29 novembre 2002. Table des mati`eres 1 Introduction. 2. 2 Expressions 2.1 Ce que doit eˆ tre un langage d’expressions 2.2 Un exemple de langage d’expressions . . 2.2.1 Valeurs . . . . . . . . . . . . . . 2.2.2 Fonctions auxiliaires . . . . . . . 2.2.3 Syntaxe . . . . . . . . . . . . . . 2.2.4 S´emantique . . . . . . . . . . . . 2.2.5 Fonctions d’analyse statique . . .. . . . . . . .. 2 2 3 3 3 6 6 9. . . . .. 10 11 11 12 12. . . . . . . . . . . . .. 14 14 15 17 18 20 21 22 22 24 24 25 26. 3 Motifs ´ enements, enregistrements 3.1 Ev´ 3.2 Syntaxe . . . . . . . . . . . 3.3 S´emantique . . . . . . . . . 3.4 Fonctions d’analyse statique. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. . . . . . . . . . . .. 4 Machines, formules 4.1 Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 S´emantique . . . . . . . . . . . . . . . . . . . . . . . 4.3 Algorithme . . . . . . . . . . . . . . . . . . . . . . . 4.3.1 Ajout d’un e´ tat dans la file d’attente . . . . . . 4.3.2 Synchronisation, non-subsomption . . . . . . . 4.3.3 Franchissement d’une transition . . . . . . . . 4.3.4 Impossibilit´e de franchir une transition a` jamais 4.3.5 Traitement d’un thread . . . . . . . . . . . . . 4.3.6 Initialisation avant traitement d’un e´ v´enement . 4.3.7 Traitement des diff´erents threads en attente . . 4.3.8 Traitement d’un e´ v´enement . . . . . . . . . . 4.3.9 Analyse de logs . . . . . . . . . . . . . . . . . 1. . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . ..

(4) 4.4 4.5. 1. Fonctions d’analyse statique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Restrictions syntaxiques sur les formules . . . . . . . . . . . . . . . . . . . . . . 28 4.5.1 Toute variable rigide utilis´ee doit eˆ tre d´efinie . . . . . . . . . . . . . . . 29. Introduction. Le but de ce document est de pr´eciser l’algorithme d’analyse de logs pr´esent´e en deuxi`eme partie de l’article [Roger and Goubault-Larrecq, 2001], sous forme rigoureuse et compl`ete. Il est a` noter que l’algorithme d´ecrit en figure 6 de cet article contient une erreur, qui se retrouve dans la preuve du th´eor`eme 4.11. Cette erreur a e´ t´e corrig´ee dans l’outil log eaver le 9 juin 2001, par Jean Goubault-Larrecq au LSV. L’algorithme pr´esent´e ici, de mˆeme, corrige cette erreur. Le but de ce document n’est en revanche pas de prouver cet algorithme, ni non plus de d´ecrire pr´ecis´ement les structures de donn´ees qui peuvent eˆ tre employ´ees pour r´ealiser cet algorithme de mani`ere efficace. L’algorithme peut eˆ tre lu a` deux niveaux : un algorithme de base, et l’algorithme avec sa collection d’optimisations. Les optimisations sont effectu´es grˆace a` des consid´erations d’analyse statique, qui sont probablement relativement difficile a` appr´ehender en premi`ere lecture. Ces consid´erations peuvent eˆ tre ignor´ees en premi`ere lecture, et sont rep´er´ees par une barre en marge, comme pour le paragraphe que vous eˆ tes en train de lire.. 2. Expressions On se fixe en premier un langage d’expressions, qui va servir a` effectuer des calculs.. 2.1 Ce que doit eˆ tre un langage d’expressions Le choix du langage d’expressions est relativement arbitraire, du moment qu’il s’agit d’un langage fonctionnel, c’est-`a-dire que les calculs se font sans modifier d’´etat global, et d´eterministe ; en particulier, e´ valuer deux fois la mˆeme expression doit produire deux fois le mˆeme r´esultat. Il est aussi souhaitable que l’on puisse garantir que l’ex´ecution de toute expression termine, si possible en un temps court. L’efficacit´e de l’algorithme dont il est question dans ce document d´epend directement de la vitesse de calcul d’expressions stock´ees dans les transitions des formules (voir section 4). On suppose que l’on s’est donn´e trois ensembles disjoints de variables : –  , l’ensemble des variables dites rigides ; –  , l’ensemble des variables dites flexibles ; –  , l’ensemble des compteurs. On notera    l’ensemble des variables,

(5)   l’ensemble des variables de motifs. Par convention, on notera ,  ,  , . . ., les variables rigides ; ,  ,  , . . ., les variables flexibles ; ,  ,  , . . ., les compteurs. On notera d’autre part  ,  ,  , . . ., des variables.   .    . . 2.  .

(6) . . quelconques dans . Soit finalement un symbole qui n’est pas dans ; repr´esente l’absence de variable. Un environnement  est une fonction de domaine fini, de vers . Ici est un ensemble dit de valeurs. Le choix de cet ensemble est aussi relativement arbitraire. Il devra typiquement au moins contenir l’ensemble String de toutes les chaˆınes de caract`eres. On supposera qu’il existe aussi un symbole qui n’est pas dans . On notera l’ensemble de tous les environnements. Nous ne demandons qu’une chose d’un langage d’expressions : que l’on puisse d´efinir une fonction. . . .  . . . . . a` tout environnement  et toute expression . Nous verrons qui associe une valeur dans un exemple d’un tel langage en section 2.2.. 2.2 Un exemple de langage d’expressions 2.2.1 Valeurs Soit Int l’ensemble des entiers machine, Time l’ensemble des dates. Typiquement, Int correspondra au type int de C, et Time correspondra au type time_t, le nombre de secondes depuis le 01 janvier 1970 a` 0h00 UTC. Les valeurs seront des chaˆınes, des entiers, des dates, ou bien des listes de valeurs, repr´esentant l’accumulation des valeurs prises par les variables flexibles au cours du temps :.  Acc.  .    . . String Int Time Acc . o`u   d´enote une suite quelconque non vide d’objets de type ; de mˆeme,   d´enote une suite quelconque, possiblement vide, d’objets de type . Une valeur de type Acc est appel´ee un accumulateur. On notera parfois         un accumulateur ,

(7) . Sa longueur est alors

(8)  . Les fonctions   Acc et   Acc sont d´efinies par         ,                  si

(9) ,       . ¼ ½ l’ensemble des bool´eens ; ¼ est le faux, ½ est le vrai. Dans la suite, on notera. . . .  . 2.2.2 Fonctions auxiliaires On pose : –  d´enote l’environnement vide (de domaine vide).  d´enote l’environnement de domaine  , qui a`  associe . –  – Pour tout environnement ,   est le domaine de . – Pour tout environnement , toute variable  , toute valeur ,   est l’environnement de domaine    , et qui associe a`  , et  

(10) a` tout     ..  .  . 3.

(11) .

(12).  .

(13) – Pour tout environnement  et tout sous-ensemble  de variables,  est la restriction de  a`  , c’est-`a-dire l’environnement de domaine    et qui a` tout  dans ce domaine associe  

(14) . – Pour tout ensemble ,   d´esigne l’union disjointe de et de . Le langage d’expressions que nous allons d´efinir est aussi laxiste que Perl [Christiansen et al., 2000]. On peut en particulier convertir tout type de donn´ee vers n’importe quel autre. Pour ceci, on d´efinit les fonctions : –    Int : – pour tout

(15) Int,  

(16)

(17)

(18) ; Time,   

(19) est le nombre de secondes depuis le 01 janvier 1970, – pour tout  0h00 UTC, sp´ecifi´e par  ; – pour tout  String,   

(20) est la valeur enti`ere de , telle que calcul´ee par atoi (3) ; – pour tout Acc,  

(21)   

(22)

(23) . Time : –    – pour tout

(24) Int,  

(25)

(26) est la date situ´ee exactement

(27) secondes apr`es le 01 janvier 1970, 0h00 UTC ; – pour tout  Time,   

(28)  ; – pour tout  String,   

(29) est la date telle que d´ecrite par  au format de ctime (3). A titre d’exemple, la chaˆıne “Wed Jun 30 21:49:08 1993\n” sp e´ cifie le mercredi 30 juin 1993 a` 21 heures 49 minutes et 8 secondes. Les champs jour de la semaine, mois, jour du mois, heure et ann´ee peuvent eˆ tre mis dans n’importe quel ordre, et le nombre d’espaces et tabulations n’est pas important. Un champ absent est consid´er´e comme valant . Les jours de la semaine sont Sun, Mon, Tue, Wed, Thu, Fri, et Sat. Les mois sont Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, et Dec. – pour tout Acc,  

(30)   

(31)

(32) . –  

(33)   String : – pour tout

(34) Int,  

(35) 

(36)

(37) est la chaˆıne repr´esentant

(38) , au sens de itoa (3) ; – pour tout  Time,  

(39)  

(40) est la chaˆıne repr´esentant , au sens de ctime (3) ; – pour tout  String,  

(41)  

(42)  ; – pour tout Acc,  

(43) 

(44)  

(45)  

(46)

(47) . : –    – pour tout Acc,  

(48)   

(49)

(50) ; – pour tout Acc,  

(51) . –   convertit une valeur en un bool´een : 

(52) est ¼ si  

(53) , ½ sinon. –  teste l’´egalit´e de deux valeurs, modulo conversion. On note   plutˆot que  

(54) . – si  Acc, alors   si et seulement si  

(55)  ;  si et seulement si   

(56) ; – si  Acc, alors  – sinon, si  String ou  String, alors   si et seulement si  

(57)  

(58).  

(59)  

(60) ; – sinon, si  Time ou  Time, alors   si et seulement si   

(61). . . .

(62)

(63)

(64)

(65) .

(66)

(67)

(68).

(69) .

(70)

(71)

(72)

(73)  

(74) 

(75) . « . «

(76) «

(77) «

(78)

(79)

(80)

(81). « « «. 4. «. «.

(82)   

(83) ;  si et seulement si   . – sinon,   Int, et  –    

(84) : – si         Acc, alors  

(85) est l’ensemble      ; notamment, comme il s’agit d’un ensemble, les doublons sont e´ limin´es (au sens de l’´egalit´e usuelle, pas de ) ; – si Acc, alors  

(86) . –    Int effectue une somme sans d´ebordement d’entiers positifs ou nuls : – si         Acc, alors  

(87)    

(88)   

(89) 

(90) , o`u   

(91)  est le plus grand entier machine positif ; – si Acc, alors  

(92)    

(93) 

(94) . Si cette d´efinition peut sembler bizarre, c’est qu’elle a e´ t´e conc¸ue pour garantir une propri´et´e de monotonie :   

(95)  

(96) pour toutes valeurs et  ( est d´efinie ci-dessous). Ceci servira dans les optimisations de l’algorithme d’analyse de logs fond´ee sur la monotonie (voir en particulier la d´efinition de  

(97) , section 2.2.5). –  concat`ene deux accumulateurs : – si         Acc, alors   

(98)        ; – si  Acc, alors    

(99)   .   M effectue l’union de deux environnements : – – s’il existe      tel que  

(100)  

(101) , alors   (conflit de  valeurs de la variable rigide ) ; – sinon,   est l’environnement de domaine     , qui a` toute variable      associe  

(102) , a` toute variable      associe  

(103) , a` toute variable rigide      associe  

(104) (noter que  

(105)  

(106) ), a` toute variable flexible      associe  

(107)  

(108) , et a` tout compteur      associe  

(109) . En r´ealit´e, la derni`ere clause portant sur les compteurs est inutile : on n’utilisera jamais que sur des environnements dont le domaine est inclus dans

(110)   . –  est une fonction similaire :   est l’environnement de domaine     qui a` tout    associe  

(111) et a` tout      associe  

(112) . Enfin, on suppose que l’on a un ensemble Regexp, non sp´ecifi´e, dit d’expressions r´eguli`eres, et une fonction

(113)   Regexp String String String. On notera typiquement  un e´ l´ement de Regexp. Typiquement, Regexp est l’ensemble des expressions r´eguli`eres reconnues par l’outil [Spencer, 1986], et

(114)  

(115) 

(116) retourne si la chaˆıne  n’appartient pas au langage  

(117) d´efini par  . Si  n’appartient pas a`  

(118) , on consid`ere que

(119)  

(120) 

(121) ne retourne pas simplement un bool´een “vrai”, mais une fonction qui permet de substituer des sous-parties de  rep´er´ees par des constructions \\1, \\2, . . ., dans l’expression r´eguli`ere  . La substitution de ces constructions dans la chaˆıne  est construite par l’appel

(122)  

(123) 

(124) 

(125) . Par exemple, si  est a([bc]*)a, et  est bcabbcacc, alors

(126)  

(127) 

(128) d\\1e

(129) dbbce. De fac¸on concr`ete,

(130)  

(131) est r´ealis´ee a` l’aide de la fonction regcomp de [Spencer, 1986] ; si 

(132)  

(133) , l’appel  

(134) est effectu´e a` l’aide de la fonction regexec (op.cit.) ; si   

(135) n’est pas ,  

(136) est le r´esultat de l’appel de.

(137)  . 

(138) 

(139). . «.

(140). «.

(141). . . .  .   

(142)  

(143)     

(144)    .

(145) 

(146) 

(147)       

(148). . « 

(149). . . 5. .

(150). . . . . «.  .

(151). .

(152) regsub (op.cit.) 2.2.3 Syntaxe Les expressions ob´eissent a` la syntaxe d´ecrite en figure 1. 2.2.4 S´emantique. .   des expressions dans les environnements  est d´efinie par r´ecurrence La s´emantique structurelle sur par : –     

(153) si  est dans le domaine de , sinon. –    pour tout  String. –    pour tout  Int. –         

(154)     , o` u   et pour tout ,  

(155) ,         . –.            

(156)   , o`u : –   

(157)   

(158) ;   ; – soit

(159)   

(160) 

(161) pour tout ,  

(162) , et 

(163) , minimal tel que 

(164)   

(165) 

(166) , et soit il existe un , .    , o`u : –  est de la forme         ; –   ;  

(167)  pour tout  ,   . –     –    vaut. si .  

(168) ou .      

(169) est faux,    sinon. –     vaut    si    

(170) est vrai,    sino. –    vaut si   

(171) est vrai,  sinon. –    

(172)   vaut    si    

(173) est vrai,    sinon. –     vaut  si     , sinon. –    vaut si     ,  sinon. –      vaut  si     

(174)      

(175) , sinon. –       vaut  si     

(176)   

(177) , sinon.    vaut  si  .  

(178)   .  –     

(179) , sinon. –       vaut  si     

(180)   

(181) , sinon. –    vaut :   –     Int ;   

(182) si  Time ; –       

(183) si  –  ˆ   

(184) si. String   o`u      

(185) . On note  l’addition des entiers machine (y compris les time_t), et ˆ la concat´enation de chaˆınes de caract`eres. –     vaut : –    Int ;   

(186) si  –     

(187) si. Time ;   –   

(188)   String   

(189) si .     .

(190)

(191). . . .            .    . .   .   . .  .   .    . . . .  . . . « «     .

(192)

(193)

(194)

(195)

(196).

(197). 6.    .    . .  . . .

(198) . . . 

(199) 

(200) variable 

(201) String

(202) chaˆıne constante 

(203) Int

(204) entier constant. .         

(205)            

(206)                          

(207)   

(208)  

(209)  

(210)   

(211)

(212)    

(213)     

(214)  

(215)     String.  .

(216). abr´eviation  Regexp

(217) matching d’expression r´eguli`ere et logique ou logique n´egation conditionnelle test d’´egalit´e test de diff´erence inf´erieur strictement inf´erieur ou e´ gal sup´erieur strictement sup´erieur ou e´ gal addition, concat´enation soustraction multiplication division reste oppos´e longueur de chaˆıne extraction de sous-chaˆıne conversion vers entier conversion vers date conversion vers chaˆıne nombre d’´el´ements dans accumulateur test d’appartenance a` un accumulateur valeurs pr´ec´edentes dans accumulateur test de nouveaut´e par rapport a` un accumulateur somme d’accumulateur longueur d’accumulateur.

(218). 

(219)    

(220) substitution. F IG . 1 – Syntaxe des expressions. 7.

(221) –. –. –. – – –. .    .   . .  . .   . . – –.   . Il est a` noter que. . . .   .

(222)

(223).

(224) .

(225)

(226). .

(227).

(228)

(229). .

(230).

(231). .

(232)  . . .  .      –  –  – – – – –. . o`u    la soustraction des entiers machine (y compris les   

(233) . On note time_t).     vaut : –    Int ;   

(234) si  –    Time ;   

(235) si  –   

(236)    

(237) si  String  o`u    la multiplication des entiers machine (y compris   

(238) . On note les time_t).      vaut : Int ; –      

(239) si  –     

(240) si. Time ;   –   

(241)   String   

(242) si  o`u      

(243) . On note  la division des entiers machine (y compris les time_t). Par ceci on entend le quotient de la division enti`ere. Les divisions par z´ero retournent un r´esultat ind´efini.      vaut : –     Int ;   

(244) si  –     Time ;   

(245) si   

(246) si  String –   

(247)     o`u    ere des entiers machine   

(248) . On note  la reste de la division enti` (y compris les time_t). Les restes de divisions par z´ero retournent un r´esultat ind´efini.   vaut si Time,  

(249) si Int String, o`u    

(250) .  

(251)   est la longueur de la chaˆıne  

(252)   

(253) ..     

(254)   est la chaˆıne vide si    , et compos´ee des caract`eres        sinon, o`u : –   

(255)    

(256) ; –

(257) est la longueur de , et  est compos´ee des caract`eres        ; –       

(258)

(259) ; –       

(260)

(261)

(262) . 

(263)      

(264) . 

(265)      

(266) ..  

(267)

(268)    

(269)   

(270) .    est le cardinal de l’ensemble    

(271) .   

(272)   vaut  si  .     

(273)   

(274) , sinon. Noter que la relation d’appartenance est fond´ee sur l’´egalit´e , et non sur la relation .    vaut 

(275) si Acc, sinon, o`u  .  

(276)   vaut si    

(277).     

(278)

(279) ,  sinon ; autrement dit,  

(280) retourne vrai si et seulement si la valeur courante de est fraˆıche, c’est-`a-dire pas dans la liste des anciennes valeurs de .. 

(281)      

(282) .   vaut

(283)  , si        Acc,  sinon.. .

(284). . . . . .  . . ne retourne jamais.

(285). 

(286) .

(287). . 8. . . «.

(288) 2.2.5 Fonctions d’analyse statique Variables libres. On d´efinit d’abord l’ensemble 

(289) des variables libres dans : –  

(290)  ; –  

(291)  

(292) ; –          

(293) 

(294) 

(295) 

(296)

(297)    

(298)  

(299) ; –             

(300)

(301) 

(302)   

(303)   

(304)

(305) 

(306) , o`u  

(307)      pour tout          ;   

(308)   

(309)   

(310)   

(311)   

(312) –    

(313).  . . . –.      

(314)  

(315)  .     . .    . .

(316)  

(317)  

(318)  

(319)  

(320)  

(321)

(322)  

(323)

(324) 

(325)  

(326) ;  

(327)   

(328)

(329)  

(330)

(331)  

(332)

(333)   

(334)

(335)

(336)  

(337)   

(338)

(339)  

(340)

(341)   

(342) 

(343) ;

(344)

(345)   

(346)

(347) 

(348)  

(349)  

(350) .. . . . . . . . . . . . . . . . . . . –          Il est clair que   ne d´epend que des variables libres de , plus pr´ecis´ement : si  et  sont deux environnements tels que  

(351)  

(352) pour tout  

(353) , alors    .. .

(354). . . Monotonie des expressions. Soient  et  deux constantes. On d´efinit une fonction 

(355) qui a` toute expression associe un sous-ensemble de   . Si ce sous-ensemble contient , alors est monotone, c’est-`a-dire que la valeur enti`ere de ne peut que croˆıtre au fur et a` mesure o`u on avance dans le log. Si ce sous-ensemble contient , alors est antitone, et sa valeur ne peut que d´ecroˆıtre. En particulier, si l’ensemble retourn´e est   , alors est constante. S’il est vide, alors on ne sait rien sur l’´evolution de . Ici est un environnement de monotonie qui a` un certain nombre de variables associe un sous-ensemble de   , et 

(356) calcule plus pr´ecis´ement si est croissante, d´ecroissante ou constante sous les hypoth`eses que toutes les variables  de  croissent ou d´ecroissent comme sp´ecifi´e par 

(357) . –  

(358)  (les compteurs ne font que croˆıtre) ; –  

(359) 

(360) si 

(361) et   ; –  

(362) sinon ;   ; –  

(363) –  

(364)   ; –          

(365) 

(366) , o`u et pout tout  ,  

(367) ,   .

(368)  .        vaut si –             

(369)

(370) 

(371)   ; sinon, il vaut. . . . . . . .         

(372) 

(373)                  .                  

(374)    

(375)     o`u         ,    

(376) . (Une intersection vide est suppos´ee e´ gale a`  .) –   

(377)   

(378)   

(379)  

(380)   

(381) . . . . . . . . . . 9. . . .

(382)                        .                          

(383)     . –     

(384)

(385)  

(386)  

(387) .    

(388)    

(389) –   

(390)   si  

(391)  

(392)   , sinon. –    

(393)    

(394)   

(395)

(396) ,  

(397) , o`u  est la fonction qui e´ change  et  (

(398)  

(399)  ,  

(400)  ,   

(401)   ). –    

(402)    

(403)   

(404)  

(405)   

(406)

(407) . –   pour un certain   , 

(408) vaut   si 

(409) 

(410)  ,   

(411)

(412) si 

(413) 

(414) , et vaut  

(415) si 

(416) 

(417) sinon ; la fonction 

(418) est d´efinie comme suit : – 

(419) 

(420)  si  est une constante et   

(421)  ; – 

(422) 

(423) si  est une constante et   

(424)  ; – 

(425) 

(426) si  est une constante et   

(427) ;    

(428) 

(429)  

(430) 

(431) , o`u   ,  , – 

(432)  

(433)  , , et est suppos´ee commutative ; – 

(434)

(435)  dans tous les autres cas. Une constante est une chaˆıne  ou un entier . On pourrait bien sˆur raffiner la d´efinition de la fonction 

(436) , du moment qu’elle retourne un sur-ensemble de tous les signes que peut prendre son argument. –    

(437) vaut   si 

(438) 

(439) pour un certain   , vaut  

(440) si 

(441) 

(442)  ,   

(443)

(444) si 

(445) 

(446) , et sinon. – 

(447)  

(448)  

(449)

(450) . –   

(451)

(452)   

(453)

(454)   si 

(455)   , sinon. –      

(456)

(457)   si  

(458)  

(459)  

(460)   , sinon. –  

(461)

(462)  

(463)

(464)   

(465)

(466)

(467)  

(468) 

(469) . –  

(470) 

(471)  

(472)

(473)  . En effet, le nombre d’´el´ements, la longueur, et la somme d’un accumulateur ne peuvent que croˆıtre. Dans le cas de la somme, c’est a` cause de la forme sp´eciale de la d´efinition de   (section 2.2.2). –    

(474)

(475)  si  

(476)   , sinon. Le premier cas vient du fait qu’un accumulateur  ne peut que croˆıtre dans l’ordre d’inclusion.. . . . . . . .          . 3. . . . 

(477) .

(478). . .  . .     . . . . . . .   .

(479)   . .  .  . . .  . . . . . . Motifs. Les motifs sont des pr´edicats portant sur des e´ v´enements dans le log. Comme pour les expressions, on a une certaine latitude pour d´efinir un langage de motifs. Essentiellement, on a besoin 10.

(480) . £. . de d´efinir deux jugements !    et !  

(481) , o`u   est un motif quelconque    et (cf. section 3.3). Le premier jugement doit eˆ tre d´eterministe, a` savoir que si ! !    , alors   . Les conditions portant sur le second jugement sont plus difficiles a` pr´eciser. Nous nous fixerons donc sur un langage de motifs pr´ecis, sans montrer qu’on pourrait l’´echanger contre un autre.. . 3.1. . . . ´ enements, enregistrements Ev´. Un e´ v´enement est un enregistrement (record) ou le symbole sp´ecial EOF, d´enotant un e´ v´enement de fin de fichier. On va consid´erer, pour simplifier ainsi que par souci d’efficacit´e, qu’un enregistrement est juste un " -uplet, pour un entier " fix´e, d´ependant uniquement du format des logs que l’on cherche a` analyser. On pose     

(482) . Les champs , . . .,  sont des valeurs dans . Le format des enregistrements est typ´e. Autrement dit, on dispose d’un " -uplet Type de types. Les types sont A (chaˆıne de caract`eres), I (entier machine), M (entier machine monotone), T (date), D (date monotone). Pour tout ,   " , si Type A, alors  String ; si Type I M , alors  Int ; si Type T D , alors  Time. Les champs dits monotones, c’est-`a-dire de type M ou D, sont des champs qui ne peuvent que croˆıtre au fur et a` mesure o`u l’on avance dans le log.. .

(483)  .  

(484)  .

(485).

(486).

(487). 3.2 Syntaxe Les motifs ob´eissent a` la syntaxe :  . . #  $%- . #  $%- . .     String. -  -.  -         .  . . .     " 

(488) Regexp 

(489)     -      " 

(490)    

(491).

(492) .    disjointes deux a` deux

(493).

(494) . == != < > <= >=. o`u Regexp est l’ensemble des expressions r´eguli`eres. De plus, les motifs ob´eissent aux restrictions suivantes : – pour tout motif #  $%-             , alors Type   (le test d’expression r´eguli`ere n’a de sens que sur des champs texte) ; – pour tout motif -    -     - , on a  

(495)  

(496) ;.  . 11. . . ,.

(497) – finalement, les restrictions de la section 4.5. (Nous pr´ef´erons les rel´eguer plus loin, car elles font appel a` des fonctions d’analyse statique que nous n’avons pas encore d´efinies.)   -     - . La deuxi`eme condition, alli´ee a` la Soit -  restriction syntaxique de la section 4.5.1, assure que  , une fois e´ valu´ee, ne changera plus jamais de valeur. Ceci est utilis´e pour justifier la correction de la d´efinition du pr´edicat !  

(498) en section 3.3.. £. 3.3 S´emantique On d´efinit maintenant une relation !. .  . . qui d´ecrit quand le motif   est v´erifi´e par l’´ev´enement dans un environnement !, donnant un nouvel environnement . On remarquera qu’on aura dans tous les cas  

(499) .  , o`u – si #  $%-             , alors ! #  $%-  – EOF ; –   

(500)  

(501) ; ; – 

(502)  

(503) 

(504) –   si  ,     sinon ; – pour tout  ,  

(505) ,    si  ,       

(506)  sinon. – si -    -     - , alors ! -   si et seulement si : – EOF ; –   si  ,      sinon ; –    

(507) ;  

(508) est vrai, o`u  est une variable – pour tout  ,  

(509) ,   -   ! fraˆıche. – !   si et seulement si : – EOF ; – et  .  si et seulement si : – si       , alors !   – !    ; – !    ; –    ..  . . .  .  . . .        . .      . . . . 3.4 Fonctions d’analyse statique. . . . Test d’´echec e´ ternel des motifs. Notons !   le pr´edicat exprimant que !    pour aucun environnement . On d´efinit aussi un pr´edicat !  

(510) , qui est intuitivement vrai a` condition que, si !   , alors pour tout e´ v´enement  venant apr`es  dans le log, pour tout environnement ! qui coincide avec ! sur les variables rigides (autrement  !   . Ceci exploite le fait que certains dit, ! 

(511) ! 

(512) pour tout   ), alors. .

(513) . . . 12. . . £.

(514) champs des enregistrements sont monotones (ceux de type M ou D), et ne peuvent que croˆıtre d’un enregistrement a` un enregistrement ult´erieur  : – ! #  $%- 

(515) est toujours faux ;   -     - , si et – ! - 

(516) est vrai, o`u -  seulement s’il existe  ,  

(517) tel que : – EOF ; – Type M D ; –    

(518) ; – pour tout  ,     , ,   -   !  

(519) est vrai, o`u  est une variable fraˆıche ; –   -   !  

(520) est faux, o`u  est une variable fraˆıche ; < <= . – - Noter qu’on pourrait eˆ tre moins exigeant et seulement imposer qu’il existe un  tel que   -   !  

(521) est faux et - < <= , mais ceci demanderait davantage de calculs. Ceci est correct : si ! coincide avec ! sur les variables rigides, alors  !   (ceci demande que 

(522) . ! et 

(523) . ! , ce qui sera as !    sur´e par la condition de la section 4.5.1 et le fait que toutes les variables libres de  sont rigides) ; de plus, le champ  e´ tant monotone,   

(524)   

(525) ; donc si   -   !   

(526) 

(527) est faux , c’est-`a-dire si   

(528)      ! (resp. )  !   ! est faux (resp. ), alors a fortiori   

(529)   est faux aussi, c’est-`a-dire que   -   !   

(530) 

(531) est faux. – ! 

(532) est toujours faux. Ceci peut paraˆıtre surprenant. Mais rien n’interdit de rajouter de nouveaux enregistrements a` la fin d’un log apr`es que l’on a vu sa fin de fichier. Les e´ v´enements EOF sont de ce point de vue des e´ v´enements synth´etiques, servant a` repr´esenter une fin de fichier ; on peut en ins´erer un lorsqu’on rencontre une fin de fichier, ou z´ero si l’on ne souhaite pas d´eclencher d’action sp´eciale sur fin de fichier. – !    

(533) est vrai si et seulement si !   et !  

(534) , ou bien !    , !   , et !  

(535) . Encore une fois, on pourrait eˆ tre moins exigeant et seulement imposer que !   et !  

(536) , ou bien !   , et !  

(537) .. £ £. . .  .

(538)    

(539)  . .

(540) . . . .  £.  . £. £. . .  . . . .  £   £. . . . .  £. .  . . . Variables li´ees a` des champs monotones. On d´efinit de plus l’ensemble   

(541) des variables li´ees par un motif   a` un champ de type monotone. si  Type M D.  –  #  $%- 

(542) sinon o`u #  $%-             ..  si  Type M D –  - 

(543) sinon o`u -    -     - . –  

(544) ..     .   . .

(545) .

(546)  .

(547) .

(548)  . 13.

(549) –   .   

(550).   

(551). .    

(552) . . Variables libres et li´ees par les motifs. On d´efinit maintenant le couple #  

(553) %

(554)    

(555) de l’ensemble des variables libres dans le motif   et de celui des variables li´ees dans le motif   :

(556) –   #  $%- 

(557)       si #  $%-             .

(558) –   - 

(559)   

(560)  si -    -     - . –   

(561)

(562) . –      

(563) #   #   

(564) % 

(565) %

(566) , o`u #   

(567) %

(568)    

(569) et #   

(570) %

(571)    

(572) .. .       . .   . 4. . . . Machines, formules. Les formules, enfin, servent a` d´etecter des attaques, exprim´ees sous forme de corr´elations temporelles entre e´ v´enements rep´er´es par des motifs.. 4.1 Syntaxe Machines. Une machine & est un automate ' (  (  ' Æ

(573) , o`u : – ' est un ensemble fini de sommets, ou e´ tats. On consid´erera que '  . Cette astuce nous permet d’associer naturellement a` chaque e´ tat ( un compteur  , a` savoir l’´etat ( lui-mˆeme. Ce compteur comptabilise le nombre de fois o`u un itin´eraire (section 4.2) passe par l’´etat ( . – (  et (  sont deux e´ tats (dans ') distincts, appel´es respectivement e´ tat d’acceptation et e´ tat de rejet. Le nom d’´etat de rejet est peut-ˆetre un peu trompeur : les deux e´ tats (  et (  sont en fait des e´ tats acceptants, mais seul le premier donne lieu a` une alerte. – ' est un sous-ensemble de '. Les e´ tats de ' sont appel´es e´ tats de choix commis. – Æ est une fonction de transition, qui a` chaque e´ tat ( associe une liste finie de triplets    (

(574) , ( 

(575) ), o`u   est un motif optionnel (c’est-`a-dire un motif, ou le symbole sp´ecial )),  est une expression (la garde), et ( est un e´ tat. Si ( ' , on impose de surcroˆıt que   ) pour tout ,  

(576) .. .  .

(577). .  .

(578).

(579).  On notera parfois ( / (  pour exprimer que le triplet   ( est dans la liste Æ ( .  S’il s’agit du triplet    ( on dira que ( / (  est la i`eme transition sortant de ( . Le nombre

(580) de transitions sortant de ( est appel´e le degr´e de ( . Les e´ tats ( , 

(581) , sont appel´es les successeurs de ( . Si ( ' , Æ ( est vue comme une liste ordonn´ee, sinon Æ ( est juste une collection non ordonn´ee de transitions.. . .

(582).

(583).

(584). 14.

(585).

(586) Formules. Une formule * est un quadruplet & ( 

(587) -  

(588) form´e d’une machine & ' (  (  ' Æ

(589) , d’un e´ tat dit initial ( ', d’un ensemble fini 

(590) -  de variables rigides, dites de synchronisation, et d’un bool´een  (vrai si la formule est anchored au sens de [Goubault-Larrecq, 2001]). ' (  (  ' Æ

(591) sont restreintes de sorte que Les machines & [Roger and Goubault-Larrecq, 2001] : – Acyclicit´e : & ne contient pas de cycles d’)-transitions, autrement dit il n’y a pas de suite ( / ( . non vide de transitions de la forme (  / (  /     Ceci est pour une question de terminaison : sinon l’algorithme de la section 4.3 bouclerait en arrivant sur l’´etat ( . – )-d´eterminisme : pour tout ( ' ' tel qu’il y a deux transitions distinctes (  / (.

(592).

(593) . . . et (  / ( , alors pour aucun environnement  ne sont    

(594) et    

(595) tous les deux vrais. Ceci est pour des raisons de correction de l’algorithme de la section 4.3. Les formules * & ( 

(596) -  

(597) sont de plus restreintes de sorte que : – il n’y a pas de chemin d’)-transitions de ( ni a` (  ni a` (  , autrement dit il n’y a pas de suite. (  / ( , o`u (possiblement vide) de transitions de la forme ( (  / (  /     . (.

(598) (. . (. . .. Sinon * sera trivialement satisfaite a` tout e´ tat ; de telles formules ne sont donc pas sp´ecialement utiles, et compliqueraient l’algorithme de la section 4.3. Les formules ob´eissent a` des restrictions additionnelles, dites de bonne formation, qui seront d´ecrites en section 4.5.. 4.2 S´emantique La s´emantique est celle d´ecrite dans [Roger and Goubault-Larrecq, 2001]. Un log + est une suite, finie ou infinie, d’´ev´enements tels que d´efinis en section 3.1. Noter que le nombre " de champs dans chaque enregistrement de + est constant, de mˆeme que l’information de typage Type. On note + ,  , le i`eme e´ v´enement de + , quand ceci est d´efini. Le domaine  + est l’ensemble des indices  pour lesquels + est d´efini, et est un intervalle 

(599)  ou   . La longueur + du log + est le sup des indices   + ,

(600) dans le premier cas,  dans le second. Pour tout environnement , posons    ,   , et  

(601)  . Rappelons que tout e´ tat est aussi un compteur. Notons ( , pour tout e´ tat ( , l’environnement de domaine   ( , qui a` ( associe  (

(602)   si (  ,  sinon ; et qui a` tout    ( associe  

(603) . Ceci a pour effet d’incr´ementer le compteur associ´e a` l’´etat ( ; un compteur non initialis´e (hors de  ) e´ tant lui mis a` . Ceci est coh´erent avec le fait que (   si (  . & ( 

(604) -  

(605) , & ' (  (  ' Æ

(606) Un itin´eraire partiel d’une formule * dans un log + est une suite finie , ,    ,

(607)

(608) , -  , o`u pour chaque  ,   -, , est un. . .

(609).   

(610).

(611). .  .

(612).

(613). 15.  . .

(614)

(615). triplet (  

(616) , ( ',  – ( ( ,   ;. . – pour tout  ,.

(617)  + , et  est un environnement tels que, si -  alors :. . . . -, soient. (. .    /(.     , . . .,. (. .   /(.  . les. . dans cet ordre (formellement, Æ ( 

(618) est la liste    (

(619)         ( 

(620) ), alors il existe un indice ,  

(621)  , tel que : – ( ( ; –   est un enregistrement, +       ,     

(622) ( , et     ; ou   ),     ( , et    ; –    

(623) est vrai ; ' (en particulier, tous les  ¼ ,  

(624)  , sont des enregistrements), – si (    alors pour tout  ,     , pour tout  tel que +      ¼ , et tel que       est bien d´efini,  ¼   (  

(625) est faux. De plus, si   , alors pour tout  tel que        , pour tout   ,   

(626)  ,   ¼  et     est bien d´efini, pour tout  tel que +     ¼   (  

(627) est faux.  et (

(628) (  Un itin´eraire de * dans + est un itin´eraire partiel comme ci-dessus tel que (auquel cas l’itin´eraire est acceptant) ou (

(629) (  (auquel cas l’itin´eraire est rejetant). Cette d´efinition est relativement illisible, expliquons-l`a en termes plus simples, qui regardent les machines & comme de v´eritables machines, quoique des machines non-d´eterministes. La donn´ee d’un e´ tat ( , d’un entier  num´erotant un e´ v´enement dans le log + , et d’un environnement  , d´ecrit la configuration instantan´ee de la machine & . Lorsqu’elle est dans la configuration (     

(630) , la machine peut alors : – accepter si (  (  ; – ou rejeter si (  (  ;. – ou franchir une )-transition (  / ( , et se retrouver dans la configuration (  transitions sortant de (. . .

(631). . .   . . . . .  . . . . . .  . . soit vraie ; l’op´eration (   effectue un comptage en ajoutant un au nombre de fois o`u l’on est pass´e par l’´etat (  , mais on n’avance pas dans le log (   ) ; – ou avancer d’un nombre ind´etermin´e d’´ev´enements dans le log, pour se retrouver en     , sur un e´ v´enement + reconnu par un motif   et rendant la garde  vraie, . . . . . ( 

(632) , a` condition que la garde . pour une certaine transition (. .   /(.   ; de mˆeme que ci-dessus, le compteur (. . est. incr´ement´e. De plus, si (  ' , alors aucune transition sortant de (  n’est une )-transition (on est donc dans le deuxi`eme cas), et le non-d´eterminisme est r´eduit par le fait qu’au lieu d’avancer sur une transition num´ero  quelconque, on choisit  minimal, autrement dit, on avance sur la premi`ere transition franchissable. De plus, si une transition est franchissable, alors elle doit eˆ tre franchie, et on n’a pas le choix de ne pas la franchir et d’attendre un nombre ind´etermin´e d’´ev´enements pour r´eessayer de la franchir, comme ci-dessus. (Il s’agit d’un comportement similaire a` la coupure ! de Prolog [Goubault-Larrecq et al., 2002].) Le domaine  , de , est         

(633) . L’´etendue de      

(634) , et par.

(635). . . 16. . .

(636) extension de l’itin´eraire partiel , , est l’intervalle  ,  

(637)  (l’ensemble vide si - ). , le d´ebut de , est , sa fin est 

(638) , son e´ tat final est (

(639) , et son La longueur , est -. Si environnement final

(640) % ,

(641) est 

(642) . Les ordres stricts   et sur les domaines d’itin´eraires partiels, et par extension, sur les itin´eraires partiels eux-mˆemes, sont d´efinis par : pour tous domaines .         

(643) et .         

(644) ¼ , .   . si et seulement si   ,   , . . .,     ,    pour un certain  ,  .  - -

(645) . On pose . . si et seulement si  

(646)    

(647) ¼ ,    ou  

(648)   

(649) ¼  et .   . . Un itin´eraire minimal en est un qui est minimal pour . La justification de cette notion (shortest run) se trouve dans l’article [Roger and Goubault-Larrecq, 2001]. Le but de l’analyse de logs est, e´ tant donn´e un log + , pour chaque   + , pour chaque formule * & ( 

(650) -  

(651) , de trouver les itin´eraires minimaux , de * de d´ebut . Les alertes sont ces itin´eraires qui : – sont acceptants : les itin´eraires minimaux rejetants ne donnent pas lieu a` alerte ; ¼ – sont non subsum´es : il ne doit pas exister d’itin´eraire (minimal) , de d´ebut  ,    , ¼ ¼ avec  , 

(652)  , 

Références

Documents relatifs

On attend seulement que tout ne soit pas nécessairement vrai quand chaque l'est, parce que tout couvre tous les mondes possibles, et chaque a un domaine plus restreint, limité aux

[r]

Ainsi, toute propriété sur P est à redémontrer dans ce problème2. C’est l’objectif de cette

Nous avons souvent besoin de comparer, d'opposer notre école moderne à quelque chose et, sans trop réfléchir, nous utilisons l' expres- sion « école traditionnelle

Un exercice un peu … long, de nombreux thèmes d’analyse abordés (limites, primitives, valeur moyenne, suite), des éléments graphiques (asymptotes, centre de symétrie, tangentes,

de première S, paru au BO le 30 septembre 2010 Relever des algorithmes relatif à cette page... Programme officiel de mathématiques de

D’accord. Je vais essayer de vous expliquer pour le lapin. Pour commencer, je pense que personne n’a apprécié le fait que j’ai réussi à le faire passer par

Comment un chat peut-il faire une chose pareille ? Enfin, ce n’est pas comme si c’était un petit oiseau, une souris, ou ce que je sais ! Ce lapin est aussi gros que