La signature de code est une méthode d'utilisation d'une signature numérique basée sur un certificat pour un logiciel afin que le système d'exploitation et les utilisateurs puissent déterminer sa sécurité. Seul le logiciel approprié peut utiliser sa signature numérique correspondante.
Les utilisateurs peuvent télécharger et installer des logiciels en toute sécurité et les développeurs protègent la réputation de leurs produits grâce à la signature de code. Cependant, les pirates et les distributeurs de logiciels malveillants utilisent exactement ce système pour obtenir du code malveillant via des suites antivirus et d'autres programmes de sécurité . Alors, qu’est-ce qu’un malware signé par code et comment fonctionne-t-il ?
Qu’est-ce qu’un malware signé par code ?
Lorsqu’un logiciel est signé numériquement, cela signifie qu’il possède une signature numérique officielle. L'autorité de certification délivre un certificat à un logiciel pour déterminer que le logiciel est légal et sûr à utiliser.
Les utilisateurs n'auront pas à s'inquiéter car le système d'exploitation vérifiera le certificat et vérifiera cette signature numérique. Par exemple, Windows utilise une chaîne de certificats qui contient tous les certificats nécessaires pour garantir la légitimité du logiciel.
La chaîne de certificats contient tous les certificats nécessaires pour certifier l'entité identifiée par le certificat final. En fait, il se compose d'un certificat de terminal, d'un certificat d'autorité de certification intermédiaire et d'un certificat d'autorité de certification racine approuvé par toutes les parties de la chaîne. Chaque certificat d'autorité de certification intermédiaire de la chaîne contient un certificat émis par l'autorité de certification un niveau supérieur. L'autorité de certification racine délivre des certificats pour elle-même.
Une fois le système opérationnel, vous pouvez faire confiance au logiciel, au système de signature de code et à l'autorité de certification. Les logiciels malveillants sont des logiciels malveillants, ne sont pas fiables et n'ont pas accès à l'autorité de certification ou à la signature du code.
Les pirates volent les certificats de l'autorité de certification
Les logiciels antivirus savent que les logiciels malveillants sont malveillants car ils affectent négativement votre système. Il déclenche des avertissements, les utilisateurs signalent des problèmes et un logiciel antivirus peut créer des signatures de logiciels malveillants pour protéger d'autres ordinateurs utilisant le même moteur antivirus.
Toutefois, si les créateurs de logiciels malveillants pouvaient signer des logiciels malveillants à l’aide de signatures numériques officielles, le processus ci-dessus ne se produirait pas. Au lieu de cela, les logiciels malveillants codés peuvent pénétrer dans le système par la voie officielle, car votre logiciel antivirus et votre système d'exploitation ne détectent rien de dangereux.
Selon une étude de Trend Micro, l'ensemble du marché des logiciels malveillants se concentre sur le développement et la distribution de logiciels malveillants signés par code. Les opérateurs de logiciels malveillants ont accès à des certificats valides utilisés pour signer le code malveillant. Le tableau ci-dessous montre le nombre de logiciels malveillants utilisant la signature de code pour échapper aux logiciels antivirus depuis avril 2018.
Les recherches de Trend Micro montrent également qu'environ 66 % des logiciels malveillants possèdent des signatures numériques. De plus, certains types spécifiques de logiciels malveillants possèdent plusieurs versions de signatures numériques, tels que les chevaux de Troie , les compte-gouttes et les ransomwares .
D’où vient le certificat numérique de signature de code ?
Les distributeurs et les développeurs de logiciels malveillants disposent de deux méthodes pour créer des logiciels malveillants signés par code. Ils volent des certificats à l'autorité de certification en acquérant ou en se faisant passer pour une organisation légitime directement ou en demandant un certificat à l'autorité de certification.
Comme vous pouvez le constater, CA n’est pas le seul endroit ciblé par les pirates. Les distributeurs ayant accès à des certificats légitimes peuvent vendre des certificats fiables signés numériquement aux développeurs et distributeurs de logiciels malveillants.
Une équipe de recherche en sécurité de l'Université Masaryk en République tchèque et du Maryland Cybersecurity Center a découvert quatre organisations vendant des certificats Microsoft Authenticode à des acheteurs anonymes. Une fois qu'un développeur de logiciels malveillants dispose d'un certificat Microsoft Authenticode, il peut signer tout logiciel malveillant possible via la signature de code et la protection basée sur des certificats.
Dans d'autres cas, au lieu de voler des certificats, les pirates informatiques infiltreront le serveur de génération de logiciels. Lorsqu'une nouvelle version du logiciel est publiée, elle disposera d'un certificat légitime, les pirates profitent de ce processus pour ajouter du code malveillant.
Exemple de malware signé par code
Alors, à quoi ressemblent les logiciels malveillants signés par code ? Vous trouverez ci-dessous trois exemples de ce type de malware.
- Malware Stuxnet : Ce malware a détruit le programme nucléaire iranien en utilisant deux certificats volés et quatre vulnérabilités zero-day. Ces certificats ont été volés à deux sociétés JMicron et Realtek. Stuxnet a utilisé des certificats volés pour éviter la nouvelle exigence d'introduction de Windows selon laquelle tous les pilotes doivent être vérifiés.
- Violation du serveur Asus : entre juin et novembre 2018, des pirates ont pénétré un serveur Asus que les entreprises utilisent pour proposer des mises à jour logicielles aux utilisateurs. Les recherches de Kaspersky Lab montrent qu'environ 500 000 appareils Windows ont reçu cette mise à jour malveillante avant d'être détectés. Sans voler de certificats, ces pirates signent des certificats numériques Asus légitimes pour leurs logiciels malveillants avant que le serveur logiciel ne distribue les mises à jour du système.
- Malware Flame : variante du malware du module Flame ciblant les pays du Moyen-Orient, utilisant des certificats signés frauduleusement pour éviter d'être détecté. Les développeurs de Flame ont utilisé un algorithme de cryptage faible pour falsifier les certificats numériques de signature de code, donnant l'impression que Microsoft les avait signés. Contrairement à Stuxnet, qui se voulait destructeur, Flame est un outil d'espionnage, recherchant des fichiers PDF, des fichiers AutoCAD, des fichiers texte et d'autres types de documents industriels importants.
Comment éviter les logiciels malveillants signés par code ?
Ce type de malware utilise la signature de code pour éviter d'être détecté par les logiciels et systèmes antivirus, il est donc extrêmement difficile de se protéger contre les malwares signés par code. Il est essentiel de toujours mettre à jour les logiciels et les systèmes antivirus, évitez de cliquer sur des liens inconnus et vérifiez soigneusement d'où vient le lien avant de le suivre. Reportez-vous à l'article Risques liés aux logiciels malveillants et comment les éviter .