Crédit :Pixabay/CC0 Domaine public
Le noyau d'un système d'exploitation agit comme traducteur entre l'utilisateur et la machine. Pour améliorer la fiabilité d'un noyau, les développeurs peuvent isoler les pilotes de périphérique du système d'exploitation et empêcher qu'une défaillance d'un composant n'affecte d'autres composants. L'isolement, cependant, nécessite des efforts humains peu pratiques.
Une équipe de chercheurs, dirigée par G. Gary Tan et Trent Jaeger, professeurs d'informatique et d'ingénierie à Penn State, a entrepris de développer un cadre qui pourrait automatiser et réduire la quantité de travail manuel nécessaire pour l'isolation du pilote de périphérique en présence de modèles de noyau difficiles.
Les chercheurs ont présenté leur cadre lors du 16e Symposium USENIX sur la conception et la mise en œuvre des systèmes d'exploitation (OSDI '22), qui s'est déroulé du 11 au 13 juillet à Carlsbad, en Californie. OSDI est une conférence de premier plan dans la recherche sur les systèmes d'exploitation et rassemble des professionnels issus de milieux universitaires et industriels pour discuter de la conception, de la mise en œuvre et des implications des logiciels système, selon son site Web.
Le noyau du système d'exploitation contrôle et coordonne tout le matériel et les logiciels de l'ordinateur. Les pilotes de périphériques permettent au noyau d'interagir avec le matériel sans connaître les détails du composant. Par exemple, lorsqu'un utilisateur demande à son ordinateur d'imprimer un document, le noyau invoque certaines fonctions d'interface fournies par un pilote d'imprimante, qui traite les données et envoie le travail à l'imprimante.
Selon Tan, pour isoler efficacement les pilotes de périphériques et maintenir la communication noyau-pilote, les développeurs devaient inspecter la grande et complexe interface de communication entre un pilote et le noyau et décider quelles données devaient être synchronisées en examinant toutes les interactions entre le pilote et le noyau. Ils devaient également gérer des modèles de synchronisation difficiles tels que la simultanéité des données, l'écriture de milliers de lignes de code pour assurer la fluidité des opérations.
"L'isolation est une technique efficace pour améliorer la fiabilité des systèmes logiciels, tels que le noyau, mais s'appuyer sur l'effort humain pour isoler les pilotes n'est pas réaliste, nous avons donc décidé de développer un cadre pour automatiser le processus", a déclaré Tan. "Avec l'isolement, la défaillance d'un composant est limitée à son propre domaine ; les bogues d'un composant ne peuvent pas affecter directement le reste du système. Cela améliore considérablement la fiabilité."
Ils ont développé KSplit, une approche qui peut à la fois analyser automatiquement l'état partagé du noyau du pilote et calculer tous les besoins de synchronisation uniquement pour cet état partagé. Le programme identifie également les domaines nécessitant une intervention manuelle, réduisant la charge de travail manuelle à un minimum de codage et de regroupement des données.
"Avant KSplit, le processus était laborieux et sujet aux erreurs", a déclaré Tan. "Avec KSplit, la plupart de ces tâches d'isolation compliquées sont gérées automatiquement."
Les chercheurs ont évalué la solution avec 354 pilotes de périphériques sur neuf sous-systèmes dans un noyau Linux. Pour un pilote complexe, KSplit a nécessité des mises à jour manuelles de 53 des 2 476 lignes de code, qui étaient des spécifications d'interface générées automatiquement, et 19 modifications supplémentaires du code du pilote. C'est moins de 3% du travail manuel requis sans KSplit.
"L'analyse KSplit des 354 pilotes montre qu'une fraction similaire de travail manuel est attendue, démontrant que KSplit est un outil pratique pour automatiser les tâches clés afin de permettre l'isolation des pilotes", a déclaré Jaeger. "Cependant, le framework se concentre principalement sur l'amélioration de la fiabilité du système. Nous prévoyons d'étendre KSplit pour durcir l'interface entre le noyau et un pilote, avec une garantie de sécurité pour le noyau même en présence d'un pilote malveillant."
Selon Jaeger, l'ensemble des analyses statiques fournies par KSplit, telles que le calcul des données nécessaires entre les différentes parties du système, peut être étendu aux logiciels qui nécessitent une analyse précise des informations d'accès aux données, soulignant le potentiel de protection contre les failles de sécurité intentionnelles ou d'autres attaques. . Approximation d'un noyau de vérité