Intelligence artificielle Est-ce que Python est sécurisé ? Etude réalisée par Snyk

Pour approfondir le sujet

  • Plus d'actualités sur
  • Snyk
Sur le même thème :

IBM lance en open source sa boite à outils Adversarial Robustness pour améliorer la sécurité de l’IA

Les performances de l'intelligence artificielle ne cessent de progresser, il est toutefois encore très facile de l'induire volontairement en erreur, au moyen de ce...

L’UE veut protéger ses enfants des jouets dangereux

Lorsqu'on offre un jouet à un enfant, on pense au plaisir qu'il va lui procurer mais on envisage rarement les désagréments et les dangers...

5 choses à savoir avant d’apprendre à programmer en python

Python est un langage de programmation très utilisé en Datascience. Il présente de nombreux avantages : compatibilité, modularité, facilité d'accès pour des non-développeurs. Passons...

Le carnet des droits de l’homme s’étoffe d’un article sur les protections à mettre en place à l’ère de l’IA

Dunja Mijatović, Commissaire aux droits de l’homme du Conseil de l’Europe, vient de publier son article intitulé Protéger les droits de l'homme à l’ère...

Est-ce que Python est sécurisé ? Etude réalisée par Snyk

Selon une étude réalisée par Snyk, aujourd’hui, 43 % de toutes les fuites de données sont directement liées à des vulnérabilités découvertes au sein des applications. Le langage de programmation Python étant de plus en plus populaire auprès des développeurs, Snyk a examiné les problèmes de sécurité liés à ce langage et a constaté que, si 81 % des packages Python les plus populaires fonctionnent bien, environ 20 % des faiblesses de sécurité identifiées par Snyk Code sont liées aux projets Python.

Le succès de Python est en partie dû à son écosystème de bibliothèques logicielles de machine learning comme NumPy, Pandas, TensorFlow de Google et PyTorch de Facebook. Selon l’indice TIOBE, Python est désormais le langage de programmation le plus populaire au monde, devançant à la fois Java et C.

En examinant les menaces et les vulnérabilités liées à Python, Snyk a constaté qu’en moyenne, 60 nouvelles vulnérabilités Python sont ajoutées chaque mois à la base de données des vulnérabilités de Snyk. Près d’un tiers sont classées comme critiques ou de haute gravité (5 % sont des problèmes de gravité critique, 27 % sont de haute gravité, 56 % sont de gravité moyenne et 12 % sont de faible gravité). L’’étude révèle que la plupart des vulnérabilités découvertes pouvaient être rapidement corrigées. 87 % des vulnérabilités peuvent notamment être corrigées en passant à des packages mis à jour. Enfin, l’utilisation de packages plus légers permet de mettre un terme à la plupart des vulnérabilités des conteneurs.

Ces actions de maintenance sont nécessaires dans de nombreux projets. Dans plus de 60 % des projets Python, on trouve des éléments liés au code présents dans le TOP 10 2021 des problèmes de l’OWASP. Ces types de problèmes peuvent conduire les cybercriminels à injecter des scripts côté client dans les sites Web (XSS). Les chaînes de caractères fournies par l’utilisateur peuvent être utilisées pour construire des requêtes SQL et pour des attaques par injection SQL. De plus, la vérification des certificats est parfois désactivée, ce qui ouvre la voie aux attaques de type “Man-in-The-Middle” (MiTM).

“Lorsque l’on examine certains des problèmes de sécurité rencontrés dans les projets Python, on s’aperçoit que les problèmes liés aux interactions avec des ressources externes telles que les flux de fichiers ou de réseaux ne représentent qu’une petite partie des problèmes identifiés.”, explique Daniel Berman, Product Marketing Director chez Snyk. “Les développeurs Python semblent un peu moins disciplinés dans l’appel des fonctions de fermeture pour vider le contenu de la mémoire ainsi que pour libérer toutes les références.” 

Les dépendances augmentent le risque d’attaque

Un autre point à souligner est le fait qu’aujourd’hui, le contenu d’un dépôt Python est habituellement composé de bien plus que le simple code Python écrit par le développeur. Les éléments les plus courants sont les packages open-source, les images de conteneurs, ainsi que les fichiers de configuration utilisés pour fournir l’infrastructure nécessaire à leur exécution. Ce volume croissant de dépendances élargit la surface d’attaque des projets au fil du temps.

