Média indocile – nouvelle formule

Actuel

Actuel / «Ils ont failli avoir accès à 90% des ordinateurs du monde»


PARTAGER

En avril dernier a été découverte la tentative d’installation d’une «porte dérobée» dans un programme informatique largement utilisé. La plupart des comptes-rendus de cette histoire indiquaient que de telles vulnérabilités sont dues d’une part aux défaillances du monde du développement open-source, et de l’autre à la malveillance de certains Etats. Une telle installation aurait permis l’accès secret à la plupart des dispositifs reliés à internet. Quant au rôle joué par les Etats, il n’est pas vraiment mystérieux. Les explications de Ceki Gülcü, développeur informatique.



Notice (8): Trying to access array offset on value of type null [APP/Template/Posts/view.ctp, line 123]

Warning: file_put_contents(/data01/sites/bonpourlatete.com/dev/bonpourlatete.com/logs/debug.log) [function.file-put-contents]: failed to open stream: Permission denied in /data01/sites/bonpourlatete.com/dev/bonpourlatete.com/vendor/cakephp/cakephp/src/Log/Engine/FileLog.php on line 133

Boas Erez: Qu’est-ce que Andres Freund a mis au jour un peu par hasard en avril 2024?

Ceki Gülcü: Freund a découvert une anomalie dans le fonctionnement d’un code de compression de données faisant partie des XZ Utils. Ceux-ci tirent leur importance de ce qu’ils sont utilisés dans le protocole d’échange sécurisé ssh. Il s’est avéré que l’anomalie découverte était due à la tentative d’installer une «porte dérobée», qui aurait permis de faire entrer en secret des commandes exécutables sur n’importe quel ordinateur utilisant ssh.

Cela aurait concerné combien d’ordinateurs dans le monde?

Ceux qui ont essayé d’installer la porte dérobée ont failli avoir accès à 90% des ordinateurs du monde, et ils ont échoué de peu!

Comment cela aurait-il été possible?

De nos jours, dès qu’une machine est connectée à internet, elle est accessible via le protocole ssh. Il n’y a plus la nécessité d’avoir une connexion physique directe, comme un câble, pour relier le lieu d’où part une commande – par exemple un clavier, et le lieu où cette commande est exécutée – par exemple un écran. De plus, l’autorisation d’accès aux machines n’est pas demandée aux utilisateurs finaux. Ce sont en quelque sorte les machines qui se font confiance entre elles, en tout cas elles ne mettent pas en doute la validité du protocole ssh. Ainsi, si on arrivait à modifier le programme informatique qui régit ce protocole de manière à rendre invisible le passage de commandes malveillantes, alors on pourrait faire faire n’importe quoi à n'importe quelle machine accessible via le protocole.

Qu’avons-nous comme garanties qu’une telle modification ne soit pas possible?

Tout d’abord, ce n’est pas du tout simple de concocter une telle modification. Ensuite, même si on avait idée de comment procéder, il faudrait arriver à le faire sans éveiller de soupçons. Les codes dont il s’agit sont sous la surveillance permanente d’un ensemble assez large de développeurs experts, qui travaillent de manière coordonnée à la maintenance et à l’amélioration des éléments qui forment la très complexe infrastructure informatique à la base d’internet, par exemple. La coordination n’est pas centralisée. La communauté est fondée sur l’engagement volontaire d’un très grand nombre de personnes, qui prennent chacune à charge un segment de l’ensemble. Le travail que ces personnes accomplissent requiert beaucoup de compétences et de dévouement. C’est un travail qui dure souvent des années, et qui est quelque peu ingrat. Malgré cela, cette organisation a produit une infrastructure très robuste. Une des clés de cette robustesse est le fait qu’en règle générale les codes y sont intégrés seulement si on peut vérifier leur qualité de manière indépendante.

Qu’entendez-vous par vérification indépendante?

Si j’ai la charge d’un segment, je dois d’une part publier un code source, relativement lisible par des humains, et d’autre part fournir le code binaire qui en est issu par compilation, et qui consiste en une suite de symboles essentiellement illisible pour un humain. C’est ce code binaire qui est intégré dans les logiciels. Un tiers doit pouvoir vérifier que le binaire du programme correspond bien au code source de départ. Cette vérification n’est de loin pas la seule vérification effectuée. On vérifie également que le code source ne contient pas d’instructions malveillantes, et que le programme s’exécute selon les attentes. Ceux qui ont conçu la porte dérobée dont il s’agit ont apparemment réussi à déjouer de telles vérifications. Je crois que l’idée de base a consisté à s’attaquer au code qui régit une certaine compression des données utilisée par ssh, et qui repose sur XZ Utils. Nous utilisons tous des fonctions de compression lorsque nous devons envoyer des fichiers encombrants. La compression utilisée par ssh sert plutôt à optimiser l’utilisation des ressources des processeurs, mais elle procède aussi en modifiant un ensemble de données d’une manière qui permet de retrouver l’essentiel des données modifiées. Les attaquants auraient caché le code malveillant dans des fichiers compressés, ce qui permet de déjouer la vigilance de personnes qui lisent le code source.

Est-ce donc lors d’une de ces vérifications de routine que l’on s’est aperçu de l’attaque?

Non, les attaquants auraient commis une erreur qu’ils auraient pu – je crois – assez facilement éviter. Les millions et millions de machines connectées à internet utilisent différentes versions du système d’exploitation UNIX ou du système dérivé Linux. Apparemment, c’est en observant que la nouvelle version du code source de XZ Utils ne compilait pas correctement dans certaines versions que l’attaque a été découverte.

Vous nous avez expliqué que chaque segment de l’infrastructure d'internet est développé sous la responsabilité de quelqu’un de dévoué. Comment cette personne a-t-elle pu laisser passer l’attaque?

En effet, XZ Utils était développé depuis des années sous la responsabilité de Lasse Collin. Celui-ci a subi des pressions perfides. J’ai indiqué les conditions dans lesquelles la plupart des développeurs de logiciels libres travaillent. Elles peuvent par moments porter à une certaine lassitude. Ainsi, Collin a subi des reproches par un dénommé Jia Tan, qui début 2023 a réussi à se faire admettre comme remplaçant de Collin. Tan éteint alors des fonctions qui contrôlent la robustesse du code dont il a acquis la responsabilité, et en février 2024 introduit les données servant à bâtir la porte dérobée. Il demande ensuite l’autorisation pour installer sa nouvelle version à grande échelle, qu’il obtient courant mars. Collin a donc été victime de ce qui est appelé l'ingénierie sociale dans le milieu de la sécurité de l’information, à savoir une manipulation psychologique à des fins d’escroquerie.

Faudrait-il donc changer l’organisation du développement des logiciels libres, ou carrément essayer de s’en passer?

Il fut un temps où les logiciels libres, ou plus généralement le monde de l’open-source ont pu paraître exotiques par leur nouveauté. Ce temps est largement révolu. On n’a pas idée de l’étendue de l’emploi de l’open-source, ou même juste de Linux. Ceci est peut-être dû au fait que seulement très peu d’ordinateurs de bureau les utilisent. Mais comme je l’ai indiqué Linux est omniprésent sur l’internet et en particulier il sert à gérer 90% du cloud. Il suffit de se dire que Amazon, dans son business multimilliardaire, utilise des bases de données basées sur l’open source, pour comprendre la fiabilité qui lui est attribuée. Cette observation permet aussi de tordre le cou à une idée répandue, à savoir qu’il serait difficile de trouver les ressources pour payer les personnes engagées dans le  développement de l’open source, ce qui est souvent pointé comme étant une des causes de leur vulnérabilité. Si les grandes entreprises – de Amazon à Apple, en passant par les constructeurs de téléphones utilisant Android – reversaient seulement une petite partie de leurs gains rendus possibles par l’exploitation de ressources open-source, ce problème serait vite résolu. Le fait est que le salariat n’est pas dans la culture du milieu open-source. En résumé, le système est incontournable, il est difficile à modifier, et bien qu’il ait des failles il est très robuste et fiable. Cela dit, il faut souligner l’importance du maintien de contacts directs entre les développeurs, notamment lors de congrès. Cela évite de devoir se fier à des «personnes» que l’on ne connaît qu’à travers quelques messages électroniques, et qui peuvent disparaître sans laisser aucune trace, comme cela a été le cas de ceux qui ont exercé les pressions sur Collin. 

Pensez-vous que l’installation de la porte dérobée ait été l’œuvre d’un Etat?

Comme il apparaît de ce qui précède, pour déployer l’attaque il aura suffi de 3 ou 4 personnes expertes travaillant pendant une période de 2 à 3 ans. Cela n’est pas donné à tout le monde, mais ne requiert pas non plus des moyens infinis. Je crois par contre que seulement un Etat pourrait fournir à une telle équipe la protection nécessaire contre des poursuites éventuelles. J’aimerais aussi insister sur le rôle que les Etats peuvent jouer pour dénoncer les attaques. J’ai moi-même été au centre d’une affaire créée par l’insistance d’une personne qui, en croyant utile de modifier un logiciel que j’avais développé, a causé beaucoup de problèmes [ndlr: BPLT a rendu compte de cette affaire dans un article de Sarah Dohr, daté du 21 janvier 2022]. En l’occurrence, l’ingénieur qui a alerté l’équipe responsable du projet, a eu des ennuis avec les autorités chinoises qui exigent que toute vulnérabilité leur soit d’abord communiquée, et seulement divulguée après autorisation de leur part. Heureusement que Freund a tout de suite eu le plein support de l’autorité allemande en charge de la cyber-sécurité. Pour terminer sur cette question de l’implication des Etats, je me souviens avoir vu le créateur de Linux, Linus Torvald, qui à la question de savoir si les Etats-Unis avaient installé des portes dérobées dans Linux avait répondu par un «non» très clair, tout en hochant de la tête en signe d’assentiment … 

Notice (8): Trying to access array offset on value of type null [APP/Template/Posts/view.ctp, line 147]

Warning: file_put_contents(/data01/sites/bonpourlatete.com/dev/bonpourlatete.com/logs/debug.log) [function.file-put-contents]: failed to open stream: Permission denied in /data01/sites/bonpourlatete.com/dev/bonpourlatete.com/vendor/cakephp/cakephp/src/Log/Engine/FileLog.php on line 133

VOS RÉACTIONS SUR LE SUJET

0 Commentaire

À lire aussi