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

La signature de code est un outil précieux - si elle est sécurisée

Signature du code

Cet article a été initialement publié par Security Magazine.

Aujourd'hui, presque tout repose sur le code. Software imprègne pratiquement tous les aspects de notre vie, depuis les produits et les machines que nous utilisons chaque jour jusqu'à l'infrastructure critique qui soutient la société dans son ensemble. Il est difficile d'imaginer une entreprise, une agence gouvernementale, une autre entité ou un appareil qui ne dépende pas de software d'une manière ou d'une autre.

Il fut un temps où les utilisateurs finaux pouvaient faire confiance au site software qu'ils téléchargeaient. Malheureusement, ce n'est plus le cas. Alors que les pirates et autres cybercriminels deviennent de plus en plus habiles dans l'art de diffuser des logiciels malveillants, même les professionnels des technologies de l'information (TI) ont du mal à savoir si le produit software qu'ils ont acheté est légitime. Sans parler des mises à jour automatiques de software sur les ordinateurs portables, les téléphones mobiles et les appareils de l'Internet des objets (IoT).

Grâce à l'adoption d'outils d'intégration et de livraison continues (CI/CD) et d'automatisation de la construction et des tests, les équipes chargées des applications et des opérations se déplacent plus rapidement que jamais, ce qui signifie qu'il y a moins d'yeux humains ayant une ligne de vue directe sur ce qui se passe tout au long du pipeline. Les acteurs malveillants l'ont bien compris et cherchent des faiblesses dans ces environnements rapides et complexes, en injectant ou en modifiant des codes malveillants à pratiquement n'importe quel point de la chaîne d'approvisionnement software . Il peut s'agir de tout ce qui entre dans le code ou l'affecte depuis le développement, en passant par le pipeline CI/CD d'une organisation, jusqu'à ce qu'il soit déployé en production (c'est-à-dire dans les dépendances software , dans le référentiel de code source d'une organisation ou en compromettant les serveurs de construction).

C'est là qu'intervient la signature de code.

Authenticité, intégrité et confiance : L'importance de la signature de code en matière de sécurité

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. Elle protège contre la modification du code et crée une chaîne de confiance. Tout comme un certificat SSL sert de forme d'authentification pour identifier un site web, un certificat de signature de code est une classe spéciale de certificat numérique utilisé par les développeurs pour signer des applications et software.

Un certificat de signature de code permet à tout destinataire du site software de vérifier sa légitimité en confirmant des informations telles que le nom de l'entreprise qui a développé le site software - un peu comme un permis de conduire dans le monde numérique.

Une fois que le site software est signé par un certificat de signature de code, cela signifie que toute version du site software portant cette signature valide n'a pas été modifiée par un tiers. Il est très important de confirmer qu'un ensemble de travaux n'a pas été modifié en cours de route, car toute modification du code software pourrait indiquer la présence d'une activité malveillante. Le code signé signifie que ce que les utilisateurs finaux voient et expérimentent est exactement ce que le créateur software a voulu.

Prévenir la compromission du code

La confiance et l'intégrité de la signature de code dépendent entièrement de la sécurité des clés de signature d'une organisation. Dans le contexte actuel de menaces, les clés privées liées aux certificats de signature de code constituent l'un des plus gros vols qu'un pirate puisse faire, car en mettant la main sur cette partie du certificat de signature de code, il peut créer un nouveau site software qui semble être légitime et provenir d'une source réputée.

Une seule faille dans cette chaîne de confiance peut entraîner de graves dommages pour une entreprise. Le processus de révocation et de réémission rapide des certificats, la notification des utilisateurs concernés et la diffusion d'une nouvelle mise à jour signée sont coûteux. Sans compter que le rétablissement de la confiance avec les utilisateurs, les partenaires commerciaux et les investisseurs peut être un processus long et ardu.

Outre le vol de clés, d'autres vulnérabilités courantes sont les violations de la signature et l'utilisation abusive interne. Les pirates peuvent faire signer un code malveillant même sans voler les clés privées appropriées s'ils parviennent à s'introduire dans un poste de travail de développeur qui a un accès libre aux clés de signature du code. Dans ce cas, il leur suffit de soumettre leur site software à la signature et à la diffusion. En outre, si un développeur a un accès libre à la clé de signature de code correspondante et qu'il l'utilise ou l'égare accidentellement, il peut créer une ouverture permettant aux pirates de s'infiltrer dans les opérations.

Une fois que les équipes de sécurité ont identifié et compris ces vulnérabilités, elles peuvent prendre un certain nombre de mesures pour s'en protéger, créant ainsi une plus grande confiance dans la chaîne d'approvisionnement software .

1. Équilibrer l'accès des développeurs

Le défi le plus courant auquel les organisations sont confrontées est de mettre en œuvre la signature de code d'une manière qui réponde efficacement aux besoins des développeurs et des équipes de sécurité informatique. Un accès trop large pour les développeurs peut rendre le processus vulnérable aux attaques. En revanche, un accès trop limité crée des frictions dans le processus de développement, et les équipes sont susceptibles de contourner les politiques de sécurité. Pour trouver le bon équilibre, il faut assurer une protection complète des clés de signature de code privées, de manière à ce qu'elles restent dans un endroit sûr et que seuls des utilisateurs restreints puissent y accéder.

2. Accroître la visibilité et le contrôle pour les équipes de sécurité

Souvent, les équipes de sécurité manquent de visibilité et de contrôle sur les processus de signature. Le déploiement d'une technologie capable de centraliser la visibilité et le contrôle afin de permettre aux équipes de sécurité de tout auditer peut contribuer grandement à relever ce défi. La mise en place d'une technologie adéquate peut aider les équipes de sécurité à suivre et à surveiller les activités de signature de code, à créer un journal d'audit pour les certificats de signature de code et les tentatives de signature, ainsi qu'à centraliser et à normaliser les politiques relatives aux personnes autorisées à signer le code.

3. Intégrer les activités de signature de code dans les processus de développement

La meilleure façon de s'assurer que les développeurs ne contournent pas les politiques de sécurité ou ne les exposent pas accidentellement à des risques est d'intégrer les activités de signature de code dans leurs processus DevOps existants. Cela devrait inclure l'intégration de tout outil de signature avec les outils DevOps, l'activation des capacités de signature à distance pour les équipes distribuées, et l'introduction de contrôles et de vérifications qui doivent avoir lieu avant que toute signature de code n'ait lieu.

4. Évaluer en permanence les activités de signature de code

La signature de code est un processus continu. Les certificats expirent à un moment donné, les clés et les algorithmes peuvent s'affaiblir avec le temps et les menaces évoluent. Le fait de surveiller de près toutes les activités de signature de code, d'auditer l'utilisation des clés et de couvrir les certificats de signature de code dans le cadre d'activités plus larges de gestion des certificats ( PKI ) aidera non seulement les équipes de sécurité à détecter les menaces plus tôt, mais garantira également que tous les contrôles mis en place pour protéger un certificat de signature de code sont correctement maintenus au fil du temps.

Dans notre monde software, la confiance est essentielle. S'assurer que les équipes de sécurité et de développement d'une organisation travaillent ensemble pour protéger les certificats et les clés numériques utilisés pour la signature de code est essentiel pour garantir que leur site software reste sûr et fiable - ce qui fait de la signature de code un élément essentiel d'une chaîne d'approvisionnement sécurisée software .