Il n’y a pas de virus sur Linux !

– Un inconscient

Vous avez dĂ» voir plus d’une fois cette sempiternelle lĂ©gende informatique au travers de commentaires d’actualitĂ©s portant sur une vulnĂ©rabilitĂ© ou un malware ciblant Microsoft Windows. “Linux est invulnĂ©rable aux malwares", “les virus ça n’existe pas”, il n’y a pas besoin d’antivirus sous Linux”, blablabla. A noter qu’on entendait aussi la mĂȘme incantation pour MacOS en raison de sa base Unix dĂ©rivĂ©e de BSD.

Tout ceci est faux, les systĂšmes Unix et Unix-like sont tout autant la cible des attaquants que Microsoft Windows. En 2021, il y a eu 155 vulnĂ©rabilitĂ©s recensĂ©es dans le Kernel Linux, ce qui montre qu’il est loin d’ĂȘtre invulnĂ©rable et s’avĂšre ĂȘtre lui aussi cible de beaucoup d’attaques possibles. Et rappelons que les bases CVE ne contiennent que les vulnĂ©rabilitĂ©s connues, qui sait donc le nombre de failles non divulguĂ©es et potentiellement exploitĂ©es ?

La sĂ©curitĂ© informatique n’est pas une question de dogme vis Ă  vis de tel ou tel OS, c’est une chaĂźne de valeur qui repose sur des bonnes pratiques et une alerte constante des vulnĂ©rabilitĂ© de ses outils. Elle ne peut aucunement reposer sur des idĂ©es reçues comme celle-ci.

Les origines du mythe

L’un des fondements de ce mythe est la diffĂ©rence de conception des systĂšmes Unix et assimilĂ©s. Depuis longtemps, ils reposent sur une notion d’environnement multi-utilisateur oĂč, en principe, chaque processus est censĂ© tourner dans son propre userspace avec les limitations qui l’accompagne. Une approche encore plus poussĂ©e de cette sĂ©paration a donnĂ© lieu Ă  des principes d’isolation de processus avancĂ©s comme le chroot et depuis quelques annĂ©es, la conteneurisation.

L’apparente rĂ©silience d’un systĂšme Linux face aux virus est donc en partie dĂ» au fait qu’un malware ne dispose pas facilement de l’accĂšs au super utilisateur - root - puisque celui-ci est, par dĂ©faut, restreint Ă  l’administrateur du systĂšme. En effet, donnez cet accĂšs Ă  n’importe qui et votre systĂšme sera bousillĂ© car l’OS considĂšre que l’utilisateur root sait ce qu’il fait.

windows et linux

Windows prend l’utilisateur pour un imbĂ©cile, Linux en veut la preuve.

– Un vieil adage

Une autre origine attribuĂ©e Ă  ce mythe est la marginale part de marchĂ© des distributions Linux sur le Desktop. Sauf que cet argument oublie que les distributions Linux ont une forte prĂ©sence dans le monde de l’hĂ©bergement et c’est celui-ci qui est Ă©normĂ©ment ciblĂ© par les attaquants. De nos jours, les malwares ne sont pas lĂ  pour simplement embĂȘter les gens et effacer des fichiers au hasard. Ce sont des armes utilisĂ©es par des pouvoirs politiques ou privĂ©s. Le marchĂ© des vulnĂ©rabilitĂ©s est extrĂȘmement juteux et organisĂ©, allant mĂȘme jusqu’Ă  faire des opĂ©rations de soldes et de promotions sur les bases de donnĂ©es d’emails ou mots de passes volĂ©s ! A titre personnel, au vu des rĂ©guliĂšres informations relatives Ă  de l’espionnage ou des attaques contre des acteurs stratĂ©giques privĂ©s ou des politiques, je considĂšre que nous avons une guerre froide toujours en cours et que celle-ci ne se dĂ©roule pas sur un champ de bataille mais sur des rĂ©seaux informatique.

