Greg Kroah-Hartman, responsable du soutien de la branche stable du noyau Linux, a décidé d'interdire toute modification provenant de l'Université du Minnesota au noyau Linux, ainsi que de revenir sur tous les patchs acceptés précédemment et de les réexaminer. La raison de ce blocage réside dans l'activité d'un groupe de recherche étudiant la possibilité de promouvoir des vulnérabilités cachées dans le code de projets open source. Ce groupe a envoyé des patchs contenant divers types d'erreurs, a observé la réaction de la communauté et a étudié les moyens de tromper le processus de révision des modifications. Selon Greg, la réalisation de telles expériences pour introduire des changements malveillants est inacceptable et contraire à l'éthique.
Le blocage a été déclenché par l'envoi d'un patch par les membres de ce groupe, lequel ajoutait une vérification du pointeur pour éviter un éventuel double appel de la fonction «free». Étant donné le contexte d'utilisation du pointeur, la vérification était dénuée de sens. L'objectif de l'envoi de ce patch était d'examiner si le changement erroné passerait la révision des développeurs du noyau. En plus de ce patch, d'autres tentatives de développeurs de l'Université du Minnesota d'apporter des modifications douteuses au noyau sont également apparues, notamment liées à l'ajout de vulnérabilités cachées.
L'expéditeur des patchs a tenté de justifier son action en disant qu'il testait un nouvel analyseur statique et que le changement était basé sur les résultats de cette vérification. Cependant, Greg a souligné que les corrections proposées ne sont pas caractéristiques des erreurs détectées par les analyseurs statiques, et tous les patchs envoyés ne corrigeaient absolument rien. Étant donné que le groupe de chercheurs en question avait déjà essayé par le passé de promouvoir des corrections avec des vulnérabilités cachées, il est évident qu'ils ont poursuivi leurs expériences sur la communauté des développeurs du noyau.
Il est intéressant de noter qu'auparavant, le responsable du groupe menant les expériences avait participé à la correction légitime de vulnérabilités, par exemple, en révélant des fuites d'informations dans la pile USB (CVE-2016-4482) et dans le sous-système réseau (CVE-2016-4485). Dans l'étude sur la promotion cachée des vulnérabilités, le groupe de l'Université du Minnesota cite l'exemple de la vulnérabilité CVE-2019-12819, provoquée par un correctif accepté dans le noyau en 2014. Ce correctif ajoutait un appel put_device dans le bloc de gestion des erreurs de mdio_bus, mais après cinq ans, il est apparu qu'une telle manipulation conduisait à accéder à un bloc de mémoire après sa libération (« use-after-free »).
Les auteurs de l'étude affirment qu'ils ont généralisé des données sur 138 correctifs erronés, non liés aux participants de l'étude. Les tentatives d'envoi de leurs propres correctifs comportant des erreurs se limitaient à des échanges par email, et de tels changements n'ont pas été intégrés dans Git (si, après l'envoi d'un correctif par email, le mainteneur considérait le correctif comme normal, il était prié de ne pas inclure le changement en raison d'une erreur, après quoi un correctif correct était renvoyé).
Addendum 1 : À en juger par l'activité de l'auteur du correctif critiqué, il envoie des correctifs dans divers sous-systèmes du noyau depuis longtemps. Par exemple, des modifications ont récemment été acceptées dans les pilotes radeon et nouveau, avec l'appel pm_runtime_put_autosuspend(dev->dev) dans le bloc d'erreur, il n'est pas exclu que cela conduise à l'utilisation d'un tampon après la libération de la mémoire qui lui est associée.
Addendum 2 : Greg a annulé 190 commits liés aux adresses « @umn.edu » et a initié leur réexamen. Le problème est que les participants ayant des adresses « @umn.edu » n'ont pas seulement expérimenté la promotion de correctifs douteux, mais ont également corrigé de réelles vulnérabilités, et le retour en arrière des changements pourrait entraîner le rétablissement de problèmes de sécurité précédemment corrigés. Certains mainteneurs ont déjà revérifié les changements annulés et n'ont trouvé aucun problème, mais l'un des mainteneurs a signalé que dans l'un des correctifs qui lui avaient été envoyés, il y avait des erreurs.
Source : opennet.ru
