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.