Quelles sont les attaques qui ciblent Linux ?

Maintenant que nous avons Ă©liminĂ© les idĂ©es prĂ©conçues, voyons en quoi un systĂšme basĂ© sur Linux peut ĂȘtre la cible d’attaques diverses et Ă  quel degrĂ©.

Les virus et chevaux de Troie (trojans)

De par sa conception, Linux est moins vulnĂ©rable aux virus habituels pour plusieurs raisons. Un binaire infectĂ© ne pourra pas aller plus loin que le userspace dans lequel il se trouve Ă  moins de profiter d’une faille permettant une Ă©lĂ©vation de privilĂšge. Le Kernel ne serait que temporairement infectĂ© car celui-ci ne rĂ©side qu’en mĂ©moire vive et en lecture seule. Dans le cas oĂč le binaire infectĂ© travaille avec les droits root, l’impact est beaucoup plus Ă©levĂ© car il est en capacitĂ© d’agir sur tout le systĂšme et de se rĂ©pandre beaucoup plus facilement.

L’une des autres raisons qui font que les virus et chevaux de Troie ne sont pas spĂ©cialement intĂ©ressants sur un systĂšme Linux est la gestion des paquets par dĂ©pĂŽts logiciels. Les mainteneurs des dĂ©pĂŽts logiciels analysent rĂ©guliĂšrement leurs paquets et ceux-ci sont vĂ©rifiĂ©s soit par somme de contrĂŽle, soit par signature PGP.

Il reste possible cependant d’usurper les adresses de dĂ©pĂŽts logiciels via des attaques de type man in the middle, mais la signature des paquets logiciels reste une protection efficace Le risque principal Ă  ce niveau Ă©tant dans le cas oĂč un malware parviendrait Ă  modifier les jeux de clĂ©s PGP pour tromper la vĂ©rification. L’une des autres mĂ©caniques couramment utilisĂ©e est la reproductibilitĂ© des compilations oĂč les paramĂštres fournis au compilateur sont toujours identiques, assurant que le binaire sera strictement le mĂȘme Ă  chaque compilation.

Les attaques par virus ou cheval de Troie sont donc principalement originaires d’usages extĂ©rieurs comme l’installation d’un binaire infectĂ© manuellement, ou bien l’exĂ©cution de scripts non maitrisĂ©e. Je pense notamment Ă  une vilaine manie qu’on retrouve souvent dans les tutoriels sur le Web qui disent curl https://le-script-a-executer | bash. C’est une trĂšs mauvaise pratique car vous n’avez aucune idĂ©e de ce que vous exĂ©cutez, et si vous le faites en root, c’est la porte ouverte Ă  toutes les catastrophes.

Les attaques ciblées

Une distribution Linux, c’est en premier lieu le Kernel Linux accompagnĂ© de la couche logiciel GNU, un systĂšme d’init (init, systemd, etc) et d’une multitude d’autres outils, services et logiciels plus ou moins complexes. Bien que les mainteneurs des distributions Linux essayent en gĂ©nĂ©ral d’assurer une cohĂ©rence globale Ă  l’empilage de logiciels qui compose un systĂšme Linux, cette diversitĂ© d’outils et de dĂ©veloppeurs entraĂźne autant de sources possibles d’attaques.

C’est gĂ©nĂ©ralement ce vecteur qui est privilĂ©giĂ© sur un Unix et Ă©quivalent. Ces attaques sont notamment celles de type worms.

Les worms (oui, des vers) sont diffĂ©rents des virus. Un virus informatique fonctionne de la mĂȘme façon qu’un virus biologique : il utilise un hĂŽte pour se rĂ©pliquer et s’exĂ©cuter, ici un programme. Le ver est, quant Ă  lui, autonome. C’est un programme indĂ©pendant qui scanne des machines du rĂ©seau Ă  la recherche de vulnĂ©rabilitĂ©s qu’il est en capacitĂ© d’exploiter pour infecter un systĂšme.

