Immutable releases : l'arme secrète pour sécuriser votre supply chain logicielle ?

Par:
francoistonic

mer, 17/09/2025 - 08:23

Les attaques contre les NPM, GitHub et la chaîne logicielle globalement, posent de réelles questions sur l'intégrité des extensions et des codes. GitHub propose une fonctionnalité qui pourrait nous sauver, du moins, partiellement, "c’est le genre de truc que tous les développeurs devraient activer illico sur leurs repos." commente Korben. Il s'agit de l'immutable releases. La notion d'immutable, d'immutabilité, est importante en informatique. 

En gros, l'immutable est un asset technique que l'on ne peut pas changer, modifier. Il peut être en lecture seule. Un élément immutable ne change pas et on ne peut pas le corrompre. On parlera en Français d'immuable. En programmation, on parle aussi d'immutable. 

Par la fonction immutable release, théoriquement, on bloque les attaques essayant d'injecter ou de corrompre notre dépôt. Bref, cette fonction doit bloquer :

- les attaquants injectent des vulnérabilités ou des logiciels malveillants dans les versions actuelles des projets.
- modifications accidentelles des ressources et des balises pouvant perturber les flux de travail des développeurs.
Lors de la création d'une version immutable (accessible depuis les paramètres GitHub), génère une attestation de version, un enregistrement cryptographique vérifiable contenant le tag de version, le SHA et les ressources de la version. "Les consommateurs peuvent utiliser cette attestation pour s’assurer que les versions et les artefacts qu’ils utilisent correspondent exactement aux versions GitHub publiées." explique la documentation. 
Si une release est immutable, un cadenas Immutable apparaît. 
Attention, comme prévient Korben, quand une version est immutable, il n'est pas possible d'ajouter d'éléments. Eh oui, la version étant immuable, elle ne doit pas changer dans sa structure. Par contre, cette fonction peut être utilisé si vous versionnez le code : v1, v2, etc. 
Attention : fonction en préversion.