D'un traducteur: je suis tombé sur TheUpdateFramework lors de la recherche de bibliothèques qui implémentent des mises à jour logicielles automatiques sur le bureau. D'une part, la description des aspects de sécurité des systèmes de mise à jour logicielle présentée ci-dessous était intéressante et détaillée pour moi; de l'autre - bien sûr, en plus de la recherche universitaire, bien que sous l'aile de LinuxFoundation, vous pouvez trouver de nombreuses solutions appropriées. Vous pouvez suggérer des options dans les commentaires.

La sécurité
Nous pouvons considérer un système de mise à jour logicielle comme «sûr» si:
- elle s'informera des dernières mises à jour disponibles en temps opportun
- tous les fichiers téléchargés par le système de mise à jour sont corrects, et
- aucune conséquence néfaste de la vérification ou du téléchargement de fichiers.
Pour y parvenir, des stratégies de prévention réalisables sont nécessaires contre de nombreuses attaques potentielles.
Attaques et faiblesses
Voici quelques-unes des attaques connues contre les systèmes de mise à jour logicielle, y compris les faiblesses qui rendent ces attaques possibles. Pour concevoir un cadre de mise à jour logicielle sécurisé, vous devez comprendre ces attaques et développer des stratégies de protection. Certaines de ces lacunes peuvent être liées les unes aux autres, selon l'architecture et la mise en œuvre d'un système de mise à jour logicielle particulier.
- Installez un logiciel personnalisé . Un attaquant peut substituer des fichiers arbitraires en réponse aux demandes de téléchargement et installer tout ce qu'il veut dans le système client, même sans déterminer l'illégalité de telles actions.
- Mises à jour de l'attaque . L'attaquant fournit au système de mise à jour logicielle des fichiers d'une version antérieure à celle actuellement installée sur le client. L'utilisateur installe une version qui peut contenir des vulnérabilités, sans pouvoir découvrir que cette version est obsolète. Plus tard, des vulnérabilités peuvent être exploitées par un attaquant.
- Rembobinez les attaques . L'attaquant augmente arbitrairement le numéro de version, ce qui le rend beaucoup plus élevé que la valeur actuelle, trompant ainsi le système de mise à jour logicielle et le forçant à croire que toute mise à jour successive tente en fait de restaurer la version logicielle vers une version antérieure obsolète. Dans certaines situations, par exemple, s'il existe le numéro de version maximum possible, le criminel peut utiliser ce maximum afin que le système de mise à jour ne puisse jamais installer une nouvelle mise à jour.
- Attaques de gel illimité . L'attaquant continue de renvoyer des fichiers que le client a déjà vus au système de mise à jour logicielle. En conséquence, le client reste dans l'ignorance des nouvelles versions de logiciel.
- Attaques de données sans fin . En réponse à une demande de téléchargement, l'attaquant renvoie un flux de données sans fin, causant directement des dommages au client (par exemple, le remplissage d'un disque ou d'une RAM).
- Attaque une réponse lente . L'attaquant répond aux clients avec un flux de données très lent, ce qui conduit finalement au fait que le client ne peut pas terminer le processus de mise à jour.
- Attaques de dépendances excessives . L'attaquant informe le client que l'installation du logiciel requis nécessite également l'installation de logiciels tiers ( hi, mail.ru - approx. Per. ). Ce logiciel tiers peut provenir d'une source fiable, mais présente néanmoins des vulnérabilités connues qu'un attaquant pourrait exploiter.
- Attaques mixtes combinées . L'attaquant renvoie au client un instantané du référentiel qui contient des fichiers qui n'ont jamais existé en même temps dans la même révision. Cela peut entraîner l'installation de versions obsolètes des dépendances et d'autres conséquences plus complexes.
- Installation d'autres logiciels . L'attaquant renvoie un fichier de confiance au client, ce qui n'est tout simplement pas ce que le client voulait installer.
- Miroirs malveillants qui empêchent les mises à jour . Un attaquant contrôle l'un des miroirs du référentiel et peut l'utiliser pour empêcher les clients de recevoir des mises à jour d'autres miroirs non infectés.
- Vulnérabilités de compromis clés . Un attaquant qui peut compromettre une seule clé du système (ou plusieurs clés, dont le nombre ne dépasse pas un seuil spécifié), peut compromettre les clients. Ces attaques peuvent se produire à la fois dans le cas de l'approbation d'une seule clé en ligne (par exemple, lors de la protection des mises à jour uniquement avec le cryptage SSL) et dans le cas d'une seule clé hors ligne (pour la plupart des systèmes de mise à jour logicielle qui utilisent des clés pour la signature).
Principes de sécurité
Afin de s'assurer que le système est protégé contre toutes les attaques décrites ci-dessus, l'architecture et la mise en œuvre du Framework de mise à jour (TUF) reposent sur plusieurs concepts de base. Des détails sur la façon dont TUF transmet les informations décrites ci-dessus peuvent être trouvés dans la documentation des métadonnées .
Confiance
Faire confiance aux fichiers téléchargés signifie en fait supposer que les fichiers ont été fournis par une partie sans solutions architecturales vulnérables. Les deux aspects souvent insaisissables de la confiance dans un système de mise à jour logicielle sont les suivants:
- La confiance ne doit pas être accordée pour toujours. La confiance doit être révoquée si elle n'est pas mise à jour.
- La confiance ne devrait pas être accordée de manière égale à tous les participants. Ce type d'approbation partagée signifie que vous ne pouvez approuver que les fichiers membres dont la fourniture par ce membre est spécifiée par le rôle racine.
Réduction des risques clés (résistance au compromis)
Les signatures cryptographiques sont un élément essentiel de la sécurité des systèmes de mise à jour logicielle. La sécurité des clés utilisées dans ces signatures affecte directement la sécurité des clients que le système protège. Au lieu de croire naïvement que les clés privées ne peuvent jamais être compromises, les systèmes de mise à jour logicielle sécurisée devraient prévoir comment protéger les clients contre la possibilité de compromettre ces clés. C'est le principe de base de la résistance au compromis.
La sécurisation des clients lorsqu'une clé est compromise comprend:
- Remplacement et rappel rapides et sûrs des clés.
- Confiance minimale dans les clés avec un risque élevé de compromis. Les clés qui sont stockées en ligne ou utilisées dans des systèmes d'automatisation ne devraient pas constituer une menace instantanée pour les clients en cas de compromis.
- Utilisation de plusieurs clés et signatures de seuil / quorum.
Intégrité
La garantie de l'intégrité dans le cadre de mise à jour (TUF) s'applique non seulement aux fichiers individuels, mais également au référentiel dans son ensemble. Il est assez évident que les clients doivent vérifier que les fichiers individuels sont corrects. Déjà pas si évident, mais il est toujours très important pour les clients de s'assurer que l'audit du référentiel dans son ensemble est correct. Par exemple, si une source approuvée fournit deux fichiers, le système de mise à jour logicielle doit voir les dernières versions des deux fichiers (pas un seul), et uniquement les versions de ces deux fichiers qui existent à la fois dans le référentiel.
Pertinence
Étant donné que les mises à jour logicielles corrigent souvent des vulnérabilités, il est important que les systèmes de mise à jour logicielle obtiennent les dernières versions disponibles. Un attaquant peut tenter de forcer le client à installer des versions obsolètes du logiciel, ou simplement convaincre le client qu'il n'y a pas de nouvelles mises à jour.
Assurer la pertinence signifie:
- N'acceptez jamais de fichiers plus anciens que ceux déjà installés.
- Identifiez les problèmes potentiels liés à la réception des mises à jour.
Il convient de noter que si un attaquant répond aux demandes des clients, il n'est pas toujours possible d'effectuer une mise à jour réussie. Cependant, le client doit être en mesure de déterminer la probabilité de mises à jour qu'il ne peut pas recevoir.
Sécurité de mise en œuvre
En plus d'une architecture sécurisée, TUF fonctionne également contre les vulnérabilités de mise en œuvre, y compris les vulnérabilités communes aux systèmes de mise à jour logicielle. Dans certains cas, l'inclusion d'informations supplémentaires dans les métadonnées de mise à jour est utilisée à cet effet. Par exemple, la connaissance de la taille attendue du fichier téléchargé permet à TUF de limiter la quantité de données téléchargées. En conséquence, TUF est protégé contre l'attaque de données infinie discutée ci-dessus.