Fin 2017, un logiciel censé nettoyer et accélérer Windows s'est retrouvé au cœur d'une affaire d'espionnage industriel. Le coupable n'était ni une pièce jointe piégée, ni un site frauduleux, mais une mise à jour officielle, signée numériquement par l'éditeur lui-même.

CCleaner, un poids lourd du nettoyage Windows

CCleaner naît en 2003 sous le nom de Crap Cleaner, conçu pour purger les fichiers temporaires et le registre des Windows XP vieillissants. Le projet est rapidement repris par la société britannique Piriform, fondée en 2004. Le logiciel gagne en popularité au fil des années : un milliard de téléchargements cumulés en 2012, deux milliards en 2016, avec un rythme annoncé de plusieurs millions de nouvelles installations chaque semaine.

Cette base d'utilisateurs colossale a fini par attirer des convoitises d'un tout autre genre que celles d'un éditeur concurrent.

Piriform rejoint Avast, sans savoir que le mal est déjà fait

En juillet 2017, l'éditeur d'antivirus tchèque Avast annonce le rachat de Piriform. Les conditions financières de l'opération n'ont jamais été officiellement communiquées, malgré plusieurs estimations divergentes relayées dans la presse spécialisée (VentureBeat, BleepingComputer).

Ce que personne ne sait au moment de la signature, c'est que le réseau interne de Piriform est déjà compromis depuis plusieurs mois. Avast rachète, sans le savoir, une entreprise dont l'infrastructure de build sert déjà de rampe de lancement à des attaquants.

Anatomie d'une attaque par chaîne d'approvisionnement

Infecter individuellement des millions de machines à travers le monde est, en pratique, hors de portée. Compromettre en amont l'éditeur d'un logiciel largement diffusé, en revanche, permet de transformer chaque mise à jour légitime en vecteur de diffusion.
C'est le principe d'une attaque par chaîne d'approvisionnement (supply chain attack) : la cible réelle n'est pas l'utilisateur final, mais le maillon en qui il place une confiance qu'il ne pense jamais à remettre en question.

L'enquête menée conjointement par Avast et Cisco Talos a permis de reconstituer une chronologie précise de l'intrusion :

Date Événement
11 mars 2017 Accès à un poste de développeur laissé allumé, via TeamViewer, avec des identifiants issus d'une fuite de données réutilisés
12 mars 2017 Rebond vers une seconde machine via le protocole RDP
12 avril 2017 Déploiement de ShadowPad, un implant capable d'enregistrer les frappes clavier, sur plusieurs postes et un serveur de build
Avril à juillet 2017 Collecte d'identifiants supplémentaires et progression au sein du réseau
2 août 2017 Substitution du binaire officiel de CCleaner par la version piégée sur les serveurs de téléchargement
15 août 2017 Publication publique de CCleaner 5.33, contenant la porte dérobée
13 septembre 2017 Détection de la compromission par Cisco Talos

Cinq mois se sont donc écoulés entre la première intrusion et la publication de la version infectée. Un délai qui témoigne d'une opération patiente, loin de l'image du piratage opportuniste.

Une porte dérobée invisible pour les antivirus

Techniquement, le malware n'a pas été ajouté à côté du programme légitime : il a été injecté à l'intérieur même du binaire officiel, en détournant une fonction d'initialisation du programme pour y glisser un premier appel vers du code malveillant. L'installateur qui en résulte est ensuite signé avec le certificat numérique de Piriform, exactement comme n'importe quelle version légitime. Pour Windows comme pour les antivirus, rien ne distingue alors ce fichier d'une mise à jour authentique.

Une fois exécuté, ce premier étage (identifié par les chercheurs sous le nom de Floxif) patiente plusieurs minutes pour échapper aux environnements d'analyse automatisée, puis collecte discrètement des informations sur la machine : nom de l'ordinateur, logiciels installés, adresses MAC, identifiant unique de la victime. Ces données sont transmises à un serveur de commande et de contrôle (C2) que les attaquants utilisent pour piloter l'ensemble des machines infectées et sélectionner celles qui méritent une attention particulière.

Pendant près d'un mois, cette version modifiée est distribuée normalement, avec les mises à jour automatiques du logiciel. Le bilan final : 2,27 millions d'installations touchées.

