Skip to main content

Moderniser la maintenance des règles SAST pour détecter les vulnérabilités plus rapidement

Écrit par

Frank Fischer

feature code scan blue

19 avril 2022

0 minutes de lecture

Snyk Code se distingue de la plupart des outils d’analyse statique du code en générant et en maintenant des ensembles de règles pour ses utilisateurs, afin de les aider à lutter contre les menaces courantes et nouvellement découvertes. Un récent article de Hub présentait une nouvelle vulnérabilité JavaScript appelée pollution de prototype, qui permet aux attaquants de modifier, ou de « polluer », le prototype d’un objet JavaScript et d’exécuter diverses actions malveillantes.

Dans cet article, nous prendrons l’exemple de la pollution de prototype pour vous montrer comment les fonctionnalités de maintenance des règles de Snyk Code aident les développeurs et les professionnels de la sécurité à protéger leurs applications. Nous n’étudierons pas la pollution de prototype en détail ici, mais si vous souhaitez en savoir plus, je vous recommande de suivre cette leçon de Snyk Learn ou de lire l’article de Hub mentionné plus haut.

L’approche traditionnelle de la maintenance des ensembles de règles

La qualité d’un outil de test de sécurité des applications statique (SAST) — et, plus largement, des outils d’analyse statique du code — dépend en grande partie de la qualité de son ensemble de règles. En bref, l’outil transforme le code source en une structure de données, puis utilise ces règles pour rechercher des motifs malveillants. Dans la plupart des scanners modernes, les règles sont écrites dans un style assez peu courant appelé programmation logique.

Écrire et maintenir des ensembles de règles n’est pas une tâche facile. Cela exige une connaissance approfondie de la programmation logique, ainsi que du langage et des bibliothèques analysés. Une fois les règles écrites, leur débogage constitue un autre défi. Elles doivent être testées sur du code réel avant d’être utilisées en production, ce qui peut facilement prendre des heures. Par conséquent, une étude1 a montré que les développeurs modifient rarement la configuration. Si les règles personnalisées peuvent se justifier dans certains cas, l’outil devrait tout simplement fonctionner dans la plupart des situations.

Remarque : Les cas où des règles personnalisées se justifient sont très rares (si vous êtes dans ce cas, dites-le-nous). Dans la plupart des situations, l’outil devrait « tout simplement fonctionner », sans que l’utilisateur ait besoin de le modifier !

Snyk Code modernise la maintenance des règles

Snyk Code adopte une approche différente. Nous considérons l’ensemble de règles comme une partie intégrante du produit et ne demandons pas à nos clients de maintenir ces règles pour pouvoir utiliser l’outil. Dans un secteur où les « règles personnalisées » sont considérées comme une fonctionnalité indispensable d’un outil SAST, Snyk propose une solution simplifiée à ses utilisateurs. Nos experts en sécurité prennent en charge la création et la maintenance de l’ensemble de règles, en s’appuyant sur un moteur puissant et rapide, testé et entraîné sur un grand nombre de projets open source. Les équipes Snyk, avec leur approche « humain dans la boucle », surveillent et contrôlent constamment les résultats, et assurent ainsi le contrôle qualité à la place des clients.

Alessio Della Libera est l’un des ingénieurs de Snyk chargés de la maintenance des règles. Ce chercheur en sécurité a rejoint Snyk il y a environ un an. Interrogé sur l’approche unique de Snyk Code, il l’a décrite comme « […] une sorte de boucle. Modifier quelque chose et vérifier les changements par rapport aux résultats de l’ensemble de données ne prend que quelques minutes. Pouvoir itérer aussi rapidement est extrêmement utile. »

Examinons cela de plus près

L’ensemble de données d’entraînement composé de projets open source fait l’objet d’une surveillance et de mises à jour constantes, en fonction des résultats des analyses et des retours des utilisateurs. Au cours de cette surveillance, Libera a constaté que l’une de nos règles existantes ne fonctionnait pas comme prévu.

Après avoir modifié et testé la règle, deux résultats ont retenu son attention. Le projet open source appwrite.io contenait une copie de la bibliothèque litespeed.js. Selon son site Web, « Appwrite est une solution auto-hébergée qui fournit aux développeurs un ensemble d’API REST faciles à utiliser et à intégrer pour répondre à leurs principaux besoins côté backend ». Snyk Code a signalé le même problème à la fois dans la bibliothèque via la marketplace et dans le projet lui-même.

Sur une instance en cours d’exécution d’appwrite.io (par exemple, accessible depuis mywebsite.com), un attaquant peut appeler mywebsite.com/auth/signup?__proto__[polluted]=yes. À l’aide des outils de développement du navigateur, vous pouvez vérifier l’état JavaScript et constater qu’un membre nommé polluted possède désormais la valeur yes. En exploitant ce problème, Libera a découvert que des sites Web malveillants pouvaient utiliser cette vulnérabilité pour déclencher une attaque de script intersites (XSS).

Alerter les responsables de la maintenance

Après avoir été informés, les responsables du projet Appwrite ont rapidement publié des correctifs pour les paquets appwrite/server-ce et litespeed.js. Comme l’application est largement utilisée, une CVE a également été publiée dans la National Vulnerability Database.

Une fois la vulnérabilité corrigée, les responsables d’Appwrite ont offert une carte-cadeau à Libera, qui leur a demandé de la donner au profit de la communauté open source. Dans l’ensemble, nous ne pouvons que saluer la manière dont Appwrite a géré ce problème de sécurité. En le prenant au sérieux et en collaborant avec la communauté pour le résoudre, l’équipe a contribué à la sécurité de l’open source.

En résumé

En développant et en maintenant constamment les ensembles de règles qui alimentent Snyk Code, Snyk garantit une amélioration continue de la précision de la couverture. Nous veillons à rechercher sans cesse de nouveaux motifs de problèmes et à les intégrer, tout en maintenant les règles existantes. Pour nous, l’ensemble de règles fait partie du produit : sa création et sa maintenance sont notre responsabilité.

Essayez Snyk Code gratuitement dès aujourd’hui et découvrez comment notre plateforme de sécurité axée sur les développeurs vous aide à écrire du code de qualité plus efficacement que jamais.

Lancez-vous dans les compétitions Capture The Flag

Apprenez à résoudre des défis Capture The Flag en regardant à la demande notre atelier virtuel d’initiation.

1 Beller, M., Bholanath, R., McIntosh, S. et Zaidman, A. (2016). « Analyzing the state of static analysis: A large-scale evaluation in open source software ». 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering, SANER 2016, 1, 470–481. https://doi.org/10.1109/SANER.2016.105

Publié dans: