{"id":203,"date":"2009-07-22T14:15:19","date_gmt":"2009-07-22T12:15:19","guid":{"rendered":"http:\/\/zavie.free.fr\/lousodrome\/?p=203"},"modified":"2009-07-22T14:15:19","modified_gmt":"2009-07-22T12:15:19","slug":"que-retenir-de-bourne-into-oblivion","status":"publish","type":"post","link":"https:\/\/lousodrome.net\/blog\/blog\/2009\/07\/22\/que-retenir-de-bourne-into-oblivion\/","title":{"rendered":"Que retenir de &quot;Bourne Into Oblivion&quot; ?"},"content":{"rendered":"<p><img decoding=\"async\" loading=\"lazy\" src=\"\/blog\/wp-content\/images\/rm-rf.png\" alt=\"#rm -rf \/\" width=\"150\" height=\"100\" align=\"right\" \/>On m&rsquo;a fait lire hier un article, <em>\u00ab\u00a0<a title=\"Bourne Into Oblivion\" href=\"http:\/\/thedailywtf.com\/Articles\/Bourne-Into-Oblivion.aspx\">Bourne Into Oblivion<\/a>\u00ab\u00a0<\/em>, dans lequel l&rsquo;auteur explique comment ce qu&rsquo;il nomme une bombe \u00e0 retardement a eu des cons\u00e9quences gravissimes pour le syst\u00e8me informatique d&rsquo;une soci\u00e9t\u00e9. En r\u00e9sum\u00e9, un script d&rsquo;administration faisait le m\u00e9nage apr\u00e8s avoir termin\u00e9 sa t\u00e2che gr\u00e2ce \u00e0 un <tt>rm -rf $var1\/$var2<\/tt>. Mais ce script s&rsquo;est vu ex\u00e9cut\u00e9 avec <tt>$var1<\/tt> et <tt>$var2<\/tt> non d\u00e9finis, et s&rsquo;est donc termin\u00e9 avec un <tt>rm -rf \/<\/tt>, en root, sur un NFS (pour les non unixiens, cela signifie effacer l&rsquo;int\u00e9gralit\u00e9 des syst\u00e8mes de fichiers du r\u00e9seau, avec le droit de le faire). Autant dire que c&rsquo;est une catastrophe sans nom pour la soci\u00e9t\u00e9, surtout lorsque l&rsquo;on ajoute que c&rsquo;est \u00e0 ce moment que les backups se r\u00e9v\u00e8lent \u00eatre inutilisables.<\/p>\n<p>Cette histoire qui ferait froid dans le dos \u00e0 tout administrateur syst\u00e8me m&rsquo;a plong\u00e9 dans une r\u00e9flexion, que voici, sur la liste finalement assez importante d&rsquo;erreurs ayant conduit \u00e0 cet accident. Le but n&rsquo;est pas de critiquer, mais de voir ce qu&rsquo;il est possible d&rsquo;apprendre de tout cela.<\/p>\n<p>Tout d&rsquo;abord, il est clair que ce script \u00e9tait ex\u00e9cut\u00e9 avec des privil\u00e8ges bien trop importants. Il n&rsquo;y a que peu de choses qui puissent justifier qu&rsquo;un script doive \u00eatre lanc\u00e9 en tant que root. Il aurait d\u00fb \u00eatre lanc\u00e9 en tant que simple utilisateur sans privil\u00e8ge, \u00e9ventuellement avec un compte cr\u00e9\u00e9 sp\u00e9cialement dans ce but. Les op\u00e9rations n\u00e9cessitant r\u00e9ellement des droits de super utilisateur auraient d\u00fb \u00eatre isol\u00e9es et appel\u00e9es avec un <tt>sudo<\/tt> ou encore disposer d&rsquo;un bit <tt>suid<\/tt>. Pour le reste, et notamment tout ce qui s&rsquo;apparente \u00e0 de la lecture, des droits correctement affect\u00e9s avec des groupes auraient d\u00fb suffire. D&rsquo;une fa\u00e7on g\u00e9n\u00e9rale lancer un script en root n&rsquo;est absolument pas anodin, et au del\u00e0 du probl\u00e8me rencontr\u00e9 ici, se pose celui de la possibilit\u00e9 d&rsquo;une faille de s\u00e9curit\u00e9.<\/p>\n<p>L&rsquo;article mentionne de plus le fait d&rsquo;avoir lanc\u00e9 un script pour le week-end, autrement dit pour une dur\u00e9e d&rsquo;ex\u00e9cution a priori relativement longue. Si le fait de laisser une t\u00e2che d&rsquo;administration sans surveillance est courant, le fait que ce soit en tant que root change la donne et vient aggraver, s&rsquo;il \u00e9tait besoin, le point pr\u00e9c\u00e9dent.<\/p>\n<p>La justification de l&rsquo;ex\u00e9cution en tant que super utilisateur mise de c\u00f4t\u00e9, ce bout de script n&rsquo;\u00e9tait manifestement pas assez d\u00e9fensif \u00e9tant donn\u00e9 ce contexte particuli\u00e8rement dangereux. Son auteur n&rsquo;aurait jamais d\u00fb laisser un tel appel se faire sans un test des deux variables. Cela dit le script n&rsquo;\u00e9tait peut-\u00eatre pas pr\u00e9vu \u00e0 l&rsquo;origine pour \u00eatre lanc\u00e9 en tant que root, ce qui am\u00e8ne donc \u00e0 consid\u00e9rer comme r\u00e8gle qu&rsquo;un code faisant ce type de manipulation doit \u00eatre d\u00e9fensif quoi qu&rsquo;il arrive, dans la mesure o\u00f9 l&rsquo;on ne sait pas dans quelles conditions il peut-\u00eatre amen\u00e9 \u00e0 \u00eatre utilis\u00e9 par la suite.<\/p>\n<p>On peut de plus remarquer que le fait d&rsquo;utiliser un r\u00e9pertoire \u00e0 la racine est d\u00e9j\u00e0 discutable. Si cette remarque peut sembler \u00eatre un pinaillage purement cosm\u00e9tique, on s&rsquo;aper\u00e7oit que si en pratique les r\u00e9pertoires utilis\u00e9s avaient \u00e9t\u00e9 <tt>\/tmp\/$var1\/$var2<\/tt> ou encore <tt>\/usr\/src\/$var1\/$var2<\/tt> par exemple, un tel drame ne serait pas survenu.<\/p>\n<p>Pour finir sur l&rsquo;aspect purement administration, ce script aurait d\u00fb \u00eatre document\u00e9. D&rsquo;apr\u00e8s l&rsquo;article, l&rsquo;absence de d\u00e9finition des variables est la cons\u00e9quence du fait que l&rsquo;op\u00e9rateur ne savait pas qu&rsquo;il y avait des op\u00e9rations \u00e0 effectuer au pr\u00e9alable. Ce point aurait donc d\u00fb \u00eatre document\u00e9. Cependant l&rsquo;exp\u00e9rience montre que documenter n&rsquo;\u00e9vite pas les accident, et reste donc insuffisant (d&rsquo;ailleurs le script \u00e9tait peut-\u00eatre m\u00eame d\u00e9j\u00e0 document\u00e9) : j&rsquo;ai l&rsquo;exemple d&rsquo;un script qui servait \u00e0 envoyer un mail informatif \u00e0 une base d&rsquo;utilisateurs, et qui portait le nom pour le moins clair de spam.sh. Il avait pourtant fallu commenter la commande essentielle du script depuis que quelqu&rsquo;un l&rsquo;avait lanc\u00e9 par erreur, n&rsquo;ayant apparemment pas consid\u00e9r\u00e9 son nom comme un avertissement suffisamment clair sur l&rsquo;effet du script. Un autre exemple amusant est le message d&rsquo;avertissement du syst\u00e8me Debian en cas de <tt>apt-get<\/tt> jug\u00e9 un peu trop violent : il demande alors de taper en toutes lettres <em>\u00ab\u00a0Oui, faites ce que je vous dis !\u00a0\u00bb<\/em>. Quoi qu&rsquo;il en soit, il faut d&rsquo;une fa\u00e7on ou d&rsquo;une autre, mais par un moyen technique, mettre une commande dangereuse hors de port\u00e9e de toute personne qui n&rsquo;est pas parfaitement renseign\u00e9e.<\/p>\n<p>Accessoirement, Joel Spolsky explique au deuxi\u00e8me point de son c\u00e9l\u00e8bre article, <em>\u00ab\u00a0<a title=\"The Joel Test - 12 Steps to Better Code\" href=\"http:\/\/www.joelonsoftware.com\/articles\/fog0000000043.html\">The Joel Test<\/a>\u00ab\u00a0<\/em>, que d&rsquo;apr\u00e8s lui l&rsquo;op\u00e9ration de compilation et livraison d&rsquo;un projet doit pouvoir \u00eatre faite en une seule action, car toute \u00e9tape suppl\u00e9mentaire entra\u00eene la possibilit\u00e9 d&rsquo;une erreur. L&rsquo;erreur dont il est question ici et les cons\u00e9quences qu&rsquo;elle a eu montrent que finalement, la r\u00e8gle peut \u00eatre \u00e9tendue \u00e0 toute op\u00e9ration d&rsquo;administration.<\/p>\n<p>D&rsquo;autres erreurs, de nature plus humaine, sont \u00e9galement \u00e0 l&rsquo;origine de cet accident. Comme le souligne l&rsquo;auteur de l&rsquo;article, le passage de comp\u00e9tences ne s&rsquo;est pas fait correctement par exemple, et la gravit\u00e9 de la t\u00e2che d&rsquo;administration a \u00e9t\u00e9 n\u00e9glig\u00e9e en \u00e9tant affect\u00e9e \u00e0 un novice. Je ne m&rsquo;\u00e9tendrai pas plus sur ce sujet, qui n&rsquo;est plus celui de ma r\u00e9flexion.<\/p>\n<p>Aussi pour conclure, on se rend compte que cet incident, qui est extr\u00eamement grave pour une soci\u00e9t\u00e9 puisqu&rsquo;il peut lui \u00eatre fatal si les donn\u00e9es ne sont pas r\u00e9cup\u00e9r\u00e9es, aurait pu \u00eatre \u00e9vit\u00e9 par de simples pr\u00e9cautions. Pour la plupart d&rsquo;entre elles, une seule de ces pr\u00e9cautions aurait suffit \u00e0 \u00e9viter cela. Mais peut-\u00eatre que parce que ces pr\u00e9cautions semblent d\u00e9risoires, elles sont n\u00e9glig\u00e9es. Paradoxalement elles semblent tellement \u00e9videntes que les rappeler peut \u00e9galement para\u00eetre d\u00e9risoire.<\/p>\n<p>Voil\u00e0 en substance la r\u00e9flexion que m&rsquo;inspire cette histoire. N&rsquo;ayant pas la pr\u00e9tention d&rsquo;avoir plus de quelques notions d&rsquo;administration syst\u00e8me, je suis peut-\u00eatre pass\u00e9 \u00e0 c\u00f4t\u00e9 de points importants. Si vous en voyez, n&rsquo;h\u00e9sitez pas \u00e0 en faire part en commentaires.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>On m&rsquo;a fait lire hier un article, \u00ab\u00a0Bourne Into Oblivion\u00ab\u00a0, dans lequel l&rsquo;auteur explique comment ce qu&rsquo;il nomme une bombe \u00e0 retardement a eu des cons\u00e9quences gravissimes pour le syst\u00e8me informatique d&rsquo;une soci\u00e9t\u00e9. En r\u00e9sum\u00e9, un script d&rsquo;administration faisait le &hellip; <a href=\"https:\/\/lousodrome.net\/blog\/blog\/2009\/07\/22\/que-retenir-de-bourne-into-oblivion\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[7,22,25],"tags":[33],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.13 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Que retenir de &quot;Bourne Into Oblivion&quot; ? - Lousodrome<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/lousodrome.net\/blog\/blog\/2009\/07\/22\/que-retenir-de-bourne-into-oblivion\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Que retenir de &quot;Bourne Into Oblivion&quot; ? - Lousodrome\" \/>\n<meta property=\"og:description\" content=\"On m&rsquo;a fait lire hier un article, \u00ab\u00a0Bourne Into Oblivion\u00ab\u00a0, dans lequel l&rsquo;auteur explique comment ce qu&rsquo;il nomme une bombe \u00e0 retardement a eu des cons\u00e9quences gravissimes pour le syst\u00e8me informatique d&rsquo;une soci\u00e9t\u00e9. En r\u00e9sum\u00e9, un script d&rsquo;administration faisait le &hellip; Continuer la lecture &rarr;\" \/>\n<meta property=\"og:url\" content=\"http:\/\/lousodrome.net\/blog\/blog\/2009\/07\/22\/que-retenir-de-bourne-into-oblivion\/\" \/>\n<meta property=\"og:site_name\" content=\"Lousodrome\" \/>\n<meta property=\"article:published_time\" content=\"2009-07-22T12:15:19+00:00\" \/>\n<meta name=\"author\" content=\"Julien Guertault\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Julien Guertault\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"http:\/\/lousodrome.net\/blog\/blog\/2009\/07\/22\/que-retenir-de-bourne-into-oblivion\/\",\"url\":\"http:\/\/lousodrome.net\/blog\/blog\/2009\/07\/22\/que-retenir-de-bourne-into-oblivion\/\",\"name\":\"Que retenir de &quot;Bourne Into Oblivion&quot; ? - Lousodrome\",\"isPartOf\":{\"@id\":\"https:\/\/lousodrome.net\/blog\/#website\"},\"datePublished\":\"2009-07-22T12:15:19+00:00\",\"dateModified\":\"2009-07-22T12:15:19+00:00\",\"author\":{\"@id\":\"https:\/\/lousodrome.net\/blog\/#\/schema\/person\/a16a2a69d73eca763ffdf125c49eaa2f\"},\"breadcrumb\":{\"@id\":\"http:\/\/lousodrome.net\/blog\/blog\/2009\/07\/22\/que-retenir-de-bourne-into-oblivion\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/lousodrome.net\/blog\/blog\/2009\/07\/22\/que-retenir-de-bourne-into-oblivion\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/lousodrome.net\/blog\/blog\/2009\/07\/22\/que-retenir-de-bourne-into-oblivion\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/lousodrome.net\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Que retenir de &quot;Bourne Into Oblivion&quot; ?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/lousodrome.net\/blog\/#website\",\"url\":\"https:\/\/lousodrome.net\/blog\/\",\"name\":\"Lousodrome\",\"description\":\"La lose 2.0\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/lousodrome.net\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/lousodrome.net\/blog\/#\/schema\/person\/a16a2a69d73eca763ffdf125c49eaa2f\",\"name\":\"Julien Guertault\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/lousodrome.net\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2e5fc7a18e1701e1bb61a5da0ef35cf7?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2e5fc7a18e1701e1bb61a5da0ef35cf7?s=96&d=identicon&r=g\",\"caption\":\"Julien Guertault\"},\"url\":\"https:\/\/lousodrome.net\/blog\/blog\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Que retenir de &quot;Bourne Into Oblivion&quot; ? - Lousodrome","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/lousodrome.net\/blog\/blog\/2009\/07\/22\/que-retenir-de-bourne-into-oblivion\/","og_locale":"fr_FR","og_type":"article","og_title":"Que retenir de &quot;Bourne Into Oblivion&quot; ? - Lousodrome","og_description":"On m&rsquo;a fait lire hier un article, \u00ab\u00a0Bourne Into Oblivion\u00ab\u00a0, dans lequel l&rsquo;auteur explique comment ce qu&rsquo;il nomme une bombe \u00e0 retardement a eu des cons\u00e9quences gravissimes pour le syst\u00e8me informatique d&rsquo;une soci\u00e9t\u00e9. En r\u00e9sum\u00e9, un script d&rsquo;administration faisait le &hellip; Continuer la lecture &rarr;","og_url":"http:\/\/lousodrome.net\/blog\/blog\/2009\/07\/22\/que-retenir-de-bourne-into-oblivion\/","og_site_name":"Lousodrome","article_published_time":"2009-07-22T12:15:19+00:00","author":"Julien Guertault","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"Julien Guertault","Dur\u00e9e de lecture estim\u00e9e":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"http:\/\/lousodrome.net\/blog\/blog\/2009\/07\/22\/que-retenir-de-bourne-into-oblivion\/","url":"http:\/\/lousodrome.net\/blog\/blog\/2009\/07\/22\/que-retenir-de-bourne-into-oblivion\/","name":"Que retenir de &quot;Bourne Into Oblivion&quot; ? - Lousodrome","isPartOf":{"@id":"https:\/\/lousodrome.net\/blog\/#website"},"datePublished":"2009-07-22T12:15:19+00:00","dateModified":"2009-07-22T12:15:19+00:00","author":{"@id":"https:\/\/lousodrome.net\/blog\/#\/schema\/person\/a16a2a69d73eca763ffdf125c49eaa2f"},"breadcrumb":{"@id":"http:\/\/lousodrome.net\/blog\/blog\/2009\/07\/22\/que-retenir-de-bourne-into-oblivion\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["http:\/\/lousodrome.net\/blog\/blog\/2009\/07\/22\/que-retenir-de-bourne-into-oblivion\/"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/lousodrome.net\/blog\/blog\/2009\/07\/22\/que-retenir-de-bourne-into-oblivion\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/lousodrome.net\/blog\/"},{"@type":"ListItem","position":2,"name":"Que retenir de &quot;Bourne Into Oblivion&quot; ?"}]},{"@type":"WebSite","@id":"https:\/\/lousodrome.net\/blog\/#website","url":"https:\/\/lousodrome.net\/blog\/","name":"Lousodrome","description":"La lose 2.0","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/lousodrome.net\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/lousodrome.net\/blog\/#\/schema\/person\/a16a2a69d73eca763ffdf125c49eaa2f","name":"Julien Guertault","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/lousodrome.net\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2e5fc7a18e1701e1bb61a5da0ef35cf7?s=96&d=identicon&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2e5fc7a18e1701e1bb61a5da0ef35cf7?s=96&d=identicon&r=g","caption":"Julien Guertault"},"url":"https:\/\/lousodrome.net\/blog\/blog\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/lousodrome.net\/blog\/wp-json\/wp\/v2\/posts\/203"}],"collection":[{"href":"https:\/\/lousodrome.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lousodrome.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lousodrome.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lousodrome.net\/blog\/wp-json\/wp\/v2\/comments?post=203"}],"version-history":[{"count":0,"href":"https:\/\/lousodrome.net\/blog\/wp-json\/wp\/v2\/posts\/203\/revisions"}],"wp:attachment":[{"href":"https:\/\/lousodrome.net\/blog\/wp-json\/wp\/v2\/media?parent=203"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lousodrome.net\/blog\/wp-json\/wp\/v2\/categories?post=203"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lousodrome.net\/blog\/wp-json\/wp\/v2\/tags?post=203"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}