Carrefour de l'actualité

Réutilisation de code à titre d’exemple : un article soulève des enjeux de vulnérabilité dans des applications commercialisées

28 novembre 2019 - Source : NOUVELLES

Un article corédigé par le professeur Foutse Khomh révèle l’introduction de vulnérabilités dans des applications commercialisées, par la réutilisation de bouts de code C++ fournis en exemple sur le site de questions-réponses Stack Overflow. L’étude a mené à une prise de conscience au sein de la communauté de la programmation.

Illustration du concept de code informatique vulnérable


Foutse Khomh, professeur agrégé au Département de génie informatique et génie logiciel, est l’un des auteurs d’un article scientifique intitulé « An Empirical Study of C++ Vulnerabilities in Crowd-Sourced Code Examples », qui traite d’une étude empirique de vulnérabilités dans des exemples de code en langage C++ qui sont partagés sur des plateformes d’échange en ligne. Les autres auteurs de l’article sont Gias Uddin, alors doctorant à l’Université McGill sous la supervision du professeur Khomh, le professeur agrégé Ashkan Sami et les étudiants Jafas Akhondali et Morteza Verdi de l’Université Shiraz, en Iran, ainsi que l’étudiant Alireza Karami Motlagh de l’Université Chamran, en Iran.

Les bouts de code en question sont donnés en exemple pour clarifier une réponse à une question technique sur des sites comme Stack Overflow, une plateforme de questions-réponses très populaire au sein de la communauté des programmeurs en informatique. De telles questions techniques peuvent être posées par des programmeuses ou des programmeurs professionnels, mais aussi par des étudiantes ou des étudiants qui ont un devoir à compléter. La fourniture d’exemples de code permet aux contributeurs de gagner des points de réputation auprès des pairs.

Or, lors de l’examen d’extraits de code ayant été utilisés dans au moins un projet hébergé par GitHub, un service web d'hébergement et de gestion de développement de logiciels, le professeur Khomh et ses collègues ont identifié 69 extraits de code vulnérables, classés selon 29 types de vulnérabilité, qui provenaient du site Stack Overflow. Surtout, ils ont observé que les 69 extraits de code vulnérables avaient été réutilisés dans un total de 2 859 projets sur GitHub.

Des antécédents problématiques

Le professeur Khomh et des collègues avaient observé, il y quelques années, que du code partagé dans des sites de questions-réponses se propageait dans des projets réels. Cette observation avait mené à la réalisation, en 2017, d’une étude portant sur des risques de violation de propriété intellectuelle quant au code versé dans le site Stack Overflow. L’étude, intitulée « Stack Overflow: A Code-Laundering Platform? », avait pour auteurs Foutse Khomh, le professeur titulaire Giuliano Antoniol ainsi que Le An et Ons Mlouki, alors respectivement doctorant et étudiant à la maîtrise sous la supervision du professeur Khomh à Polytechnique.

« En général, des personnes qui versent du code dans ces sites ont l’impression qu’il tombe dans le domaine public parce qu’il y est mis sans référence ni attribution appropriée de la source », explique Foutse Khomh. « Aussi, des personnes qui fréquentent ces sites en quête de connaissances ont tendance à copier du code et à l’intégrer dans leur propre code. Nous avions alors fait une étude afin de voir si le site Stack Overflow permettait du "blanchiment de code", et dans quelle mesure du code pouvait aboutir dans un produit fini. »

Lors de l’analyse de centaines d’applications mobiles à code source ouvert qui avaient été publiées dans des boutiques en ligne, ce qui avait mené au retraçage de l’origine de bouts de code sur Stack Overflow, les auteurs de l’étude avaient constaté un grand nombre de cas de violation de propriété intellectuelle. « Par exemple, il y avait des cas d’intégration d’un bout de code faisant l’objet d’une licence, à l’insu de ses propriétaires, dans du code qui avait ensuite fait l’objet d’une nouvelle licence, puis d’une utilisation commerciale dans une application vendue en ligne. Ce travail constituait un premier signal d’alarme », explique le professeur Khomh.

Des vulnérabilités étendues

Alors que l’étude de 2017 portant sur la réutilisation de code avait retenu l’attention au sein de la communauté de la programmation, le professeur Khomh souhaite alors en savoir plus sur le sujet.

En 2018, lors de la Conférence internationale sur le génie logiciel (ICSE) tenue en Suède, il discute de la problématique de la propagation de bouts de code avec le professeur Ashkan Sami de l’Université Shiraz. Les deux professeurs décident alors d’analyser les effets de la transition de code depuis le site de questions-réponses Stack Overflow jusqu’au service web d’hébergement GitHub. Également, les professeurs en profitent pour s’intéresser à la qualité du code propagé sur ces plateformes.

