Quand le code change
Dans quel contexte s’inscrivent vos recherches ?
Je suis cofondateur et directeur scientifique du projet Software Heritage qui est la plus grande archive de code source et d’historique de développement logiciel au monde. Plus de 300 millions de projets y sont consignés dans un but de conservation de biens immatériels (avec le soutien de l’Unesco) mais aussi scientifique, avec des applications en recherche et dans l’industrie. Sur ce dernier point, l’enjeu est de taille car 99 % des produits numériques réutilisent aujourd’hui du code Open Source. Il est alors intéressant de pouvoir retracer l’historique d’un code et de vérifier si la version sur laquelle un logiciel fonctionne est conforme à celle archivée dans Software Heritage. Mes travaux intéressent par ailleurs la sécurité de la chaîne d’approvisionnement logicielle (« Supply Chain » en anglais). Depuis quelques années en effet, les cyberattaquants essayent d’introduire des vulnérabilités dans les composantes Open Source des produits mis sur le marché. Des politiques étatiques de sécurisation de la Supply Chain Open Source sont en cours de déploiement, en Europe comme aux États-Unis, en réponse à ce phénomène.
Comment menez-vous ces travaux ?
Nous utilisons une technique dite de propagation de vulnérabilités. Nous nous appuyons sur l’archive Software Heritage - qui entrelace tous les historiques de développement des codes source - pour déterminer quand ces derniers intègrent une vulnérabilité et, le cas échéant, un correctif. Nos ingénieurs ont développé pour cela des outils pour propager les informations externes collectées à propos des vulnérabilités et de leurs correctifs sur l’ensemble de nos archives (soit 2000 To de données ou quelques milliards de versions de logiciels). Nous sommes alors en mesure d’alerter les utilisateurs d’un code source reconnaissable comme vulnérable, mais pas encore corrigé. Ces informations sont d’ailleurs en accès libre et nous sommes les seuls au monde à pouvoir offrir ce service, indépendamment d’une plateforme spécifique comme GitHub par exemple.
Nous pouvons également détecter des anomalies dans les dépôts (GitHub ou autre) que les développeurs utilisent pour collaborer. Nous avons remarqué que certaines versions d’un logiciel observées à un instant t présentent des variations après une période donnée. Le phénomène pose question car habituellement ces technologies sont utilisées pour ajouter du code mais ne devraient supprimer des versions antérieures que très rarement. Donc soit du code a été retiré pour des questions juridiques, soit il a été réécrit pour d’autres raisons avec le risque d’y introduire du code malveillant, difficile à détecter. Nous avons alors développé un outil capable de comparer deux visites d’archivage du même dépôt et de détecter ces anomalies.
Quelles sont les applications possibles de vos travaux en termes de cybersécurité ?
Nous travaillons beaucoup sur le Build reproductible, à savoir le fait de reproduire des codes ou des logiciels à l’identique. Des différences peuvent en effet apparaître entre la version d’un logiciel développée par un producteur et celle finalement utilisée. Les Playstores sont parfois victimes d’attaques et proposent à leur insu des versions d’applications recompilées avec des vulnérabilités ou des modifications demandées par un agent externe (le gouvernement américain pourrait par exemple imposer à Apple ou Google d’introduire des logiciels espions dans certaines applications en téléchargement sur leurs stores). Il existe alors un réel besoin de vérifier, voire de certifier (par une signature cryptographique par exemple), que la version utilisateur est bien conforme à l’originale. Nous travaillons pour cela avec les développeurs afin d’archiver et de rendre accessibles les codes importants et ainsi d’obtenir des Builds reproductibles.
Et en termes de Défense ?
Notre travail garantit une forme de résilience et de souveraineté dans le domaine des logiciels Open Source. D’une part en offrant une visibilité globale sur l’origine des codes existants à travers le monde. D’autre part en maintenant la disponibilité de ces derniers dans le temps : que se passerait-il en effet si demain les USA n’autorisaient plus l’accès à GitHub ou si le régime de la propriété intellectuelle changeait rétroactivement en Chine, rendant inutilisable le code aujourd’hui open source ? Enfin, notre archive réduit notre dépendance aux plateformes tierces pour accéder aux codes. Nous disposons d’ailleurs de copies indépendantes de notre archive dans divers pays européens.
Stefano Zacchiroli est professeur titulaire d'informatique à Télécom Paris, Institut Polytechnique de Paris. Ses intérêts de recherche actuels couvrent les communs numériques, l'ingénierie des logiciels open source, la sécurité informatique et la chaîne d'approvisionnement logicielle. Il est cofondateur et directeur scientifique (Chief Scientific Officer) de Software Heritage, la plus grande archive publique de code source logiciel. Il a été trois fois chef du projet Debian et ancien membre du conseil d'administration de l'Open Source Initiative (OSI). Il est lauréat du prix O’Reilly Open Source Award en 2015 et du Google Award for Inclusion Research en 2022.
>> La page Télécom Paris de Stefano Zacchiroli
>> Stefano Zacchiroli sur Google Scholar
*LTCI : un laboratoire de recherche Télécom Paris, Institut Polytechnique de Paris, 91120 Palaiseau, France