Les systĂšmes Linux sont principalement visĂ©s par les worms car ce sont majoritairement des serveurs informatique. De ce fait, ils exposent un ou plusieurs services et si ceux-ci sont vulnĂ©rables, ils deviennent un point d’entrĂ©e et peuvent profiter des failles pour obtenir une Ă©lĂ©vation de privilĂšge et continuer de se dĂ©ployer.

Le cas rĂ©cent de Log4Shell est un excellent exemple d’attaque ciblĂ©e puisque via un service applicatif, il Ă©tait possible de prendre la main sur tout le systĂšme grĂące Ă  une Ă©lĂ©vation de privilĂšges.

Oui mais log4j c’est Java, pas Linux !

– Une tentative de se rattraper aux branches

C’est bien lĂ  oĂč je veux en venir : les attaques ciblĂ©es visent avant tout un composant technique tournant sur un serveur Linux pour prendre possession de tout le systĂšme. Le cĂŽtĂ© le plus insidieux Ă©tant que ces attaques peuvent reposer sur des failles non divulguĂ©es.

Et si vous voulez un exemple plus proche du systĂšme, nous avons CronRAT qui s’est fait dĂ©couvrir en novembre 2021. CronRAT est un malware qui s’est insĂ©rĂ© dans des crontab, l’ordonnanceur typique de Linux, Ă  une date improbable du 31 fĂ©vrier. Si l’entrĂ©e Ă©tait valide du point de vue syntaxique, le code exĂ©cutĂ© Ă©tait encapsulĂ© dans plusieurs couches d’archives pour ĂȘtre invisible au premier abord. Le code intĂ©grait de la gĂ©nĂ©ration de somme de contrĂŽle alĂ©atoire pour ne pas ĂȘtre repĂ©rĂ© par les pare-feux et pouvait ainsi construire une porte dĂ©robĂ©e sur le systĂšme. Et tout ceci, codĂ© en Bash ! Ce malware a Ă©tĂ© un exemple de sĂ©curisation incomplĂšte oĂč le frontal des sites web est plutĂŽt bien protĂ©gĂ©, mais le back office est parfois nĂ©gligĂ© car non exposĂ©.

Un porteur sain

L’autre principal vecteur d’attaque sur Linux est de profiter du fait que le systĂšme peut ĂȘtre un porteur sain. Ainsi, il peut ne pas ĂȘtre impactĂ© par l’infection, mais la propager. C’est notamment l’une des raisons pour lesquelles un serveur de fichiers ou e-mail sous Linux doit impĂ©rativement avoir un antivirus pour analyser les fichiers qu’il hĂ©berge. Sinon, il risque d’ĂȘtre vecteur d’infection pour les clients qui s’y connectent.

Autre chose ?

Parmi les autres attaques possibles, les systĂšmes Linux sont aussi la cible de ransomwares (ces logiciels qui chiffrent les donnĂ©es de l’utilisateur et promettent le dĂ©chiffrement contre rançon). L’embarquĂ© se basant aussi beaucoup sur Linux, notamment pour l’Internet des Trucs (IoT), et les fabricants Ă©tant trĂšs mauvais en terme de suivi logiciel il en rĂ©sulte que de nombreux appareils connectĂ©s sont des passoires et des terrains de jeux parfait pour faire partie d’un rĂ©seau de botnet ou d’espionnage.

Linux n’est donc pas mieux sĂ©curisĂ© ?

Comme expliquĂ© au dĂ©but de cet article, de par leur conception, les systĂšmes Unix et assimilĂ©s (dont Linux fait partie) ont une certaine rĂ©silience vis Ă  vis d’attaques qui Ă©taient monnaie courante dans le monde Microsoft. Windows avait comme principal dĂ©faut d’avoir la sale manie de crĂ©er un compte utilisateur Ă  privilĂšge par dĂ©faut. Mais ceci aussi est de l’histoire ancienne puisque depuis plusieurs versions du systĂšme on retrouve une Ă©lĂ©vation de privilĂšge similaire Ă  ce qu’on connaĂźt dans le monde Linux.

