Au coeur de l’été, les équipes d’ingénierie de Facebook pensent à la tranquillité d’esprit des développeurs Python en leur proposant Pysa, un outil d’analyse statique open source pour détecter les problèmes de sécurité dans leur code. Son fonctionnement est détaillé dans un billet publié le 7 août. Depuis l’an dernier, un premier outil d’analyse statique Zoncolan peut examiner automatiquement le code pour détecter une partie des risques potentiels en analysant l’ensemble du code en une trentaine de minutes. Chez Facebook, il a déjà servi à analyser plus de 100 millions de lignes de code Hack et à prévenir de ce fait des milliers de problèmes potentiels. Pysa, quant à lui, s’appuie sur Pyre, le vérificateur de code Python développé par Facebook. Il examine le code et regarde de quelle façon les données y circulent. L'équipe du projet explique qu'il est particulièrement utile de procéder ainsi « car de nombreux problèmes de sécurité et de confidentialité peuvent être modélisés sous la forme de données circulant à des endroits où elles ne devraient pas le faire ».

Par exemple, Pysa est utilisé pour vérifier si le code Python utilise correctement certains frameworks internes qui, suivant les règles de protection techniques mises en place, sont conçus pour empêcher l’accès à des données d’utilisateurs. Pysa détecte aussi des problèmes de sécurité communs sur les web apps, tels que les injections SQL ou XSS. « Comme Zoncolan l’a fait pour le code Hack, Pysa nous a aidé à mettre à l’échelle nos efforts de sécurité sur les applications Python, principalement sur le code utilisé pour nos serveurs Instagram », explique l’équipe dans le billet. C’est l’un des plus important référentiel de code Python pour Facebook : des millions de lignes. « Les analyseurs automatiques comme Pysa constituent un outil important pour maintenir la qualité et la sécurité dans cette base de code », pointe les développeurs du réseau social. 

Prêt pour les frameworks Django et Tornado

« Lorsque nous exécutons Pysa sur des modifications de code proposées par un développeur, l’outil fournit des résultats en une heure environ, alors que cela prendrait des semaines ou des mois s’il fallait le vérifier manuellement ». En obtenant rapidement ce résultat, cela permet de ne pas introduire les modifications dans la base de code. Selon le type de problèmes détectés et le ration signal/bruit de la détection, les résultats sont directement retournés au développeur ou bien vers les équipes chargées de la sécurité.

Pysa a donc été mis en open source par Facebook. L’outil s’accompagne d’un certain nombre de définitions qui serviront aux autres développeurs à trouver les problèmes de sécurité dans leur propre code Python. Facebook utilisant des frameworks tels que Django et Tornado pour ses produits, il est possible de commencer à se servir de Pysa avec ces frameworks. Mais, assure l’équipe du projet, « utiliser Pysa pour des frameworks que nous n’avons pas encore couverts est généralement aussi simple que d’ajouter quelques lignes de configuration pour indiquer à Pysa où les données entre dans le serveur ».