Dans les coulisses de KernelCare : comment nous testons les correctifs avant leur publication
Les tests sont essentiels pour toute mise à jour logicielle, y compris les correctifs, mais ils le sont encore plus lorsque des modifications sont apportées à une infrastructure critique qui alimente des services ayant une incidence sur les revenus. La publication de mises à jour de sécurité qui n'ont pas été testées de manière approfondie peut entraîner des plantages du noyau, des redémarrages du système d'exploitation, des défaillances du système ou du niveau de service - certaines de ces séquelles sont critiques et d'autres simplement désagréables, mais toutes peuvent nuire à votre activité et aux accords de niveau de service. KernelCare a mis en place un processus de test strict auquel chaque correctif doit se soumettre avant d'être déployé en production. Cet article explique comment nous assurons la fiabilité et la disponibilité de l'infrastructure de nos clients après le déploiement des correctifs.
Contenu :
- Les retards de mise à jour sont risqués
- Développement et test de KernelCare
- Les quatre types de tests de KernelCare
- Conclusion
Les retards de mise à jour sont risqués
Il est essentiel que tous les logiciels, y compris le noyau Linux, soient corrigés lorsque les développeurs publient une mise à jour de sécurité. Il est encore plus important de le faire dès que possible lorsqu'une vulnérabilité est publiée avec un code d'exploitation. Plus vous laissez les serveurs sans correctif, plus vous risquez d'être la prochaine grande victime d'une violation de données. Il n'est pas rare que les administrateurs effectuent des tests et attendent une date prévue avant d'appliquer les correctifs. Dans ce laps de temps, un attaquant peut analyser le serveur, trouver la vulnérabilité et l'exploiter.
En confiant la gestion des correctifs à KernelCare, nous allégeons une grande partie de la charge de travail des administrateurs, mais nos clients ont besoin d'être rassurés sur le fait que des tests appropriés sont effectués avant d'autoriser un tiers à déployer des infrastructures critiques. Les solutions de correctifs de KernelCare sont soumises à des tests rigoureux avant d'être déployées sur les serveurs de nos clients. Nos tests permettent d'alléger la charge administrative des grandes entreprises, de sorte que vous n'avez plus besoin de plusieurs machines sur lesquelles sont installés les systèmes d'exploitation des différents fournisseurs pour garantir une expérience de correction propre et sans bogue.
Développement et test de KernelCare
Un code bogué peut causer plusieurs problèmes, notamment l'introduction de nouvelles vulnérabilités. Un exemple de l'importance de tester les correctifs avant leur déploiement est la découverte d'une vulnérabilité trivialement exploitable introduite en mai 2020. Le patch nommé Huawei Kernel Self Protection était censé offrir une série d'options de renforcement de la sécurité pour le noyau Linux. Au lieu de cela, il a ouvert le système d'exploitation à de possibles portes dérobées, n'a offert aucune programmation de niveau de menace et a permis la divulgation de la mémoire du noyau. Comme le correctif a été testé, l'équipe Linux a pu l'empêcher d'affaiblir la sécurité du noyau. Ceci est un exemple de la raison pour laquelle il est essentiel de tester les correctifs avant de les installer, et KernelCare effectue un certain nombre de types de tests avant le déploiement sur nos serveurs clients.
Pour aider nos clients à comprendre les tests de haut niveau que nous exigeons de nos équipes, nous avons détaillé le processus ci-dessous.
- Nous provisionnons un serveur physique bare-metal ou une machine virtuelle avec le système d'exploitation cible. Si le correctif pour un CVE (Common Vulnerability Exposures) spécifique concerne un composant matériel spécifique (par exemple, une vulnérabilité du CPU), nous provisionnons le composant matériel correspondant sur le serveur. Pour une machine virtuelle basée sur le noyau (KVM), nous provisionnons les machines virtuelles imbriquées et les caractéristiques matérielles nécessaires.
- Nous récupérons le noyau qui sera utilisé pour les tests auprès du fournisseur et l'installons sur notre serveur de test provisionné.
- Redémarrez le serveur avec le nouveau noyau installé.
- Nous installons KernelCare de la même manière qu'un client le ferait. Nous publions les instructions ici.
- Exécutez la commande de correction de KernelCare ($ /usr/bin/kcarectl -update).
- Charger les modules du noyau créés pour le patch.
- Valider et tester toutes les fonctionnalités modifiées pour le module.
- Si un code d'exploitation est disponible, nous utilisons ce code pour le reproduire sur le serveur et vérifier que les correctifs corrigent la vulnérabilité.
- Exécutez nos quatre tests (voir ci-dessous).
- Si les correctifs réussissent nos tests, nous les déployons en production.
- Si les tests échouent, nous analysons les journaux pour trouver la cause de l'échec, remédier au problème, puis répéter ces étapes jusqu'à ce que les patchs réussissent nos tests.
Les quatre types de tests de KernelCare
Des tests approfondis sont essentiels pour des déploiements réussis, et nous savons que les bogues ont un impact sur nos clients. Nous avons quatre tests qui s'exécutent simultanément pour chaque noyau afin de garantir que les correctifs ne causent pas de problèmes critiques.
Avant qu'un correctif ne soit déployé, il passe par les tests automatisés suivants, en fonction de la rapidité avec laquelle nous avons besoin de ces correctifs en production et du niveau de criticité de la vulnérabilité :
- Nous appliquons nos correctifs au noyau en cours d'exécution, puis nous le dépatchons pour tester les retours en arrière. Ce processus prend environ 10 minutes par noyau.
- Nous appliquons nos correctifs, puis nous effectuons un sous-ensemble de tests de la suite de tests du Linux Test Project (LTP) qui ajoute une certaine charge au système d'exploitation. Ce test prend environ 15 minutes par noyau.
- La même chose que pour 2. mais avec l'ensemble complet des tests LTP. Ce test est un processus complet de 4 heures par noyau qui comprend :
- Test de résistance du système de fichiers
- Test d'E/S de stockage
- Test de stress sur la gestion de la mémoire
- Test de stress IPC
- Test du planificateur
- Commande les tests de vérification fonctionnelle
- Tests de vérification fonctionnelle des appels de système
- etc.
- LTP supplémentaire. Ce test est un test à forte charge avec des correctifs et des déprogrammations en continu tout au long du test. Ce test prend 4 heures par noyau.
Conclusion
Afin de fournir à nos clients un service de correctifs stable et fiable - celui sur lequel vous pouvez compter et dont vous pouvez même oublier l'existence sur vos serveurs - nous testons chaque correctif sur chaque noyau affecté pendant au moins 4 heures par noyau et ne diffusons les correctifs que lorsque nous sommes sûrs à 100% qu'ils ne perturberont pas vos opérations. Avec KernelCareles administrateurs peuvent non seulement appliquer des correctifs à leurs systèmes sans avoir à les redémarrer, mais ils savent également que ces correctifs sont testés de manière approfondie avant d'être installés.
