web-dev-qa-db-fra.com

Une signature numérique aurait-elle empêché le compromis CCleaner?

J'ai lu aujourd'hui sur le hack CCleaner et comment le code a été injecté dans leur binaire. Les gens ont pu télécharger et installer le logiciel compromis avant que l'entreprise ne s'en aperçoive.

N'est-ce pas à cela que servent les signatures numériques? Est-ce que signer le binaire ou fournir une somme de contrôle aurait fait quelque chose pour empêcher cela?

Pour ajouter à la confusion, dans cet article de presse Reuters un chercheur prétend qu'il avait une signature numérique:

"Il n'y a rien qu'un utilisateur aurait pu remarquer", a déclaré Williams, notant que le logiciel d'optimisation avait un certificat numérique approprié, ce qui signifie que d'autres ordinateurs font automatiquement confiance au programme.

Comment le système d'exploitation pourrait-il accepter d'installer un logiciel avec une signature non valide? Ou un attaquant peut-il changer le binaire et forger la signature?

60
user47894

Sur la base des détails incomplets qui ont été publiés jusqu'à présent, le code malveillant a été inséré avant la compilation et la signature (par exemple sur la machine d'un développeur ou sur un serveur de build). En conséquence, la version compromise a été signée par exactement les mêmes processus que ceux utilisés par la version sans compromis. La faille a été introduite avant la signature du binaire a eu lieu.

De même, une somme de contrôle aurait été calculée sur la base des résultats de la compilation, date à laquelle le code malveillant était déjà présent.

C'est un point faible dans toutes les architectures de signature - si le processus avant la signature est compromis, il n'y a aucun moyen réel de le détecter. Cela ne signifie pas qu'ils ne sont pas utiles - si les attaquants n'avaient pas accès aux systèmes jusqu'à ce que la signature ait été appliquée, la falsification aurait été détectée facilement, car la signature n'aurait pas correspondu.

94
Matthew

Être signé par un certificat de confiance et avoir un hachage/somme de contrôle public du code sont des choses différentes.

Le certificat vous (devrait) vous dire que le logiciel provient d'une source fiable, mais c'est tout.

Un hachage ou une somme de contrôle vous permettra de vérifier que le binaire correspond au hachage calculé à l'origine. Dans ce cas, cependant, le hachage a été calculé alors que le code malveillant était présent dans le code source, ce qui rend cette sauvegarde particulière à moins que, le cas échéant, il ajoute un faux sentiment de sécurité.

Lorsque vous proposez un hachage public ou une somme de contrôle (en supposant que le code source n'a pas été compromis), vous devez prendre des mesures pour que ce hachage soit servi à partir d'un domaine tiers. Imaginez une situation où un attaquant compromet votre site, échange un véritable binaire contre un malveillant, puis modifie le hachage public que vous affichez sur votre site. Au moins s'il est servi par un tiers, l'attaquant devra également compromettre ce tiers pour changer le hachage.

N'oubliez pas que cette attaque particulière était apparemment la conséquence d'une machine de développeur piratée, donc aucun de ces contrôles de hachage/somme de contrôle ou de signature de code n'aurait été de toute façon utile.

4
Trickycm