Après avoir affirmé à un auditoire qu'il n'y avait pas de virus avec Linux, on m'a posé aussitôt les questions "Pourquoi n'y a t'il pas de virus avec Linux ?", "pour l'instant, il n'y en a pas, mais..." et je me suis aperçu que l'argumentaire pour un utilisateur (non informaticien) n'était pas aussi trivial que je le présumais. On peut expliquer l'absence de virus de plusieurs façons. Bien sûr, les raisons techniques sont les plus rigoureuses, mais requièrent quelques connaissances sur la structure des ordinateurs.
Les virus informatiques sont des programmes qui sont exécutés à l'insu des utilisateurs et qui ont la propriété de de propager d'une machine à une autre.
On les appelle virus car ce sont des programmes qui possèdent la faculté de créer les répliques d'eux-même dans d'autres programmes. Leurs effets sont néfastes : messages intempestifs, ralentissement, pertes de données... Ces réplications se font avec discrétion et à l'insu des utilisateurs. Certains d'entre eux se cachent. Leur code actif est crypté et ne se décrypte qu'au moment de leur exécution. Le nombre de virus nouveaux augmente considérablement tous les ans.
Pour exister un virus doit pouvoir pénétrer, se répliquer et se propager.
Il n'y a pas de virus avec Linux ainsi que sur Mac OS/X car l'architecture de leurs logiciels est conçue pour ne leur permettre ni de pénétrer, ni de se répliquer, ni de se propager.
Ces systèmes d'exploitation font partie de la famille des Unix. C'est sur Unix que sont apparus les premiers virus vers 1975. Tout de suite, les concepteurs d'Unix ont mis en place les barrières qui ont sécurisé Unix et il y a des lustres qu'on ne parle plus de virus sur Unix. C'est donc la sécurité intrinsèque du système qui le protège.
Cependant, comme la perfection n'existe pas, il arrive qu'en lisant et relisant le code source, des informaticiens trouvent parfois des failles potentielles de sécurité. Les corrections sont aussitôt réalisées et les mises à jour de sécurité livrées aux utilisateurs dans les heures qui suivent. La déontologie veut que l'on publie le correctif avant de signaler la faiblesse. Ainsi les correctifs arrivent avant que les failles de sécurité puissent être exploitées.
A contrario, Microsoft n'a pas pris les mêmes précautions pour des raisons historiques. Pour faire le DOS il a fallu faire des simplifications considérables et la notion de sécurité a été complètement éludée. Dans toutes les versions qui ont suivi, la sécurité a été un emplâtre que l'on rajoutait et non une caractéristique intrinsèque du système.
Si on fait l'analogie avec les maladies contagieuses, dans un cas, on fait de la prophylaxie et dans l'autre on vend des médicaments.
Les virus existent sous Windows en raison de sa mauvaise qualité du système et cela coûte environ 450 M€ à la France chaque année.
La légende comme quoi l'inexistence actuelle de virus sur Mac OS/X et Linux repose sur leur faible nombre est dénuée de fondement. Elle est cependant soigneusement entretenue par Microsoft et les marchands d'anti-virus qui y voient un manque à gagner.
Il y a plusieurs origines possibles. Ce ne sont que des supputations de ma part, car les auteurs sont très discrets. En principe, personne ne se vante d'avoir créé un virus.
Il n'est pas impossible que ce soit arrivé. Mais ce n'est sûrement pas le cas des virus très sophistiqués que l'on voit maintenant. Il y en a peut être eu quelques uns dans ce cas, mais pas plus.
Des jeux stupides, ça a toujours existé. Créer un virus nouveau n'est pas une chose facile, c'est même chaque fois un nouveau défi. On peut penser que les virus créés par jeu ont été assez nombreux, mais, à mon avis, leur proportion doit diminuer avec le temps.
Un employé licencié, ou mal considéré dans son entreprise, un client mécontent ou un concurrent, ce sont des raisons qui peuvent motiver (mais pas excuser) une envie de nuire. Ces agissements illicites , proches de la névrose, sont sûrement plus fréquents que les cas précédents.
A qui profite le crime ? Bien que n'ayant aucune preuve, je suis convaincu que les fabricants de logiciels anti-virus sont les premiers bénéficiaires. Une compétition entre ces fournisseurs les incite à étudier de nouveaux virus, à créer l'anti-virus correspondant et à le diffuser en espérant que le concurrent mettra longtemps pour mettre son anti-virus à jour. Cette démarche vénale est à mon avis la principale explication de la croissance du nombre de virus.
Il y a bien eu Bliss un "virus" (cheval de troie ou ver serait plus exact) qui a été créé en septembre 1996 et publié en 1997. Son but était de prouver que les machines Linux devaient acheter des anti-virus et un grand battage médiatique fut alors orchestré. Mais comme il ne pouvait pas propager, il n'a été plus important que la faille de sécurité qu'il exploitait et qui a été rapidement corrigée. La liste des virus pour Linux est en réalité une liste de vers qui ne présentent plus aucun danger depuis longtemps. On pourra comparer cette liste aux centaines de milliers de virus et vers connus sur les systèmes de Microsoft.
En conclusion, les virus sous Linux ou Unix ne sont que des campagnes de désinformation destinées à discréditer les logiciels libres ou à vendre des anti-virus à des gens qui n'en ont pas besoin. Il est même dangereux d'utiliser un logiciel anti-virus sous Linux, surtout si on en a pas le code, car ce serait une énorme faille dans la sécurité.
Les virus s'infiltrent dans les logiciels. Ils se cachent dans leur corps. Ils peuvent se cacher dans le BIOS, dans le système d'exploitation ou dans les programmes appartenant à l'utilisateur. Pour se répliquer, ils faut qu'ils écrivent dans les programmes. La meilleure parade n'est pas de mettre au point des anti-virus, mais de rechercher les mesures à mettre en place afin d'empêcher leur introduction et leur propagation. Il vaut mieux prévenir que guérir.
Il est en principe protégé de toute écriture parasite. Mais ce n'est pas toujours le cas.
Le système constitue la cible de choix. Les noms des fichiers et leurs structures sont connus d'avance . Tous les fichiers système doivent impérativement être protégés en écriture. Seul l'administrateur peut les modifier.
Ce type de protection n'existe pas avec DOS, Windows 3, 95, 98, Me. Chaque programme peut modifier les fichiers système. Par contre, Windows NT et tous les Unix (dont Linux) utilisent cette protection. Mais il y a des gros trous de sécurité avec les Windows ce sont les "ActiveX" et quelques autres programmes qui sont autant de court-circuits à cette protection élémentaire. Ces trous de sécurité sont aussi exploités par des organismes américains privés et publics qui s'en servent pour lire par Internet le contenu de vos messages et de votre disque.
Pour les Unix, certains programmes ont des droits d'administrateur (root) quand ils sont lancés. Leur présence est nécessaire mais leur utilisation est strictement limitée à quelques opérations bien connues. La protection est encore meilleure avec tous les OS libres (dont Linux) car leurs sources sont publiques. Autrefois, vers 1990 les machines Unix étaient vendues non protégées et l'acheteur était censé mettre les protections en place. Certains oubliaient ce "détail" et les machines Unix avaient alors acquis la réputation de ne pas être sécurisées. Cette réputation était alors entretenue par IBM qui vendait très cher ses dinosaures. Depuis, à cause du développement des réseaux, la sécurité des machines Unix a été particulièrement soignée. Ceci a été facilité par sa structure très rigoureuse. Maintenant, la sécurité des machines Unix est devenue la meilleure. Il ne faut pas oublier que tous les protocoles de l'Internet sont nés sous Unix.
Un programme ne doit écrire en mémoire que dans les zones qui lui sont allouées par le système. On assure ainsi un cloisonnement étanche des processus. Les communications entre processus, lorsqu'elles sont nécessaires, ne peuvent se faire qu'au travers de mécanismes très précis et rigoureux. Aucune exception n'est tolérable.
Les processeurs actuels effectuent en permanence la vérification de l'autorisation d'accéder aux adresses en mémoire. Tous les Unix utilisent depuis toujours ce mode d'adressage et les protections décrites ci-dessus sont toujours actives. Les Windows de tout poil ont la mauvaise idée de désactiver ce mode.
C'est la meilleure garantie. On reçoit des sources, on les vérifie, les compile et on les utilise sans crainte. En toute rigueur, un système n'est vraiment sûr que si on en possède toutes les sources. Ainsi, tous les programmes sensibles des Unix libres ont été lus, relus et examinés pas des milliers de personnes qui y ont recherché toutes les failles possibles. Aucun système propriétaire n'a reçu autant d'attention.
Tout logiciel propriétaire est intrinsèquement un trou de sécurité potentiel, surtout si ce logiciel est le système d'exploitation.
Les premiers virus ont été créés sur Unix. Puis la sécurité des systèmes Unix a été de mieux en mieux maitrisée et elle est maintenant proche de la perfection. Tous les types d'attaques possibles ont été testés. Trouver un nouveau trou de sécurité dans une machine Unix devient un exploit car le fait devient rare et la parade est disponible rapidement. Elle est disponible dans les heures qui suivent pour un Unix libre, pour les autres il faut compter quelques semaines ou quelques mois.
Un virus utilise les trous de sécurité. Les systèmes Unix ne leur offrent aucun passage,
au contraire, ils leur opposent des barrières multiples, et chacune d'entre elles serait suffisante
à empêcher leur passage.
Pour exister un virus doit pénétrer, se répliquer et se progager. Les Unix récents interdisent
les trois.
Les systèmes Windows 95 ou 98 ne possèdent pratiquement aucun système de sécurité. Les virus peuvent donc se répliquer sans entrave. Dans le cas de NT et XP, le système est protégé, du moins il le parait. Or certains ActiveX par exemple sont des trous dans la sécurité. It's not a bug, it's a feature ! Les trous de sécurité sont donc des caractéristiques et non des défauts. Ainsi, ils servent à propager les virus.
Les virus ne sont pas une fatalité, leur présence révéle la sécurité déficiente d'un système. On peut dire en quelques mots qu'avec Linux, on empêche les virus d'entrer alors qu'avec Microsoft il faut acheter un anti-virus pour les enlever.
Le spam est dû en partie au manque de sécurité de Windows qui permet de récolter les carnets d'adresse grâce aux nombreux trous de sécurité. Les virus sont l'un des moyens utilisés.
Ce texte est ancien, il date de 1999 et c'est l'un des premiers qui ait traité cette question. La page de Jehan fait une analyse détaillée et actualisée du sujet.
Pour en savoir plus, visitez :
- la page de Jehan (2007) Pourquoi?.. il y a moins de virus sur les systèmes Libres?
- la page de Bruce Ediger (1999) :
Unix Virus Bibliography
- Présentation des virus (1999) : Définition et historique
Ces textes sont des courriers recueillis sur la liste de diffusion de l' ABUL fin 1999. Ce sont des témoignages tout bruts. Ils étayent et complètent mon propos.
Unix a été créé en 1970. En 30 ans, il y a eu tout le temps nécessaire pour créer des virus. Si on avait pu en faire, il y en aurait. Il n'a fallu que quelques années pour les voir sous DOS et encore moins pour Windows.
Un virus sur Unix se retrouve plutot dans la catégorie "sécurité" système ...
Généralement, j'essaye d'expliquer que c'est pas intéressant d'essayer de faire des virux (virus+*nix -> virux ??) pour les raisons suivantes:
- architectures différentes -> exécutables AIX non utilisables sous un autre Unix, etc...
- un virux n'est désastreux pour un systeme unix que si il est lancé par l'administrateur ... et donc si l'utilisateur lambda lance le virus, il ne risque pas grand chose de plus que d'avoir que SES fichiers explosés (pas de reformatage de disque, pas de système de fichiers altérés etc.) ...
- l'habitude de voir des programmes unix envoyés avec leur sources, la doc etc. Si je reçois un exécutable sans doc et sans les sources je suis plutot méfiant ! - les virus sont (je crois) liés à des zones qui ne sont pas accessibles pour les utilisateurs de base unix (disque dur, bios, ...)
-- Eric Seigne
Je ne suis pas un grand expert en virus mais à mon avis le plus gros facteur de propagation est le manque de 'sécurité' de systèmes comme DOS ou Windows 95/98. A partir du moment où le simple utilisateur peut bousiller n'importe quel fichier système, on peut très facilement infecter une machine.
C'est une autre paire de manche sur un système comme LINUX (ou même NT) un l'utilisateur ne peut à priori modifier que ce qui lui appartient...
Il existe des méthodes pour qu'un utilisateur normal obtienne les droits de root mais on tombe alors dans l'exploitation de bugs de certains programmes et c'est un sujet un peu différent : on ne parle plus de virus mais plutôt d'attaque, de piratage...
Pierre FICHEUX
J'ai lu une réponse sur le web qui m'a semblé presque juste. Cependant, elle était faite par quelqu'un qui soutenait Microsoft contre Linux (donc pas crédible une seule seconde ! ;)) mais qui m'a semblé intéressante, je te la donne, après tout tu as demandé... ;) Bref il disait que s'il n'y avait pas de virus sous Linux, c'était que les programmeurs de virus savaient qu'un virus Linux toucherait moins de monde qu'un virus Windows puisque moins de monde utilise Linux. A mon avis c'est aussi que ça doit être moins facile étant donné qu'il y a moins de trous de sécurité que dans Windows, mais je pense que ce qu'il a dit est également vrai (même s'il était de mauvaise foi ! ;))
Matthieu Labas
Bon, je vais nuancer un peu : il n'y a pas de "virus" qui parvienne a se répliquer de manière suffisamment efficace sous Linux.
Par contre, il existe ce que l'on appelle les "worms" (vers) dont certains sont particulièrement ingénieux. Un worm tire partie d'une faille de securite pour s'installer sur un système relié à Internet et infecter d'autres systèmes depuis ce site. Souvent inoffensif pour rester le plus furtif possible, le worm peut offrir le controle de la machine à un pirate distant - ou être programmé pour détruire les données d'un serveur à une date donnée, comme un virus.
Et des worms conçus pour Linux, j'en ai vu passer plus d'un. Au début ils attaquaient les news ou le mail, puis ça a été BIND (service DNS), Samba, on peut parier que PostgreSQL, les serveurs de fax, les serveurs d'impression Internet feront partie des prochaines cibles.
Comment lutter : faire en sorte que les processus services renoncent a leur privilège super-utilisateur dès l'ouverture du port de connexion. C'est le cas de Sendmail, d'INN, eventuellement de BIND. C'est plus problématique avec NFS, Samba, telnetd ou sshd. Il faut donc fermer tous les services auxquels on ne fait pas confiance, ou filtrer les connexions avec ipchains ou tcpd.
Maintenant pourquoi un virus n'est pas viable sous Linux (ou UNIX) :
Et pourquoi les worms UNIX se diffusent : ils attaquent des processus privilegies, qui ont accès à toutes les ressources systeme.
Enfin le cas des macro-virus :
Le problème ne se pose pas avec les applis qui n'exécutent pas automatiquement des macros opaques à l'ouverture d'un document. De tels programmes sont rares sous Unix, étant donné l'exigence de securité des administrateurs. Et la plupart des éditeurs sont quand meme plus prompts à réagir aux problèmes de sécurité que Microsoft.
On pourrait envisager l'emploi du JavaScript, mais la notion de "modèle de document" ouvert automatiquement en est absente - et il n'est pas à ma connaissance possible de modifier un fichier local depuis du JavaScript.
Julien Plissonneau Duquène
Dans Linux, toutes les opérations critiques sont traitées par le noyau (coeur du système). L'accès à ces opérations se fait par des appels systèmes et tous ces appels sont controlés par le noyau lui-meme. Ce "filtre a conneries" protège linux contre les virus.
Jerome de Vivie
D'accord... et pas d'accord. En fait il y a d'autres raisons qui font que Linux est intrinsèquement moins vulnérable (je n'ai pas dit invulnérable, hein) que Windows aux "malwares" (pour prendre un terme plus générique que virus).
En premier lieu, l'utilisation des failles existantes par ces logiciels malveillants nécessite souvent une connaissance parfaite de la manière dont le binaire attaqué est constitué (afin de prédire avec une bonne précision l'offset où se situe le buffer qu'on veut faire déborder, par ex.). Le simple fait qu'il existe de nombreuses distributions Linux, dont les binaires n'ont pas forcément été compilés de la même manière, l'existence de noyaux différents (en version et en constitution: personnellement par exemple, je vire les fonctionnalités liées aux modules sur mes machines qui sont en DMZ, c'est lourd et ça m'oblige à recompiler mes noyaux "à façon" en fonction du hard de la machine, mais bon, j'aime ça alors m'embêtez pas hein ;-) ). sont autant d'écueils à la bonne exécution d'un malware. En bref, la diversité technologique, tout comme son équivalent biologique, est payante lorsqu'il s'agit de se protéger d'une menace.
En second lieu (voire en premier aussi finalement), il y a aussi le fait que Linux ne se base pas sur le paradigme débile en usage sous Windows, selon lequel c'est l'extension d'un fichier qui détermine son statut (et donc son "exécutabilité"), mode de fonctionnement dont l'effet désastreux principal est que la moindre pièce jointe, pour peu qu'elle possède l'extension "qui va bien" (et on peut faire confiance aux pirates à ce niveau), n'a besoin pour passer à l'offensive que d'une "interface chaise-clavier" un peu déficiente... ;-) Sous Linux, c'est quand-même un peu plus dur: après avoir réussi à faire sauvegarder sa pièce jointe à notre utilisateur préféré, il faut le convaincre de faire un "chmod +x" dessus (fut-ce via une IHM style cliquodrôme), et ensuite insister grossièrement pour qu'il le lance. Je connais bien quelques boulets qui seraient capables de le faire, mais ils ne sont pas pléthore. Sans être forcément des fins limiers, beaucoup auront commencé à flairer l'arnaque avant d'en arriver là.
Le danger, à ce niveau-là, pourrait venir d'une trop grande automatisation: quand le système vous demande, après avoir cliqué sur une pièce jointe, s'il faut la sauvegarder ou l'ouvrir, et dans ce dernier cas avec quel logiciel, la petite case qui dit "toujours effectuer cette action avec ce type de fichier" est une vraie savonnette, en fin de compte. Méfiance...
Il y a encore d'autres raisons (l'absence quasi-totale de services réseaux activés par défaut sur les distribs récentes comme Ubuntu, par exemple), mais il est vrai que le maillon faible est, et reste, l'utilisateur, et qu'un système, même plus résistant initialement, peut être mis à mal si on l'utilise avec les pieds.
Pour citer Scott Grannemann, dans un article de SecurityFocus:
To mess up a Linux box, you need to work at it; to mess up your Windows box, you just need to work on it.
doOk a écrit :
Je dirais simplement que, les virus sous Linux/BSD/MacOS
existent ! Arrêter avec le mythe ./. s'ils n'ont pas de
virus c'est simplement qu'il ne prennent pas assez de part
de marché .. Les hackers préfèrent ciblaient un grand nombre
qu'un petit nombre ;)
Bonjour,
Ce n'est pas un problème de part de marché, mais de difficulté. Un cracker est-il rémunéré selon la proportion de PCs infectés ? D'ailleurs, avec la proportion actuelle de serveurs sous *nix, la part de marché est là, il n'y a pas que les PCs des utilisateurs dans la chaîne. Donc, oui, les virus sous *nix ont existé et peuvent exister, mais en as-tu rencontré ?
A lire : http://www.claymania.com/unix-viruses-fr.html
Et oui, à lire ! Je cite l'article : « il y a certainement très peu de virus en liberté fonctionnant sous UNIX, et cela n'est pas si étonnant que ça. Les restrictions d'accès dans l'environnement en sont une raison. Par exemple, quand un utilisateur lance un fichier qui contient un virus, le virus possède les mêmes privilèges que cet utilisateur (sous des conditions normales, très peu de privilèges). Donc le virus ne peut pas se propager vers d'autres systèmes. »
La voilà, la vraie raison de l'absence de virus, c'est que le système est cloisonné et que les erreurs (failles de sécurité) - celles passées ou à venir - sont immédiatement publiées et corrigées, l'information est disponible à tous et pas aux seuls pirates, le patch correctif est disponible à tous et pas aux seuls clients informés et solvables des éditeurs d'antivirus.
Je cite encore : « Mais, si un utilisateur avec toutes les permissions lance un virus, celui-ci pourrait infecter le système complet et voyager vers d'autres systèmes, et ainsi de suite. »
Si tous les utilisateurs de Linux / Mac etc. se mettaient à travailler en permanence avec les privilèges du super-admin, alors la situation en matière de virus serait la même que sous Windows ou à peu près. Or de très nombreux utilisateurs de Windows utilisent un compte type "administrateur" ou des systèmes si anciens et si peu sûrs qu'il est possible à n'importe qui - et donc à n'importe quel script de virus de base - d'aller bricoler dans les fichiers système...
Les *nix sont donc protégés à deux niveaux : par le cloisonnement effectif du système, lui-même hérité de l'expérience cumulée qui s'est constituée, et continue à l'être, suite à plusieurs failles de sécurité et des tout premiers virus et vers, mais aussi par "l'interface clavier-chaise" qui est en moyenne moins laxiste sur les bonnes pratiques qu'elle ne l'est sous Windows, là aussi en moyenne. Non que ces utilisateurs-là soient meilleurs, mais simplement parce qu'ils disposent de meilleurs outils.
Pour finir, les antivirus me font irrésistiblement penser à un grand et gros costaud avec un costard à rayures, une cravate voyante, des pompes bicolores, un chapeau et aussi une bosse étrange sous le bras qui me proposerait, moyennant finances, de me protéger alors que je n'ai rien demandé...
Ce site n'a pas été conçu pour être beau, mais vite chargé ! Site conforme aux normes. Explications... | Mise à jour du 10 octobre 2009 |