Lors de sessions collaboratives, les auteurs de l’étude ont analysé manuellement les vulnérabilités de sécurité de 72 483 bouts de code en langage C++ qui ont été partagés durant une période de dix ans sur le site Stack Overflow. Les vulnérabilités de sécurité ont été classées conformément aux instructions de la base de données des faiblesses de sécurité logicielle Common Weakness Enumeration (CWE), qui est développée par la communauté des développeurs.

L’analyse de la transition du code de Stack Overflow vers GitHub a permis de constater que des bouts de code vulnérables servaient à faire du prototypage rapide, mais aussi que du code était réutilisé tel quel dans le code d’applications ayant été commercialisées, créant ainsi des failles de sécurité. Pourtant, selon le professeur Khomh, les vulnérabilités observées dans les bouts de code étaient déjà connues, donc corrigeables.

« Notre étude était conservatrice : nous avons cherché les traces de vulnérabilités qui étaient déjà déclarées, validées et répertoriées dans la base de données CWE. Or, ces vulnérabilités sont connues, et les pirates utilisent des mécanismes qui leur permettent d’exploiter ces vulnérabilités », souligne-t-il. « Nous avons trouvé plusieurs traces de vulnérabilités qui étaient non seulement encore présentes dans des applications ayant été publiées, mais aussi que les développeurs de ces applications n’étaient pas toujours au courant de l’existence de ces vulnérabilités. Qui plus est, beaucoup de bouts de code vulnérables sont encore présents, non corrigés, dans Stack Overflow. »


Foutse Khomh, professeur agrégé au Département de génie informatique et génie logiciel à Polytechnique Montréal.

Foutse Khomh, professeur agrégé au Département de génie informatique et génie logiciel à Polytechnique Montréal.


Des réactions multiples, des solutions concrètes

Le professeur Khomh et ses collègues ont rédigé un article qui a été publié par le service de distribution d’articles scientifiques arXiv au début d’octobre 2019. Rapidement, leur étude a retenu l’attention.

D’une part, plusieurs sites web spécialisés et médias grand public – entre autres, le diffuseur British Broadcasting Corporation et le journal The Register, au Royaume-Uni – ont traité des observations contenues dans l’article scientifique. D’autre part, les constats de l'étude ont fait l’objet d’échanges dans des sites de discussion pour développeurs, notamment sur Meta Stack Exchange, un site de questions-réponses qui est consacré aux sites du réseau Stack Exchange, qui chapeaute Stack Overflow.

Également, l'équipe de Stack Overflow n’est pas restée indifférente face aux conclusions de l’étude. Des responsables du site ont contacté les professeurs Khomh et Sami afin de savoir comment la plateforme pourrait être améliorée afin de soutenir sa mission première, soit l’échange de connaissances entre les développeurs, tout en évitant la propagation de vulnérabilités ou les violations de licence.

Foutse Khomh explique que le but des auteurs de l’article était d’attirer l’attention sur les risques énormes liés à la présence de bouts de code vulnérables sur le site Stack Overflow. Comme piste de solution, ses collègues et lui ont développé une extension de navigateur web qui analyse les bouts de code contenus dans une page Stack Overflow, par l’entremise de la base de données CWE, puis affiche un message si une vulnérabilité connue et publique est détectée dans un bout de code, afin de prévenir les personnes utilisant le site.

« Nous avons proposé à Stack Overflow notre extension, afin de la rendre native à la plateforme pour procéder à une analyse. Également, nous avons proposé l’ajout d’un coefficient de sécurité au mécanisme de réputation du site : puisque les personnes qui valident les réponses détiennent l’expertise permettant de reconnaître du code vulnérable, l’ajout d’un incitatif supplémentaire pourrait avoir des bénéfices importants », souligne le professeur Khomh.

D’ailleurs, Stack Overflow a publié un billet de blogue qui relate la discussion avec les professeurs Khomh et Sami à propos de leurs travaux de recherche, avec un lien vers l’extension de navigateur développée par le professeur Khomh et ses collègues.

En portant son chapeau de professeur, Foutse Khomh souligne que le dossier de la présence de bouts de code vulnérables dans Stack Overflow aura des retombées positives en matière de pédagogie. « La mission d’un site comme Stack Overflow est d’illustrer la résolution d’un problème afin d’inspirer une personne qui, ensuite, créera elle-même la solution requise. Également, il y a là, pour nos étudiantes et nos étudiants, pour les modérateurs des réponses et même pour les entreprises qui développent des applications, une occasion de saisir l’importance d’utiliser du code exempt de vulnérabilité », indique-t-il en terminant.

En savoir plus

Article « An Empirical Study of C++ Vulnerabilities in Crowd-Sourced Code Examples »
Fiche d’expertise du professeur Foutse Khomh
Site du Département de génie informatique et génie logiciel

À lire aussi

30 janvier 2019
NOUVELLES

Trois professeurs de Polytechnique Montréal classés parmi les chercheurs en génie logiciel les plus productifs au monde selon une étude bibliométrique

23 septembre 2020
NOUVELLES

Foutse Khomh, professeur à Polytechnique, récompensé par un prix d’excellence en recherche