
Qu'est-ce que la signature de code ? La feuille de route définitive pour la signature de code sécurisée
Définition
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ûre.
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.
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 software 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.

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.

Signalé : 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.
Signalé : 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.
Signalé : 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.
Signalé : 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.
Signalé : 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.
Signalé : 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.
Découvrez la plateforme Keyfactor en action et apprenez à trouver, contrôler et automatiser toutes les identités machine.

La feuille de route pour une signature sécurisée du code
Assez de théorie. Passons aux quatre mesures concrètes que votre organisation peut prendre pour surmonter ces défis et à la solution adéquate 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.

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.

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.

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.

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 Signum 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 mise en production 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.

Sécurisez vos appareils. Contrôlez votre avenir.
Demandez une démonstration en direct avec un expert pour découvrir comment Keyfactor aider votre organisation à instaurer la confiance numérique et la crypto-agilité.