Pourquoi faut-il réfléchir à deux fois avant d’octroyer notre confiance à des fichiers signés par des certificats numériques ?

Contenu

    La confiance manifestée envers les fichiers signés par des certificats numériques motive les individus malintentionnés à trouver les méthodes les plus diverses pour signer des fichiers malveillants à l’aide de certificats numériques de confiance. Le présent article aborde les principales menaces liées aux fichiers signés et propose des mesures pratiques pour limiter les risques liés à l’ouverture de tels fichiers.

    La signature numérique d’un fichier est toujours associée à une idée de sécurité. Pour l’utilisateur, un fichier signé est un fichier qui ne peut pas contenir de code malveillant. Dans bon nombre d’entreprises, la stratégie de sécurité mise en œuvre par les administrateurs système prévoit que les utilisateurs peuvent uniquement ouvrir des fichiers dotés d’une signature numérique. De plus, certains logiciels antivirus considèrent tout fichier doté d’une signature numérique valide comme étant parfaitement inoffensif.

    Ceci étant dit, la confiance toujours plus grande accordée aux fichiers dotés de certificats numériques motive les individus malintentionnés à rechercher les méthodes les plus diverses pour signer les fichiers malveillants à l’aide de certificats numériques de confiance en vue de pouvoir utiliser ces fichiers à des fins criminelles.

    Le présent article aborde les principales menaces liées aux fichiers signés et propose des mesures pratiques pour limiter les risques liés à l’ouverture de tels fichiers.

    Création de la signature numérique des fichiers

    Pour identifier les menaces liées à l’utilisation de certificats numériques, observons la séquence d’événements qui se déroule lors de la signature d’un fichier à l’aide d’une signature numérique :

    1. Le développeur de l’application compile le fichier.
    2. Une somme de contrôle est calculée pour le fichier : MD5, SHA1, SHA2.
    3. La somme de contrôle du fichier est chiffrée à l’aide d’une clé privée du développeur.
    4. Le bloc de données chiffré obtenu et le certificat numérique sont ajoutés à la fin du fichier.

    Le certificat numérique contient la clé publique du développeur qui va permettre de déchiffrer le message et de vérifier l’intégrité du fichier. Il reprend également les informations qui confirment l’authenticité du développeur de l’application.

    L’authenticité de l’éditeur du fichier est confirmée via une autorité de certification. Cette organisation confirme aux autres utilisateurs que la clé publique qui permet de déchiffrer la somme de contrôle et de vérifier l’intégrité du fichier appartient bien au développeur de cette application. Pour ce faire, l’autorité de certification signe le certificat du développeur et confirme ainsi que la paire unique clé privée/clé publique appartient bien à ce développeur. Le certificat de l’autorité de certification qui confirme l’authenticité du fichier est également ajouté à la fin du fichier, avec le certificat du développeur.

    Les certificats des autorités de certification ne sont validés que par les organismes qui les émettent. Pour que le système d’exploitation Windows fasse confiance aux certificats octroyés par une autorité de certification en particulier, il faut placer le certificat de cette autorité dans le stockage des certificats du système d’exploitation. Les certificats des autorités de certifications les plus respectées, qui ont fait l’objet d’une certification, sont repris par défaut dans le stockage et sont remis aux utilisateurs en même temps que les mises à jour du système d’exploitation Windows. Quant aux certificats des autres autorités de certification, l’utilisateur peut les ajouter lui-même au stockage à condition qu’il fasse confiance à cette organisation.

    Exploitation des certificats de confiance par les individus malintentionnés

    Voyons maintenant les attaques qui peuvent être organisées à chacune des étapes de la signature du fichier. Nous n’aborderons pas les attaques théoriques liées aux algorithmes de chiffrement faibles utilisés pendant la signature d’un fichier. Nous allons nous concentrer sur les méthodes d’attaque les plus souvent utilisées par les individus malintentionnés.

    Insertion d’un code malveillant lors de la compilation du fichier

    Chez de nombreux grands éditeurs de logiciels, la signature des fichiers se déroule automatiquement directement après la fin de la compilation des fichiers qui se déroule également de manière centralisée sur un serveur de builds spécial.

    S’il parvient à s’introduire dans le réseau du développeur du logiciel, l’individu malintentionné peut utiliser le serveur de builds de la société pour y compiler un fichier malveillant qui sera ensuite automatiquement signé par le certificat numérique de la société. Suite à cette attaque, l’individu malintentionné obtient un fichier malveillant doté d’une signature numérique valide.

    Dans la pratique, cette menace se matérialise très rarement car le serveur de builds des grandes éditeurs de logiciels est généralement très bien protégé. Ceci étant dit, il y a déjà eu des cas d’attaques ciblées réussies dont l’objectif était l’obtention de certificats de sociétés de confiance pour des fichiers malveillants.

    Vol de clé privée

    Parfois, l’individu malintentionné parvient à s’introduire dans le réseau de l’entreprise et peut mettre la main sur la clé privée utilisée pour signer les fichiers. A l’aide de cette clé privée, il peut signer son fichier malveillant et le faire passer pour un fichier d’un éditeur de logiciels légitime.

    La clé privée peut être notamment volée à l’aide d’un programme malveillant spécialisé développé précisément pour cette fin.

    Une fois qu’il a volé la clé privée, l’individu malintentionné peut soit l’utiliser lui-même, soit la revendre. Plus l’éditeur de logiciels dont la clé privée a été volée est connu, plus la clé est intéressante pour l’individu malintentionné car les utilisateurs et les administrateurs de la sécurité des réseaux d’entreprise se méfient rarement des logiciels d’éditeurs connus.

    Ceci étant dit, chez les grands éditeurs de logiciels, les clés privées sont conservées dans des modules matériels isolés et bien protégés, ce qui complique sensiblement la tâche des voleurs potentiels. Voilà pourquoi les clés privées sont généralement volées auprès de petites entreprises ou chez des développeurs particuliers qui n’ont pas prêté l’attention nécessaire à la sécurité.

    Vulnérabilités dans l’algorithme d’analyse de la signature des fichiers exécutables

    Pour que le système d’exploitation sache où chercher les informations relatives à la présence d’une signature numérique dans le fichier, l’en-tête de chaque fichier exécutable signé contient 8 octets de données reprenant les informations sur l’emplacement et la taille de la signature numérique. Ces octets sont exclus lors de la vérification de la signature du fichier.š Si on ajoute un bloc de données à la fin de la signature d’un fichier et que la taille de la signature est augmentée de la même valeur, ces modifications n’auront également aucun effet sur le résultat de la vérification de la signature. Cela permettra d’obtenir un espace complémentaire dans le fichier signé. Les données dans cet espace n’auront aucun impact sur le résultat de la vérification de la signature du fichier.

    Cet algorithme est souvent utilisé dans les programmes d’installation Internet légitimes : leurs auteurs modifient la taille de la signature pour faire apparaître un bloc de données supplémentaire qui permet de reprendre un lien vers le fichier que ce programme d’installation doit télécharger depuis le site du développeur et installer dans le système de l’utilisateur. Pour les développeurs, cette démarche est pratique car elle évite de devoir signer à nouveau le programme d’installation chaque fois que le lien vers la distribution de l’application change. Il suffit simplement de remplacer le lien qui se trouve dans le groupe de la signature numérique.

    Les individus malintentionnés utilisent quant à eux cet algorithme à leurs fins. Après s’être emparé du programme d’installation Internet d’une application légitime, l’individu malintentionné remplace le lien de la distribution afin que le programme d’installation télécharge et installe son programme malveillant dans le système. Il place ensuite le programme d’installation modifié sur les sites de diffusion d’applications.

    Afin d’éliminer cette vulnérabilité, Microsoft a diffusé une mise à jour de sécurité qui permet de vérifier rigoureusement la signature numérique d’un fichier. Cette mise à jour n’est toutefois pas appliquée automatiquement car la majorité des éditeurs de logiciels utilise l’algorithme décrit ci-dessus dans leurs programmes d’installation et après l’inclusion automatique de cette mise à jour, les applications de ces éditeurs seront considérées comme des applications non signées. L’utilisateur peut, le cas échéant, activer cette mise à jour manuellement.

    Utilisation d’un certificat obtenu de manière légitime

    Alors qu’il y a quelques années, les certificats étaient utilisés uniquement par les grands éditeurs (personnes juridiques), de nos jours ils sont de plus en plus souvent utilisés par des développeurs particuliers et de petites entreprises. Le diagramme ci-dessous illustre la dynamique du nombre de certificats connus de Kaspersky Lab et prévus pour la signature de code. Comme vous le voyez, la quantité de certificats augmente chaque année.

    Nombre de certificats connus de Kaspersky Lab dont l’authenticité a été confirmée par une autorité de certification

    La procédure à suivre pour obtenir un certificat qui permettra de signer du code exécutable est assez simple : une personne privée doit simplement fournir les données de son passeport tandis qu’une société doit fournir ses justificatifs. Et certaines des autorités de certification qui octroient les certificats ne vérifient pas du tout l’activité de la société qui obtient le certificat. L’autorité de certification se contente d’octroyer un certificat qui donne le droit de signer les fichiers exécutables et qui confirme que ce certificat a bien été octroyé à cette personne ou à cette société.

    Ce contexte permet aux individus malintentionnés d’acheter légalement un certificat pour signer un malware ou un programme potentiellement malveillant.

    Dans la majorité des cas, ce sont les sociétés qui proposent des applications potentiellement indésirables qui recourent à l’achat d’un certificat. D’un côté, ces sociétés ne produisent pas de malwares et par conséquent, elles ont le droit d’obtenir un certificat numérique pour signer leurs applications. D’un autre côté, les applications développées par ces sociétés sont une source de gênes pour les utilisateurs. Afin de renforcer la confiance de l’utilisateur vis-à-vis de ces applications, il faut les doter d’un certificat numérique.

    Certificats douteux

    Dans tous les cas présentés ci-dessus (vol de la clé privée, attaque contre l’infrastructure d’une société et signature d’un fichier à l’aide du certificat numérique de cette société, achat d’un certificat en vue de signer un programme malveillant), le résultat est le même : le certificat de confiance sert à signer un fichier malveillant.

    Par conséquent, même si l’authenticité de ces certificats est confirmée par une autorité de certification, ils ne peuvent être considérés comme des certificats de confiance car ils ont été utilisés pour signer des fichiers malveillants et continuent de l’être.š A partir de maintenant, nous désignerons ces certificats par l’expression "certificats douteux".

    En cas de vol de la clé privée du développeur de l’application ou d’intrusion dans l’infrastructure d’une société suivie de la signature d’un fichier malveillant à l’aide d’un certificat de confiance, les autorités de certification retirent leur confiance au certificat qu’elles avaient octroyé (le certificat est révoqué). La vitesse de réaction des autorités de certification dépend de la vitesse à laquelle elles apprennent que le certificat en question est utilisé par une personne autre que le développeur.

    Toutefois, dans le cas de l’achat d’un certificat en vue de signer une application potentiellement indésirable, les autorités de certification ne révoquent pas toujours les certificats. Autrement dit, la validité du certificat est maintenue, mais il est utilisé pour signer des programmes potentiellement dangereux.

    Le diagramme suivant illustre la part de certificats utilisés pour signer un programme potentiellement indésirable par rapport à l’ensemble des certificats douteux (d’après les données de Kaspersky Lab).

    Répartition des certificats douteux par type

    Méthodes de protection contre l’exécution d’applications signées par des certificats douteux

    Nous avons abordé les méthodes les plus souvent utilisées par les individus malintentionnés pour signer leurs fichiers à l’aide de certificats numériques. A l’heure actuelle, la problématique de la signature de fichiers malveillants ou potentiellement indésirables à l’aide de certificats numériques est chaque jour un peu plus d’actualité : alors qu’en 2008 le nombre de certificats octroyés qui avaient été utilisés pour signer un malware s’élevait à 1 500, il a dépassé la barre des 6 000 en 2014.

    Variation du nombre de certificats douteux connus de Kaspersky Lab

    Si l’on tient compte de l’augmentation du nombre de menaces liées à la signature de fichiers malveillants par des certificats numériques, les utilisateurs et les administrateurs ne peuvent placer une confiance aveugle dans la présence d’une signature numérique et utiliser celle-ci comme seul critère pour l’autorisation du lancement des fichiers signés.

    Vous trouverez ci-après quelques recommandations pratiques qui permettront de réduire la probabilité d’exécution d’un nouveau malware, inconnu des bases antivirus, mais porteur d’un certificat numérique valide :

    1. Autoriser uniquement l’exécution d’applications signées par des éditeurs connus.

      Il est possible de réduire sensiblement le risque d’infection d’un système en interdisant l’exécution d’applications dotées de signatures numériques d’un éditeur inconnu. En effet, comme nous l’avons vu ci-dessus, ce sont les petits éditeurs d’applications qui sont les plus souvent victimes de vols de certificats.

    2. Autoriser l’exécution d’applications sur la base d’attributs uniques de la signature numérique.

      Plusieurs certificats octroyés par une société peuvent circuler sous le même nom. En cas de vol d’un certificat de ce genre chez un éditeur connu, l’exécution d’un fichier signé par le certificat volé sera autorisée si la notoriété de l’éditeur est le seul critère de confiance utilisé.

      Pour éviter de telles situations, il convient d’autoriser l’exécution d’applications dotées de certificats renommés en fonction de critères qui diffèrent du nom du certificat. Il peut s’agir par exemple du numéro de série ou de la somme de contrôle. Dans la mesure où le numéro de série est unique seulement dans le contexte de l’autorité de certification, il est conseillé de l’associer au nom de la société qui utilise ce certificat.

    3. Activer la mise à jour MS13-098.

      Les utilisateurs et administrateurs système de niveau avancé sont invités à activer la mise à jour MS13-098 . Elle élimine une erreur qui permettait d’ajouter des données au fichier signé sans toucher la signature du fichier. Pour en savoir plus sur l’activation de cette mise à jour, consultez le centre de sécurité de Microsoft.

    4. Ne pas installer de certificats d’autorités de certification inconnues dans le stockage.

      Il est déconseillé d’installer des certificats racine d’autorités de certification inconnues dans le stockage car, par la suite, tous les fichiers signés par les certificats validés par cette autorité seront considérés comme des fichiers de confiance.

    5. Utiliser la base de certificats de confiance fournie par les éditeurs de logiciels antivirus.

      Certains éditeurs de logiciels antivirus, dont notre société, proposent avec leurs produits une base de certificats de confiance et douteux qui est mise à jour régulièrement en même temps que les bases antivirus. Il s’agit d’un moyen efficace d’obtenir des informations sur des certificats qui n’ont pas encore été révoqués et qui ont été utilisés pour signer des malwares ou des applications potentiellement indésirables. Les fichiers signés par des certificats douteux qui figurent dans la base de données sont soumis à un contrôle renforcé de la part du logiciel antivirus.

      La base des certificats de confiance reprend les certificats d’éditeurs connus utilisés pour signer des applications de confiance. La présence du certificat dans cette base de données peut être utilisée en tant que règle d’autorisation dans le cadre du contrôle de l’exécution des applications au sein du réseau de l’entreprise.

      La présence de cette base au sein du logiciel antivirus permet de réduire la charge de travail de l’administrateur. Celui-ci n’a plus besoin de créer et de maintenir des bases de certificats de confiance.

    Le nombre de certificats numériques utilisés pour signer des malwares et autres fichiers potentiellement indésirable double en moyenne tous les ans. Par conséquent, il faut renforcer le contrôle des fichiers signés en utilisant une protection antivirus et en respectant les stratégies de sécurité décrites ci-dessus.

    Posts similaires

    Laisser un commentaire

    Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *