Auteurs:
(1) Anna-Katharina Wickert, Technische Universität Darmstadt, Darmstadt, Allemagne ([email protected]) ;
(2) Lars Baumgärtner, Technische Universität Darmstadt, Darmstadt, Allemagne ([email protected]) ;
(3) Florian Breitfelder, Technische Universität Darmstadt, Darmstadt, Allemagne ([email protected]) ;
(4) Mira Mezini, Technische Universität Darmstadt, Darmstadt, Allemagne ([email protected]).
3 Conception et mise en œuvre de Licma et 3.1 Conception
4 Méthodologie et 4.1 Recherche et téléchargement d'applications Python
4.2 Comparaison avec des études antérieures
5 Évaluation et 5.1 Projets GitHub Python
6 Comparaison avec des études antérieures
9 Conclusion, remerciements et références
Contexte : Des études antérieures ont montré que jusqu'à 99,59 % des applications Java utilisant des API de cryptographie abusent de l'API au moins une fois. Cependant, ces études ont été menées sur Java et C, alors qu’il manque des études empiriques sur d’autres langages. Par exemple, une étude utilisateur contrôlée avec des tâches de chiffrement en Python a montré que 68,5 % des développeurs professionnels écrivent une solution sécurisée pour une tâche de chiffrement.
Objectifs : Pour comprendre si cette observation est valable pour le code du monde réel, nous avons mené une étude sur les utilisations abusives de crypto en Python.
Méthode : Nous avons développé un outil d'analyse statique qui couvre les utilisations abusives courantes de 5 API de cryptographie Python différentes. Avec cette analyse, nous avons analysé 895 projets Python populaires de GitHub et 51 projets MicroPython pour appareils embarqués. De plus, nous avons comparé nos résultats avec ceux d’études précédentes.
Résultats : Notre analyse révèle que 52,26 % des projets Python ont au moins une mauvaise utilisation. De plus, la conception de l'API de certaines bibliothèques de chiffrement Python aide les développeurs à éviter une mauvaise utilisation des fonctions de chiffrement, qui étaient beaucoup plus courantes dans les études menées avec du code Java et C. Conclusion : Nous concluons que nous pouvons constater un impact positif d'une bonne conception d'API sur les utilisations abusives de crypto pour les applications Python. De plus, notre analyse des projets MicroPython révèle l'importance des analyses hybrides.
La cryptographie, ci-après crypto, est aujourd’hui largement utilisée pour protéger nos données et en garantir la confidentialité. Par exemple, sans crypto, nous ne serions pas en mesure d’utiliser les services bancaires en ligne ou de faire des achats en ligne en toute sécurité. Malheureusement, les résultats de recherches antérieures montrent que la cryptographie est souvent utilisée de manière non sécurisée [3, 4, 7, 9, 11]. L’un de ces problèmes est le choix d’un paramètre non sécurisé, comme un mode de bloc non sécurisé, pour les primitives cryptographiques telles que le chiffrement. De nombreux outils d'analyse statique existent pour identifier ces abus tels que CryptoREX [13], CryptoLint [4], CogniCryptSAST [8] et Cryptoguard [12].
Bien que ces outils et leurs études respectives se concentrent sur Java et C, les études d'utilisateurs suggèrent que les API Python existantes réduisent le nombre d'utilisations abusives de la cryptographie. Acar et coll. [2] a mené une expérience avec 307 utilisateurs de GitHub qui ont dû résoudre 3 tâches de développement liées à la cryptographie. Ils ont observé que 68,5 % des développeurs professionnels ont écrit une solution sécurisée en Python pour la tâche donnée. Dans le cadre d’une expérience contrôlée menée auprès de 256 développeurs Python qui tentaient de résoudre des tâches de cryptographie simples, Acar et al. [1] ont identifié qu'une conception d'API simple, comme la cryptographie de la bibliothèque Python, aide les développeurs à écrire du code sécurisé. Cependant, aucune étude empirique sur le terrain n’a encore confirmé que les abus de cryptographie en Python se produisent moins fréquemment qu’en Java ou C.
Pour évaluer empiriquement les utilisations abusives de crypto en Python, nous introduisons LICMA , un cadre d'analyse multilingue prenant en charge 5 API de crypto Python différentes et l'API JCA de Java. Nous fournissons 5 règles différentes [4] pour toutes les API Python et 6 règles différentes [4] pour que JCA détecte les utilisations abusives de cryptographie les plus courantes. Avec LICMA, nous avons analysé 895 applications Python populaires de GitHub et 51 projets MicroPython pour mieux comprendre les utilisations abusives de Python. Nous avons identifié que 52,26 % des applications Python GitHub utilisant des crypto-monnaies ont au moins une utilisation abusive provoquant 1 501 utilisations abusives. Au total, seulement 7 % des utilisations abusives concernent le code de l'application lui-même, tandis que les autres utilisations abusives sont introduites par des dépendances. De plus, notre étude des projets MicroPython révèle que les développeurs du domaine embarqué ont tendance à utiliser la cryptographie via le code C. Cela révèle ainsi l'importance des analyses statiques hybrides, qui peuvent suivre les informations du programme, par exemple un graphique d'appel, dans plusieurs langues [5, 10].
Pour mieux comprendre si les API Python sont moins sujettes aux abus de cryptographie, nous apportons les contributions suivantes :
• Un nouvel outil d'analyse multilingue pour détecter les abus de cryptographie en Python et Java. Pour Python, nous couvrons les utilisations abusives de crypto pour 5 API de crypto Python courantes et pour Java, l'API standard JCA.
• Une étude empirique des abus de cryptomonnaies dans les 895 applications Python les plus populaires sur GitHub révélant 1 501 abus.
• Une comparaison de nos résultats dans les applications Python avec des études antérieures sur les utilisations abusives de crypto dans la nature pour les applications Android et les images de micrologiciels en C. Nous avons observé que la plupart des applications Python sont plus sécurisées et que la répartition entre les types concrets d'utilisations abusives diffère beaucoup. .
• Une étude empirique des abus de crypto dans les projets MicroPython qui révèle l'importance des analyses statiques hybrides.
• Un package de réplication comprenant les deux ensembles de données utilisés pour notre étude, les résultats de notre analyse et le code de LICMA[1].
Cet article est disponible sur arxiv sous licence CC BY 4.0 DEED.
[1] dx.doi.org/10.6084/m9.figshare.16499085