NixOS propose une méthode de protection contre les substitutions de backdoors, comme dans XZ.

Pour inclure dans le dépÎt de paquets nixpkgs, utilisé dans la distribution NixOS, un mode de compilations reproductibles a été proposé, permettant d'identifier les cas d'injection de backdoors dans le code, rappelant l'incident avec le projet XZ. La méthode de protection présentée permet de détecter des modifications dans les archives du code source de la version, absentes dans les dépÎts de code.

L'essence de la mĂ©thode est que le code source de la nouvelle version de l'application est compilĂ© deux fois : la premiĂšre fois Ă  partir du code tĂ©lĂ©chargĂ© depuis le dĂ©pĂŽt git, et la seconde fois Ă  partir du code distribuĂ© dans des archives prĂȘtes. Si les fichiers binaires rĂ©sultants des compilations diffĂšrent, cela suscite des soupçons quant Ă  la prĂ©sence de modifications cachĂ©es dans le dĂ©pĂŽt ou dans le fichier archive contenant le code.

Rappelons qu'en ce qui concerne le projet XZ, le dĂ©pĂŽt de code ne contenait pas de modifications suspectes. Les composants malveillants formant le backdoor Ă©taient fournis dans les fichiers utilisĂ©s dans le jeu de tests pour vĂ©rifier le bon fonctionnement du dĂ©compresseur XZ. Le backdoor s'activait au niveau du systĂšme de compilation, tandis que le code source de XZ correspondait Ă  celui du dĂ©pĂŽt. Les macros m4 activant le backdoor pour l'outil Automake Ă©taient incluses uniquement dans l'archive prĂȘte contenant le code et absentes du dĂ©pĂŽt.

Le backdoor dans XZ a Ă©tĂ© intĂ©grĂ© par un attaquant qui a rĂ©ussi Ă  obtenir le statut de mainteneur dans le projet. L'insertion du backdoor n'a pas Ă©tĂ© remarquĂ©e immĂ©diatement, car les distributions construisent principalement des paquets en chargeant le code Ă  partir d'archives prĂȘtes, puisque lors du tĂ©lĂ©chargement de code pour la compilation, on peut se contenter d'un seul hachage pour vĂ©rifier l'intĂ©gritĂ© du fichier d'archive et utiliser des miroirs. L'accent lors de la vĂ©rification du code est mis sur l'analyse du contenu du dĂ©pĂŽt, donc les diffĂ©rences non Ă©videntes dans les archives ne peuvent pas toujours ĂȘtre identifiĂ©es immĂ©diatement.

Pour simplifier la vĂ©rification de la correspondance des fichiers d'archives et des instantanĂ©s du rĂ©fĂ©rentiel correspondant aux versions, certains projets open source, comme PostgreSQL, ont introduit un systĂšme de gĂ©nĂ©ration d'archives rĂ©pĂ©tables. Dans ce cas, un outil est fourni, permettant de crĂ©er soi-mĂȘme une archive Ă  partir du code, correspondant exactement Ă  l'archive prĂȘte Ă  ĂȘtre tĂ©lĂ©chargĂ©e. Si l'archive créée indĂ©pendamment et l'archive fournie par le projet principal diffĂšrent, cela signifie qu'il y a eu compromission du rĂ©fĂ©rentiel ou de l'archive de rĂ©fĂ©rence.

Le problÚme est que cette méthode n'est pratiquée que dans certains cas, tandis que de nombreux projets continuent d'inclure dans les archives des artefacts supplémentaires absents du référentiel principal, tels que des pages man, de la documentation, des exemples, des scripts de création de paquets pour les distributions et des fichiers de compilation supplémentaires. Cela est principalement dû à des raisons historiques et aux caractéristiques des processus de création des versions. Une simple vérification de la conformité entre le contenu du référentiel et l'archive n'est donc pas adéquate.

Comme solution, il est proposé de rassembler les fichiers binaires des versions, tant à partir du référentiel (par exemple, on peut utiliser l'archive générée automatiquement sur GitHub pour le tag de version) que de l'archive préparée par le responsable, puis de comparer les résultats. Pour l'instant, cette vérification n'est proposée qu'à titre d'expérimentation pour le paquet « xz ». Si l'expérience est concluante, ce type de vérification sera envisagé pour d'autres paquets dans nixpkgs.

Source : opennet.ru

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster