Comment les IA transforment tout code en code open source
La compilation et l’obfuscation étaient jusqu’à présent des moyens relativement “efficaces” de protéger son code source, du moins de tous ceux qui n’y connaissent rien en reverse engineering. Mais Claude d’Anthropic et ses copains LLMs viennent de pulvériser cette barrière de protection en transformant n’importe quel logiciel en code open-source par défaut…
Je viens en effet de lire un article hyper intéressant d’un codeur qui s’appelle Geoffrey Huntley qui s’est plongé dans le fonctionnement de Claude Code. Si vous dormiez dans votre grotte ces dernières semaines, Claude Code, c’est un outil codé en Typescript qui n’est ni plus ni moins qu’un agent IA capable de coder en utilisant le LLM Claude Sonnet 3.7.
Le truc c’est qu’en observant les entrailles de Claude Code, Geoffrey s’est rendu compte que la sauce secrète de l’application était obfusquée dans un fichier cli.mjs minifié de 5 Mo. Comme il est malin, il a tout simplement demandé à Claude d’analyser ce fichier pour en refaire un code potable. Claude s’est alors auto-désassemblé si vous préférez.
Pour y arriver, il a d’abord installé le package npm, puis il a repéré le fichier cli.mjs qui constitue le cœur de l’application. En utilisant un LLM (pas forcément Claude, n’importe lequel avec un context window suffisant), il lui a envoyé ce prompt : “CLI.js est une application typescript compilée avec webpack. Les symboles ont été supprimés. Inspectez le code en profondeur mais ignorez le code SentrySDK. Créez une spécification des fonctionnalités de l’application. Convertissez le code source en version lisible.”
Et là, le truc hallucinant, malgré les 5 Mo du fichier (bien au-delà des limites théoriques d’un context window), le LLM s’est mis à analyser le code. Geoffrey a bien sûr dû “baby-sitter” le processus en encourageant régulièrement l’IA avec des “continue, tu fais du bon boulot” pendant une bonne trentaine de minutes. C’est long mais les résultats sont là !
Et cela ne s’arrête pas qu’au code minifié car il a réussi toujours avec des LLM à faire de la désobfuscation (rendre lisible du code volontairement rendu incompréhensible), de la transpilation (conversion d’un langage à un autre), ou du structure-to-structure (préservation de l’architecture lors de la conversion), sur d’autres langages, y compris des binaires. Il est même allé jusqu’à convertir du code assembleur en code pour ZX Spectrum.
Cette méthode accessible à tous fonctionne sur le même principe qu’un mixeur de Bitcoin mais pour du code. Vous donnez au LLM un code propriétaire plus ou moins sécurisé (car obfusqué par exemple), et lui en fait une version recodée propre qui n’a plus rien à voir avec le code d’origine. Ça brouille donc totalement les pistes et ça permet de recoder des fonctionnalités entières présentes dans du code propriétaire sans se faire pincer. Ça me rappelle cette série Halt and Catch Fire où une première équipe reverse totalement le Bios IBM PC pour en documenter le fonctionnement. Et une seconde équipe qui n’est pas en contact avec la première, utilise cette documentation pour écrire son propre code original de Bios compatible IBM PC. Cette segmentation permet de refaire la même chose mais sans copier du code d’origine.
Avec les LLMs c’est un peu la même idée, sauf que tout le processus est automatisé et ne prend que quelques heures au lieu de mois de travail acharné. Ce qui me fait vraiment tripper, c’est que n’importe quelle boîte peut maintenant voir ses fonctionnalités propriétaires copiées en un temps record.
Bref, c’est très intéressant comme technique pour les développeurs et les hackers qui souhaitent par exemple reverser du code pour créer de nouvelles API, recoder des bouts de code proprio payants dans un logiciel ou pour libérer du code source proprement. Cette capacité à “lire” facilement le code obfusqué ou compilé change la donne car maintenant la question n’est plus de savoir si votre code est protégé, mais comment créer de la valeur au-delà du code lui-même.
Les implications sont énormes et vont bien au-delà du simple hack car toutes ces startups “source available” qui ont levé des millions avec des licences restrictives se retrouvent soudain vulnérables. N’importe qui peut désormais reproduire leurs fonctionnalités payantes en quelques heures. Du coup, comme le dit Huntley: “si vous n’êtes pas en train de perdre le sommeil et de coder 80h+ par semaine en ce moment, pourquoiiiii ? Il y a tellement d’opportunités disponibles…” Bref, une nouvelle ère s’ouvre pour les développeurs malins.
Alors, qu’allez-vous décompiler en premier?