Linux et les malwares
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 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.