Un systĂšme basĂ© Linux est tout autant Ă  risque qu’un Windows puisque les vecteurs d’attaques sont multiples avec des Ă©lĂ©vations les privilĂšges profitant d’une faille, ou bien parce que la couche logicielle tourne elle-mĂȘme avec trop de droits. Sans parler des logiciels non maintenus Ă  jour et dont les failles corrigĂ©es dans une version suivante sont toujours prĂ©sentes sur ces systĂšmes.

Donc non, contrairement Ă  ce que le vieux troll continue de rĂ©pĂ©ter, “Linux” est tout autant la cible de malwares que les autres systĂšmes. La surface et les vecteurs d’attaques sont diffĂ©rents de Windows, mais cela reste un systĂšme prĂ©sentant tout autant de risques si mal maintenu ou configurĂ©. Le problĂšme Ă©tant que lorsqu’on se croit invulnĂ©rable, on aura tendance Ă  nĂ©gliger encore plus la sĂ©curitĂ©.

Que faire alors pour avoir un systÚme Linux sécurisé ?

Je n’ai pas la rĂ©ponse exhaustive, n’Ă©tant pas expert en sĂ©curitĂ© informatique je n’ai pas prĂ©tention de pouvoir dicter des recommandations prĂ©cises. Mais voici quelques principes gĂ©nĂ©reux que je peux vous proposer :

  • Appliquer le principe du moindre privilĂšge : un utilisateur applicatif ou humain ne doit pas avoir plus de droits que nĂ©cessaires, pareil pour les permissions des fichiers et dossiers sur le systĂšme de fichiers (oui, les adeptes du chmod 777, c’est bien de vous dont je parle)
  • SĂ©curiser son rĂ©seau avec un pare-feu : si ce n’est pas explicitement autorisĂ©, c’est que c’est interdit, donc les ports non utilisĂ©s sont filtrĂ©s
    • ComplĂ©ment : Outre les ports, les pare-feux avancĂ©s sont aussi capables de filtrer les protocoles voire les adresses utilisĂ©es. On peut ainsi interdire sur un port rĂ©servĂ© pour un protocole spĂ©cifique de faire passer du HTTPS par exemple.
  • Éviter d’avoir des services non utilisĂ©s actifs et en Ă©coute publique
    • ComplĂ©ment : une bonne pratique est aussi d’Ă©viter d’utiliser les ports standards connus car ils seront les premiers attaquĂ©s
  • Toujours avoir un systĂšme et des logiciels Ă  jour
  • Ne pas dĂ©sactiver les mĂ©caniques de sĂ©curitĂ© des systĂšmes au moindre inconfort (donc SELinux en Enforced, Firewalld actif, etc)
  • Bloquer l’accĂšs Ă  l’utilisateur root : pas de connexion SSH possible, un accĂšs restreint au profil
  • Utiliser des mots de passe complexes, et rĂ©guliĂšrement changĂ©s
  • Toujours chiffrer les communications et les donnĂ©es
  • Isoler les processus quand cela est possible
  • Avoir un antivirus
  • Être un minimum paranoĂŻaque et voir le mal partout 😅

Et si vous avez envie de vous lancer dans une installation de Linux sĂ©curisĂ©e, je vous recommande le guide de l’Agence nationale de la sĂ©curitĂ© des systĂšmes d’information.

Mais oui, comme vous pouvez le voir, Linux et Ă©quivalents ne sont pas miraculeusement meilleurs en sĂ©curitĂ©. C’est un tout.

J’espĂšre que ce billet aura permis de casser un vieux mythe qui, en plus d’ĂȘtre complĂštement faux, est mĂȘme horriblement dangereux puisqu’il apporte un faux sentiment de sĂ©curitĂ© contre productif.