Snyk a constaté, qu’en moyenne, un projet Python a environ 35 dépendances. Parmi celles-ci, 17 sont des dépendances directes et 18 des dépendances indirectes. Dans 47 % de ces projets, les dépendances introduisent des vulnérabilités. Un projet vulnérable moyen comporte 33 vulnérabilités connues, dont 10 % sont des vulnérabilités de gravité critique, 26 % sont de gravité élevée, 26 % de gravité moyenne et 28 % de faible gravité.

“Plus les applications sont complexes, plus elles sont difficiles à sécuriser.”, explique Daniel Berman. “Les cybercriminels disposent d’une grande variété de vecteurs à utiliser lorsqu’ils s’attaquent à une application Python, que ce soit via des vulnérabilités connues introduites par des dépendances directes ou indirectes, des utilisations de sécurité dans le code propriétaire de l’application, ou des vulnérabilités de conteneurs.”

L’analyse des principaux problèmes de sécurité rencontrés dans le code des applications a permis à Snyk de formuler six conseils pour aider les développeurs Python :

  1. Utilisez une analyse de code statique moderne : Les linters comme Pylint et les scanners comme Bandit sont de bonnes bases. Mais les problèmes les plus graves sont inter-fichiers (c’est-à-dire que les problèmes surviennent lorsque l’exécution de l’application passe d’un fichier source à un autre) et détecter ce genre de problèmes manuellement demeure presque impossible.
  2. Nettoyez les données : Essayez d’assainir les données provenant de sources externes (y compris les bases de données) au point d’entrée de l’application.
  3. ORM : Utilisez des outils modernes de mapping objet-relationnel (“object-relational mapping” ou ORM) pour résumer les interactions avec la base de données et éviter les possibilités d’injection SQL. Si vous utilisez des packages tels que Django ou Flask, choisissez des bibliothèques telles que Django ORM ou SQLAlchemy dont l’efficacité est prouvée.
  4. Unicode : Si possible, standardiser toutes les chaînes de caractères à un seul encodage Unicode – nous recommandons UTF-8. De plus, il faut rester prudent lorsque vous convertissez des chaînes Unicode en ASCII.
  5. Fermez les APIs : Assurez-vous de fermer vos connexions réseau (par exemple, la lecture et les écritures externes). Cela garantit le stockage des données écrites dans leurs mémoires tampons, que l’état est stocké correctement et cela libère également des références dans votre système.
  6. Gardez vos secrets : Cette situation n’est pas spécifique à Python, mais il est courant de voir des informations personnelles telles que les noms d’utilisateur, les mots de passe, les jetons d’accès aux API, les chemins d’accès aux fichiers ou les noms de fichiers fuir dans le code source. Une bonne pratique consiste à les conserver dans des fichiers séparés ou, mieux encore, de les stocker de manière confidentielle dans HashiCorp Vault ou AWS Key Management Service par exemple.


1ère Marketplace de l'IA et de la transformation numérique vous recommande :
 
ActuIA

Partager l'article

I-Stem, Généthon et Kantify découvrent une thérapie prometteuse contre les maladies génétiques

Les équipes d’I-Stem et de Généthon, laboratoires de l’Association Française contre les Myopathies (AFM-Téléthon), ont collaboré avec la start-up belge Kantify, spécialisée dans le...

La finale de « Ma thèse en 180 secondes » aura lieu à Lyon le 31 mai prochain

« Ma thèse en 180 secondes » concours qui s'inspire de « Three minute Thesis », conçu à l'Université du Queensland, en Australie, est...

CentraleSupélec et SystemX lancent l’Alliance CircularIT pour mettre le numérique au service de l’économie circulaire

Le 10 mai dernier, CentraleSupélec et l’IRT SystemX ont annoncé la création d'« Alliance CircularIT » afin de « mettre la puissance du numérique...

Le Val de Marne mise sur l’intelligence artificielle pour améliorer son réseau d’assainissement

En novembre 2020, l’agence de l’eau Seine-Normandie lançait l'appel à projets innovation pour la gestion de l’eau, « Transition numérique et économie circulaire »...
Recevoir une notification en cas d'actualité importante    OK Non merci