Connaître son ennemi

Pour mieux combattre un ennemi, il faut bien le connaître. Quel est l'objectif d'un spammeur (nom donnée aux personnes qui envoient du spam) ? C'est très simple : il veut attirer notre attention. J'ai retenu deux grandes catégorie de spam : vente d'un produit et publicité pour un site internet.

Dans la première catégorie, je ne peux m'empêche de citer le « Enlarge your penis » et autre « Viagra ». Je reçois régulièrement des offres promotionnelles pour la suite bureautique Microsoft Office… ce qui me fait toujours sourire car j'utilise OpenOffice (alternative libre et gratuite) depuis plusieurs années. Le plus incongru était une offre pour acheter un drapeau américain. J'avais reçu cette proposition juste après la chute des deux tours jumelles.

La seconde catégorie est un effet pervers du leader en matière de moteur de recherche : Google. Brièvement, le classement d'un site internet dépend en très grande partie du nombre de fois qu'il est cité dans d'autres sites internets. Pour monter dans le classement, il faut donc augmenter le nombre de citations. Pendant un moment, des sites internets fantômes ont été crée pour gonfler les classements. Mais rapidement, Google s'est aperçu de la supercherie et a développé un outil de détection contre cette astuce.

Une autre manière d'être cité par d'autres sites internets… est tout simplement d'aller sur des sites internets et de ce citer soi-même. Ceci semble tout à fait immoral mais fonctionne malheureusement à merveille. Je ne serai pas en train de vous parler de spam sinon :-)

Enfin, pour expliquer l'ampleur du phénomène, c'est très simple : l'envoi de spam a un coût « nul ». Je veux dire par là qu'à part rédiger le texte, installer et configurer un logiciel de spam, il n'y a que de la bande passante qui est consommée. Le coût d'un spam électronique en comparaison de celui d'une publicité papier est vraiment dérisoire.

Combattre les courriels non sollicités

La première approche pour combattre le spam était basée sur la blacklist (liste noire de bannissement). Elle fonctionnait au début quand le phénomène était mineur. Mais aujourd'hui c'est une peine perdue : il est beaucoup trop facile aujourd'hui d'envoyer une courriel avec une adresse fictive, de cacher son identité, de générer des adresses ou des noms de serveurs aléatoires qu'il est vain de vouloir en faire une liste exhaustive.

Rassurez-vous, je pense que le problème du spam par courriel est en grande partie résolu. Les deux outils les plus efficaces sont les filtre bayesiens et le greylisting.

Filtres bayesiens

Le principe est un outil autonome qui va trier le bon grain du mauvais grain. Sa grande qualité est qu'il apprend au fur et à mesure. Au début, il faut lui apprendre à faire la différence entre un spam et un courriel non-spam (qu'on appelle ham).

Le client de courriel Thunderbird, par exemple, intègre d'une manière très élégante un filtre bayesien au sein de son interface. La majorité des clients de courriel peuvent utiliser un tel filtre.

Malheureusement les spammeurs n'ont cesse de rechercher des nouvelles astuces pour contourner les filtres. La dernière nouveauté est de générer un texte aléatoire et d'y associer une image en pièce jointe qui contient l'information principale. Le texte est composé de mots courants et biaise donc les filtres bayesiens…

Je centralise mes courriels sur un serveur OVH. Ce dernier propose SpamAssassin (filtre anti-spam utilisant l'inférence bayesienne), outil très efficace qui n'a détecté qu'un seul faux-positif (courriel marqué spam alors que ce n'est pas le cas) en deux ans d'utilisation. J'ai décidé le mercredi 27 septembre 2006 de supprimer purement et simplement les spams détectés par OVH. Ras le bol des spams !

Greylisting

Le second outil que je veux vous présenter nécessite d'avoir un serveur de courriel (appelé « serveur SMTP »). Je ne vais pas vous expliquer comment le mettre en place, car je ne sais pas vraiment le faire, mais simplement en expliquer le principe.

L'idée est de se baser sur une whitelist (liste blanche) des serveurs autorisés à nous envoyer des courriels. Sauf que constituer manuellement une telle liste est un travail éreintant et donc inefficace. Le greylisting fait vivre la whitelist en refusant les serveurs inconnus. Sauf qu'un serveur respectant les standards (ce qui est loin d'être le cas des serveurs des spammeurs) va retenter sa demande de relayage de courriel après 15 minutes. Le courriel sera finalement délivré mais avec un retard de 15 minutes lors du 1er envoi. Les envois suivant ne seront pas retardés.

À ce que j'ai entendu, pas moins de 90% du spam est bloqué à la source avec une telle méthode. Le grand avantage est qu'il ne nécessite quasiment aucune ressource processeur ou mémoire et qu'il éradique le spam au niveau du serveur et non pas au niveau du client. Le boîte de courriel du client ne sera donc pas surchargée.

Spam dans les forums, wikis et blogs

Internet a évolué doucement d'un espace fermé (non éditable) à un espace ouvert (éditable). Les premiers espaces d'échanges furent les livres d'or qui permettaient de déposer un message au webmestre, souvent pour le féliciter de son travail. Aujourd'hui, l'ouverture est partout : de très nombreux forums de discussions, sites webs éditables par les visiteurs (wikis) dont le plus célèbre est Wikipédia, commentaires des blogs et articles, etc.

Une première protection a été de demander aux visiteurs de se fidéliser en créant un compte personnel. Ceci est souvent vu comme une atteinte à la vie privée car il faut renseigner son adresse de courriel, son surnom et parfois bien plus (date de naissance, nom réel, adresse, pays, etc.). Pour ma part, je ne donne jamais ma vraie identité, je donne en général des informations totalement aléatoires. Par contre, je renseigne une adresse de courriel poubelle justement pour éviter le spam, mais une adresse qui existe réellement pour recevoir mon mot de passe. Je donne ma vraie identité qu'aux sites de confiance tel que Wikipédia.

Une seconde protection, très contraignante, est de devoir saisir quelques lettres et chiffres dessinés dans une image. Ceci n'arrête pas les spammeurs car des outils de reconnaissance de caractère très doués existent. Du coup, les images sont très dures à déchiffrer : texte déformé, couleurs peu contrastées, etc.

En pratique, ces deux protections (création de compte et image aléatoire) sont efficace mais laissent tout de même passer une partie du spam.

Une troisième approche, que j'ai découverte récemment, est maligne et très efficace. Comme je l'expliquais auparavant : le spammeur cherche à nous attirer vers son site internet. Et bien, c'est tout simple : il suffit d'interdire le droit de citation de site internet ! Mais pour éviter qu'un visiteur ne puisse citer un site internet pertinent, il ne faut pas être trop radical. Le juste milieu est d'interdire les adresses débutant par « http:// ». J'ai découvert cette approche dans Trac 0.10 (outil de gestion de projet complet).

Las de supprimer manuellement les spams dans les commentaires de mon blog, j'ai modifié DotClear pour reproduire ce comportement. Après avoir interdit les trackbacks (qui apparemment ne servent qu'aux spammeurs…), les commentaires contenant "http://" ou "https://" sont désormais rejetés. Lisez mon correctif anti-spam pour DotClear 1.2.

Le mot de la fin

Ce texte est long mais j'en avais gros sur la patate. J'espère qu'ensemble nous arriverons petit à petit à diminuer l'impact du spam. Allez, quand je serai motivé j'expliquerai comment surfer sur internet sans être noyé dans la publicité ;-)