Rejoignez Keyfactor à la RSA Conference™ 2024 | du 6 au 9 mai | En savoir plus

Qu'est-ce que la signature de code ? La feuille de route définitive pour la signature de code sécurisée

La plupart des développeurs de software et de microprogrammes reconnaissent l'importance de la signature du code. Cependant, ils ont du mal à la mettre en œuvre de manière efficace et sécurisée. Ce guide explore les menaces et les erreurs courantes dans les opérations de signature de code. Il propose ensuite des conseils étape par étape sur la manière de répondre aux besoins de vos développeurs et de votre équipe de sécurité, le tout en un seul endroit.

illustration de personnes travaillant sur des appareils en réseau
  • Accueil
  • Centre d'éducation
  • Qu'est-ce que la signature de code ? La feuille de route définitive pour la signature de code sécurisée

Qu'est-ce que la signature de code ?

Nous vivons dans un monde qui fonctionne avec du code. Software imprègne pratiquement tous les aspects de notre vie, depuis les objets que nous utilisons chaque jour jusqu'aux infrastructures essentielles de notre société. Il est difficile d'imaginer aujourd'hui une entreprise qui ne dépende pas de software d'une manière ou d'une autre. Alors que le site IoT continue de se développer, le site software s'intègre de plus en plus dans notre monde physique.

Il fut un temps où les utilisateurs pouvaient faire confiance au site software qu'ils téléchargeaient, mais c'est loin d'être le cas aujourd'hui. Les pirates informatiques étant de plus en plus habiles dans l'art de diffuser des logiciels malveillants, même les professionnels de l'informatique ont du mal à savoir si le site software ou le produit qu'ils ont acheté est légitime. C'est là que la signature de code entre en jeu.

La signature de code est une méthode cryptographique utilisée par les développeurs pour prouver qu'un élément du site software est authentique. En signant numériquement les applications, software ou les microprogrammes intégrés à l'aide d'une clé privée, les utilisateurs finaux ont la preuve que le code provient d'une source fiable et légitime et qu'il n'a pas été modifié depuis sa publication.

"Lorsque vous signez un morceau de code, vous déclarez que le site software provient de votre organisation et que vous le soutenez." Ted Shorter | Directeur technique et cofondateur, Keyfactor

Comment la signature de code est-elle utilisée ?

Enterprise IT

Les équipes informatiques des entreprises doivent s'assurer que tous les scripts ou utilitaires internes appliqués dans l'entreprise sont signés afin d'empêcher toute altération par des utilisateurs internes ou des menaces externes.

IoT Fabricants

Dans l'Internet des objets émergent (IoT), la signature de code est le moyen le plus efficace de garantir l'intégrité des appareils depuis leur activation jusqu'aux mises à jour du micrologiciel et de software .

Développeurs d'applications mobiles

Les magasins d'applications populaires de Microsoft, Google et Apple exigent que les applications mobiles soient signées avant d'être soumises et publiées pour être achetées.

Software Vendeurs

Les développeurs de software sont souvent tenus de signer le code pour en faciliter l'installation. Les systèmes d'exploitation comme Windows et macOS avertissent les utilisateurs si software ou les pilotes ne sont pas signés.

Pourquoi la sécurité de la signature de code est-elle importante ?

La signature de code sans sécurisation de vos clés privées peut vous exposer à plus de risques que l'absence de signature de code. Les attaquants cherchent à compromettre ces clés pour signer et distribuer des codes malveillants à vos clients - masqués en tant que software ou firmware légitimes.

illustration de bâtiments urbains

Vol de clés

Si les clés privées liées à vos certificats de signature de code sont compromises, c'est la fin de la partie. Les clés de signature de code volées sont les plus prisées des pirates : elles sont vendues ou utilisées pour créer des logiciels malveillants signés qui semblent avoir été publiés par vos développeurs.

Violation de la signature

Les pirates n'ont pas besoin de vos clés pour signer des logiciels malveillants. Si des serveurs de construction ou des postes de travail de développeurs disposant d'un accès illimité aux systèmes de signature de code sont violés, un attaquant peut simplement soumettre des logiciels malveillants à signer et à distribuer sans être détecté.

Mauvais usage interne