Une pêche au filet dérivant, pour repérer des cibles bien précises

C'est ici que l'opération révèle sa vraie nature. Sur l'ensemble des machines infectées, les analyses menées par Talos et Avast ont montré qu'un second module, bien plus discret, n'a été livré qu'à une quarantaine de postes, sélectionnés sur la base de leur nom de domaine réseau. Les organisations concernées comptaient notamment Google, Microsoft, Cisco, Intel, Samsung, Sony, VMware, HTC, D-Link, Linksys, Singtel ou encore Akamai, d'après les listes reconstituées par Talos et relayées par Forbes.

Autrement dit, les 2,27 millions de machines infectées n'étaient qu'un immense filet destiné à repérer, parmi la masse, les rares postes connectés au réseau d'une grande entreprise technologique. Le grand public n'était pas la cible : il servait de porte d'entrée potentielle vers un employeur.
Le profil de l'opération, tel que décrit par les chercheurs, correspond moins à de la cybercriminalité classique qu'à une opération d'espionnage industriel ciblant du code source ou de la propriété intellectuelle.

La découverte, entre chance et vigilance

L'alerte est venue de plusieurs directions presque simultanément. Mi-septembre 2017, la société Morphisec signale des comportements anormaux liés à des installations de CCleaner chez ses clients. Le 13 septembre, indépendamment, les équipes de Cisco Talos détectent le même binaire suspect via leurs propres outils de détection, alors en phase de test. Avast est prévenu le jour même. Le 15 septembre, les serveurs de commande et de contrôle sont neutralisés avec le concours des autorités américaines. L'affaire est rendue publique le 18 septembre 2017, et confirmée peu après par une alerte du CERT-FR.

La communication initiale d'Avast, qui minimise l'impact et affirme qu'aucune réinstallation n'est nécessaire, est publiquement contredite par Cisco Talos, pour qui une machine compromise par un accès distant potentiel doit être réinstallée intégralement, faute de pouvoir garantir ce que l'attaquant y a réellement fait.

Qui se cache derrière l'opération

Les chercheurs de Kaspersky ont relevé des similitudes de code avec des outils déjà attribués au groupe Axiom, un acteur d'espionnage associé à la Chine. Un partage de code ne constitue toutefois jamais une preuve formelle : les mêmes outils peuvent circuler entre plusieurs groupes, ou être délibérément réutilisés pour brouiller les pistes.

Un second indice a alimenté le débat : le serveur de commande et de contrôle des attaquants était configuré sur le fuseau horaire chinois, alors que les horaires de connexion observés correspondaient davantage à l'Asie centrale ou à l'Europe de l'Est. Ces éléments contradictoires n'ont jamais permis d'attribution officielle, et à ce jour, aucun État ni aucun groupe n'a été formellement inculpé pour cette attaque.

Un signal d'alarme, pas un cas isolé

L'affaire CCleaner aurait dû servir de leçon à toute une industrie, mais elle n'a pas empêché que d'autres suivent le même chemin.
La même année, le logiciel de comptabilité ukrainien M.E.Doc servait de porte d'entrée au ransomware NotPetya, selon un mode opératoire quasi identique. En 2019, Avast lui-même était de nouveau visé, cette fois via un accès VPN dépourvu de double authentification. En 2020, l'affaire SolarWinds démontrait qu'une chaîne d'approvisionnement logicielle pouvait servir de vecteur à une compromission touchant plus de 18 000 organisations.

Dans les quatre cas, le point d'entrée initial reste étonnamment banal : un identifiant réutilisé, un accès distant mal protégé, une authentification à un seul facteur. Ce qui a permis de mettre fin à l'attaque CCleaner n'est d'ailleurs pas un dispositif de prévention, mais une détection a posteriori, en partie due au hasard du calendrier. La page Wikipédia consacrée à CCleaner résume d'ailleurs cet épisode comme l'un des exemples les plus cités pour illustrer les risques liés aux mises à jour automatiques.

L'épisode a durablement changé la manière dont les éditeurs sécurisent leurs infrastructures de build et de signature. Il rappelle surtout qu'une confiance accordée à un éditeur, aussi légitime soit-elle, ne dispense jamais d'une vigilance sur les accès qui protègent cette confiance.