Python : 6 recommandations de sécurité

Python est un des langages de programmation les plus prisés du marché. Qu’en est-il de la sécurité ? Snyk fait le point.

Python est un des langages de programmation les plus demandés du marché. Qu’en est-il de la protection des développements logiciels portés par Python ?

Snyk, plateforme de sécurité pour développeurs, a livré son analyse sur le sujet. La société technologique américaine dresse le constat suivant :

Un projet de développement applicatif basé sur Python inclut 35 dépendances en moyenne.

Dans 47% des cas, les dépendances introduisent des vulnérabilités, 33 en moyenne. Parmi ces failles de sécurité, 10% sont jugées « critiques » (XXS, TLS…) et 26% affichent un niveau « élevé » de dangerosité. Les autres sont de gravité « faible » (38%) à « moyenne » (26%).

La situation est tendue, mais elle n’est pas désespérée. Ainsi, 87% des vulnérabilités « connues » peuvent être éliminées par le biais d’une mise à jour du paquet vulnérable.

De l’analyse statique aux secrets bien gardés

Pour renforcer l’approche DevSecOps des projets, Snyk formule six recommandations à l’attention des développeurs et, plus largement, de l’écosystème Python :

1. Utilisez une analyse statique de code à jour (Pylint, Bandit…)
2. Nettoyez les données provenant de sources externes au point d’entrée des applications
3. Optez pour des outils de mapping objet-relationnel (object-relational mapping ou ORM)
4. Standardisez les chaînes de caractères avec encodage Unicode, si possible UTF-8
5. Fermez vos API et vos connexions réseau
6. Gardez vos secrets (identifiants, jetons d’accès aux API…), avec ou sans Python

« 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 », soulignent les auteurs du rapport. « 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. »