Les développeurs sont spécialisés dans le code, pas dans la sécurité. Les clés et les certificats de signature de code peuvent facilement être mal utilisés ou égarés par les développeurs, ce qui permet à des attaquants potentiels de saper l'intégrité de vos opérations de signature de code.

L'impact du compromis sur le code

Software Les éditeurs, les fabricants d'appareils et les équipes de développement internes ont adopté la signature de code comme moyen de protéger leur propriété intellectuelle, la marque de leur entreprise et leurs utilisateurs finaux. Mais la confiance et l'intégrité de la signature de code dépendent entièrement de la sécurité de vos clés.

Une seule faille dans cette "chaîne de confiance" peut entraîner l'arrêt de toute votre activité. Les efforts déployés pour révoquer et réémettre rapidement les certificats, informer les clients et diffuser une nouvelle mise à jour signée sont coûteux. Il en résulte une perte de revenus et le coût du rétablissement de la confiance avec les utilisateurs, les partenaires et les investisseurs.

"Au cours des deux dernières années, les organisations ont connu en moyenne quatre incidents liés à l'utilisation abusive de clés et de certificats de signature de code. Le coût moyen de ces incidents était de 15 millions de dollars." - Rapport Ponemon 2019, The Impact of Unsecured Digital Identities (L'impact des identités numériques non sécurisées)

Connaître les risques

Les récentes attaques de signature de code soulignent l'importance de la gestion du risque de réputation. Que vous consommiez software ou que vous le vendiez, tous les chefs d'entreprise doivent investir dans la confiance associée à leur marque numérique - et attendre la même chose de leurs fournisseurs.

illustration de bâtiments dont l'un comporte une alerte

Brèche d'Adobe

Rapporté : 2012

BREACH

Des pirates se sont introduits dans un serveur de construction ayant accès au système de signature de code d'Adobe. Une fois à l'intérieur, les pirates ont utilisé le serveur pour signer des logiciels malveillants à l'aide d'un certificat de signature de code valide. Adobe a réagi en révoquant le certificat, ce qui a eu un impact sur trois de ses applications et des millions d'utilisateurs.

Incident Bit9

Rapporté : 2013

VOL

Bit9 a reçu des rapports de ses clients faisant état de la découverte de logiciels malveillants dans leurs réseaux - des logiciels malveillants signés numériquement par le propre certificat de signature de code de Bit9. On a découvert par la suite que des pirates s'étaient infiltrés dans une machine virtuelle et avaient volé un certificat pour signer et distribuer le logiciel malveillant à au moins trois clients de Bit9.

Fuite D-Link

Rapporté : 2015

MISUSES

Les pirates n'ont pas toujours besoin de voler un certificat de signature de code valide, en particulier lorsque les fabricants le publient eux-mêmes à leur insu. En 2015, les développeurs du fabricant d'équipements de réseau D-Link ont accidentellement publié quatre clés de signature de code privées dans le micrologiciel open-source . Aucun logiciel malveillant connu n'a été signé avec ces clés. Aucun logiciel malveillant connu n'a été signé avec ces clés, mais D-Link a été sévèrement critiqué pour cet incident.

Suckfly APT

Rapporté : 2016

VOL

Un groupe de menace persistante avancée (APT) basé en Chine, connu sous le nom de Suckfly, a volé des certificats de signature de code à au moins neuf entreprises différentes en Corée du Sud. Le groupe a ensuite utilisé ces certificats pendant deux ans pour signer des outils de piratage et des logiciels malveillants dans le cadre d'une campagne ciblée contre des entreprises en Inde.

D-Link (à nouveau)

Rapporté : 2018

VOL

Les entreprises technologiques D-Link et Changing Information Technology, basées à Taiwan, ont été ciblées par un autre groupe APT connu sous le nom de BlackTech. Au moins deux certificats de signature de code ont été volés et utilisés pour signer un logiciel malveillant Windows connu sous le nom de PLEAD, qui vole les mots de passe saisis dans les navigateurs web des machines infectées.

Marteau de l'ombre

Rapporté : 2019

BREACH

ASUS, un célèbre fabricant d'ordinateurs portables et de téléphones mobiles, a transmis à son insu des logiciels malveillants à des milliers de ses clients pendant au moins cinq mois. Cette attaque sophistiquée de la chaîne d'approvisionnement software a été baptisée "Opération ShadowHammer". Les pirates ont compromis deux certificats de signature de code d'ASUS et ont diffusé des logiciels malveillants signés par l'intermédiaire de l'utilitaire ASUS Live Update, insérant des portes dérobées dans au moins un million d'appareils.

"Nous avons vu les mises à jour arriver du serveur Live Update ASUS. Il s'agissait de mises à jour trojanisées ou malveillantes, signées par ASUS". - Des pirates ont détourné les mises à jour d'ASUS Software pour installer des portes dérobées sur des milliers d'ordinateurs.

Les obstacles à la réussite

La bonne nouvelle, c'est que la plupart des fournisseurs indépendants software (ISV) et des fabricants d'appareils reconnaissent l'importance de la signature du code. Le plus grand défi est de savoir comment la mettre en œuvre de manière à répondre efficacement aux besoins des développeurs et des équipes de sécurité informatique.

Vitesse ou sécurité

Les équipes chargées de la sécurité et de PKI préféreraient isoler et verrouiller les clés privées, mais les développeurs ont besoin d'un accès rapide pour signer le code et le mettre en production. Le plus gros problème est de savoir comment mettre en œuvre des mesures de protection pour empêcher l'utilisation abusive des clés et des certificats sans entraver la productivité de vos développeurs.

Menaces sophistiquées

Software Les attaques contre la chaîne d'approvisionnement sont de plus en plus fréquentes et sophistiquées. Les pirates informatiques, les cybercriminels et même les attaques parrainées par des États mettent en péril la sécurité et l'intégrité de votre site software . Le coût des certificats de signature de code sur le marché clandestin ne cessant d'augmenter, certains attaquants ont adopté une approche plus directe.

DevOps et développement agile

Les pratiques DevOps ont pris d'assaut le monde de l'informatique. Les constructions incrémentales rapides et fréquentes de software sont le mot d'ordre. Toute modification du cycle de développement Software (SDLC) peut introduire plus de risques qu'elle ne vise à en prévenir. La sécurité doit s'adapter aux flux de travail DevOps existants et aux processus de signature.

Équipes de développement dispersées

Aujourd'hui, les équipes de développement collaborent entre des sites dispersés dans le monde entier. Lorsqu'une équipe distante doit signer du code, la solution la plus simple consiste à acheter un certificat de signature. Une fois achetés, les certificats sont souvent laissés à la portée des pirates et hors de la portée de votre équipe de sécurité sur des postes de travail de développeurs disparates ou des serveurs de construction.

La feuille de route pour une signature sécurisée du code

Assez de théorie. Voyons maintenant les quatre mesures pratiques que votre organisation peut prendre pour relever ces défis, ainsi que la bonne solution pour vous aider à y parvenir. la bonne solution pour vous aider à y parvenir

01 | Sauvegarde des clés privées

Les clés privées que les développeurs utilisent pour signer le code sont d'une valeur inestimable pour les pirates. Une fois compromises, ces clés peuvent être utilisées pour signer pratiquement n'importe quel code et le distribuer à des milliers d'utilisateurs. Ces types d'attaques sont de plus en plus fréquents, les pirates cherchant à échapper aux outils de détection des logiciels malveillants.

illustration des serveurs protégés par cryptage

Aucun secteur ni aucune entreprise n'est à l'abri. Des fournisseurs de confiance en matière de sécurité et de hardware , tels que Bit9 (aujourd'hui Carbon Black) et D-Link, ont été la proie d'attaquants persistants. Ces derniers ont réussi à se faufiler dans leur réseau pour trouver et compromettre des clés de signature de code et les utiliser contre leurs propres clients.

La charge de la signature du code incombe souvent aux développeurs spécialisés dans l'écriture du code, et non dans la sécurisation des clés. En conséquence, les clés se retrouvent dans des endroits non sécurisés du réseau, tels que les postes de travail des développeurs, les serveurs de construction et qui sait où d'autre. Les équipes chargées de la sécurité informatique ignorent souvent le nombre exact de certificats de signature de code dont elles disposent et l'endroit où ils sont stockés.

Faites un inventaire complet de votre paysage

Les certificats numériques et les clés utilisées pour la signature de code sont des actifs de grande valeur, mais 71 % des entreprises ne savent pas exactement combien elles en possèdent. Commencez par faire l'inventaire du nombre de clés de signature de code que vous possédez, de l'endroit où elles se trouvent et de la manière dont elles sont stockées.

Gestion centralisée des clés et des certificats

La signature de code locale crée des silos de sécurité et augmente les coûts. Une solution centralisée, côté serveur, peut simplifier l'administration, améliorer la sécurité et éliminer la nécessité d'avoir un certificat de signature de code distinct pour chaque développeur ou flux de construction.

Stocker les clés privées dans un HSM certifié

Hardware (HSM) sont le moyen le plus efficace de s'assurer que vos clés privées restent sous votre contrôle. Les clés peuvent être stockées ou générées à l'intérieur du HSM et utilisées pour signer du code n'importe où, sans jamais avoir à quitter le site hardware.

Choisir une solution flexible

Choisissez une solution facile à déployer et à adapter à l'augmentation de la demande de signature de code. Les services HSM en nuage offrent tous les avantages de la sécurité de niveau hardware, mais sans les dépenses initiales, la configuration manuelle et la maintenance continue des HSM dédiés hardware .

02 | Opérations de signature sécurisée

Si un pirate s'introduit dans votre réseau de développeurs, il n'a pas besoin de voler vos clés. En accédant à un serveur de construction ou à un poste de travail de développeur ayant accès à l'infrastructure de signature de code, les pirates peuvent simplement soumettre des logiciels malveillants pour qu'ils soient signés et distribués sans être détectés.

illustration de personnes utilisant des ordinateurs portables autour d'une grande icône de bouclier

Mieux connues sous le nom de "software supply chain attacks", ces menaces sont encore plus difficiles à détecter car elles impliquent souvent un initié ou un attaquant ayant un accès direct à la signature du code. Même Adobe et ASUS, qui disposent d'équipes de sécurité sophistiquées, n'ont pas été en mesure de détecter des violations de leur infrastructure de signature de code pendant des mois.

Les attaquants trouveront toujours le chemin de la moindre résistance. Le stockage des clés privées dans un HSM réduit le risque de vol de clés, mais il y a fort à parier que des acteurs déterminés trouveront un autre moyen. Dans le cas d'Adobe, les clés privées étaient stockées en toute sécurité dans un HSM, mais les pirates ont accédé à un serveur de développement et ont simplement demandé des signatures pour le code malveillant.

Il est absolument essentiel de s'assurer que seuls les bons développeurs peuvent signer le bon code - au bon moment. En ne permettant qu'aux utilisateurs autorisés de signer et d'approuver le code, vous pouvez vous assurer que même si un pirate s'introduit dans votre réseau. Cela empêche les pirates d'accéder à votre infrastructure critique de signature de code.

Définir les rôles et séparer les tâches

Établissez des rôles distincts pour les personnes autorisées à soumettre du code à signer et celles autorisées à approuver les demandes de signature. La répartition de ces tâches permet de s'assurer que seuls les utilisateurs de confiance peuvent signer le code, ce qui empêche les pirates d'intervenir dans les opérations de signature.

Appliquer les politiques et pratiques en matière de signature de code

Veillez à ce que même les développeurs autorisés n'aient accès à la signature du code que pour une durée définie, un nombre de signatures et d'autres paramètres, afin d'éviter les signatures illégitimes ou les abus internes. Recherchez des solutions qui peuvent vous aider à mettre en œuvre ces politiques.

Test de segment et signature de la décharge

Si le code est signé pendant les phases de développement et de test, les certificats doivent être distincts de ceux utilisés pour la signature du code de production. Veillez à ce que les clés de développement ne soient pas liées à la même racine de confiance que les clés utilisées pour signer le code de production.

Suivi des activités de signature

Les responsables du développement ou de la publication doivent suivre chaque utilisation de clés privées pour signer du code. Cela vous permettra de vous assurer que seuls les bons développeurs signent le bon code, avec les bonnes clés.

03 | Intégrer avec DevOps

Ce n'est pas porter atteinte aux développeurs que de dire que la sécurité n'est pas leur priorité absolue. Pour rester en tête de la courbe numérique, les équipes de développement doivent agir rapidement pour écrire le code et le mettre en production. Toutefois, les équipes chargées de la sécurité exercent une pression de plus en plus forte sur les développeurs pour qu'ils satisfassent à des exigences qui encombrent souvent le processus de création et de publication.

illustration d'un code sur un écran d'ordinateur

La responsabilité de sécuriser les clés de signature de code ne devrait pas incomber aux développeurs - ils ont simplement besoin d'un accès pour soumettre et signer du code rapidement. Il s'agit de trouver le bon équilibre entre les exigences de sécurité informatique, qui consistent à verrouiller les clés privées, et les besoins des développeurs, qui doivent pouvoir signer n'importe quel code, de n'importe où, sans interruption.

Formaliser le processus de signature du code

Documenter, suivre et respecter rigoureusement les étapes nécessaires à la signature du code dans le cadre de votre cycle de développement (SDLC) software . Définir les contrôles et vérifications (c'est-à-dire l'assurance qualité, les tests d'intrusion, les analyses de virus, l'analyse statique, etc.

Couvrir les équipes de développement distribuées

La possibilité de signer à distance est essentielle pour les équipes de développement distribuées d'aujourd'hui. Choisissez une solution qui permet aux développeurs de signer le code de n'importe où, sans que les clés ne quittent jamais les limites sécurisées de la protection hardware .

Minimiser les changements dans le SDLC

Adopter une approche collaborative pour s'assurer que les équipes de sécurité et de développement atteignent des objectifs mutuels de protection des clés sans perturber le cycle de développement durable. Il est important de trouver des solutions qui s'adaptent à vos processus, et non l'inverse.

Intégration avec les outils et plateformes de signature

Intégrer directement les processus de signature de code dans les outils et flux de travail existants dans la mesure du possible. La signature de code devrait prendre en charge plusieurs formats de fichiers de code, plates-formes (Microsoft Authenticode, Java, etc.) et autorités de certification (AC).

04 | Contrôle et vérification de la conformité

La mise en œuvre de la sécurité est une chose, mais le respect par les développeurs de vos politiques et meilleures pratiques en matière de signature de code en est une autre. La sécurité de la signature du code est un processus continu, et non un déploiement que l'on met en place et que l'on oublie. Les certificats expirent inévitablement, les clés et les algorithmes s'affaiblissent avec le temps et les menaces continuent d'évoluer. Les équipes de sécurité doivent être en mesure d'identifier rapidement ces risques et d'y répondre efficacement.

Contrôler les opérations de signature de code

En surveillant les demandes de signature de code, les autorisations et les signatures en temps réel, les équipes de sécurité peuvent détecter plus efficacement les activités anormales et réagir en quelques minutes, plutôt qu'en plusieurs mois.

illustration d'hommes utilisant des interfaces graphiques

Enregistrement et audit de l'utilisation des clés

Conservez un journal d'audit complet indiquant qui a utilisé les clés de signature de code, quand et qui a autorisé l'action. Examinez régulièrement les journaux pour détecter toute activité suspecte et assurez-vous que ces journaux ne peuvent pas être falsifiés.

Inclure les certificats de signature de code dans les CLM

Tous les certificats numériques de votre organisation doivent être régis par la gestion du cycle de vie des certificats (CLM), y compris les certificats à validation étendue et les certificats de signature de code standard - avec des dispositions sur la manière dont ils sont demandés, émis, renouvelés ou révoqués.

Signature du code d'entreprise avec Keyfactor

Keyfactor Code Assure est la seule plateforme qui vous offre une visibilité, un contrôle et une protection complets des opérations de signature de code, sans perturber les flux de travail de construction et de publication existants. Les certificats et les clés de signature de code sont stockés de manière centralisée dans un HSM inviolable. Une fois à l'intérieur, les clés privées ne quittent jamais le HSM. Des API robustes permettent aux développeurs, où qu'ils se trouvent, d'accéder rapidement et de manière contrôlée à la signature de code, tandis que les équipes de sécurité conservent une piste d'audit complète des activités de signature de code.

Signature de code pour l'entreprise

Découvrez comment la plateforme Keyfactor peut moderniser votre site PKI, prévenir les pannes de certificat, accélérer la mise en œuvre des mesures de sécurité.