À la découverte des technologies avancées derrière Snyk Code
Frank Fischer
20 octobre 2021
0 minutes de lectureSnyk Code est la solution de test de sécurité des applications statique (SAST) de Snyk. Elle introduit des technologies révolutionnaires dans le domaine du SAST. Elle s’appuie sur les recherches et les technologies développées par une spin-off de l’ETH (Zurich/Suisse), DeepCode, qui a rejoint Snyk fin 2020. Cet article présente ces technologies et explique comment Snyk soutient la communauté open source, mais aussi comment l’entreprise encourage et accompagne la communauté universitaire dans le domaine de l’analyse statique de programmes.
Le processus de Snyk Code
Le processus global est illustré ci-dessous.

Tout commence à gauche avec « Big Code », un ensemble d’entraînement constitué de centaines de milliers de dépôts open source et de leur historique de modifications, couvrant différents langages de programmation. La première étape consiste à transformer le code en représentations intermédiaires par l’analyse syntaxique. Snyk Code utilise un arbre syntaxique abstrait (AST) et un graphe d’événements (EG), ce qui permet une analyse sensible aux flux de données et tenant compte du contexte. Vous trouverez plus de détails dans les articles universitaires cités plus loin dans cet article. L’EG peut représenter différents langages de programmation.
L’étape suivante consiste à appliquer un solveur logique à l’aide de la représentation intermédiaire et de règles logiques. Le solveur présente plusieurs aspects remarquables. Premièrement, il s’agit d’un solveur propriétaire optimisé pour cette tâche, qui s’appuie sur des algorithmes dont la complexité temporelle est inférieure à celle des solveurs Datalog standards. Cela laisse entrevoir, deuxièmement, des performances d’exécution parmi les meilleures du secteur. Enfin, en tant que système fondé sur des contraintes, il génère des faits sémantiques qui peuvent servir d’entrées au processus d’apprentissage guidé par des humains.
Grâce à l’open source, Snyk Code exploite les connaissances de la communauté mondiale des développeurs pour détecter et résoudre les problèmes de sécurité. Par exemple, il repère même des combinaisons de sources et de puits qui ne figurent pas encore dans l’ensemble d’entraînement, mais pourraient constituer une menace. Il est également possible d’ajouter des règles pour les vulnérabilités zero-day, même en l’absence de données d’entraînement.
Le processus d’apprentissage fait intervenir les ingénieurs en sécurité de Snyk, qui travaillent avec des algorithmes d’apprentissage automatique pour générer et maintenir la base de connaissances. Ils ajoutent également des informations pour aider les développeurs à comprendre les problèmes détectés et à agir en conséquence.
En production, Snyk Code suit ce pipeline, mais n’utilise pas le code pour apprendre. Il applique plutôt la base de connaissances afin de produire des résultats précis en quelques minutes, voire quelques secondes. Et voilà ! C’est ainsi que nous avons fait de Snyk Code une solution SAST aussi puissante.
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.
Participation à des publications et conférences universitaires
En plus de développer cet outil SAST, l’équipe derrière Snyk Code contribue activement depuis de nombreuses années à des publications présentées dans les principales conférences sur l’apprentissage automatique et les langages de programmation. Elle a également publié plusieurs outils universitaires consacrés à l’analyse statique de programmes.
Voici une sélection de publications et de systèmes de recherche :
TFix: Learning to Fix Coding Errors with a Text-to-Text Transformer — Berabi, B., He, J., Raychev, V. et Vechev, M., juin 2021. TFix: Learning to Fix Coding Errors with a Text-to-Text Transformer. Dans Proceedings of the 38th International Conference on Machine Learning, PMLR 139 (p. 780-791).
Learning to find naming issues with big code and small supervision — He, J., Lee, C.C., Raychev, V. et Vechev, M., juin 2021. Learning to find naming issues with big code and small supervision. Dans Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation (p. 296-311).
Unsupervised Learning of API Aliasing Specifications — Eberhardt, J., Steffen, S., Raychev, V. et Vechev, M., juin 2019. Unsupervised learning of API aliasing specifications. Dans Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation (p. 745-759).
Scalable Taint Specification Inference with Big Code — Chibotaru, V., Bichsel, B., Raychev, V. et Vechev, M., juin 2019. Scalable taint specification inference with big code. Dans Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation (p. 760-774).
Inferring Crypto API Rules from Code Changes — Paletov, R., Tsankov, P., Raychev, V. et Vechev, M., 2018. Inferring crypto API rules from code changes. ACM SIGPLAN Notices, 53(4), p. 450-464.
Learning a Static Analyzer from Data — Bielik, P., Raychev, V. et Vechev, M., juillet 2017. Learning a static analyzer from data. Dans International Conference on Computer Aided Verification (p. 233-253). Springer, Cham.
Probabilistic Model for Code with Decision Trees — Raychev, V., Bielik, P. et Vechev, M., 2016. Probabilistic model for code with decision trees. ACM SIGPLAN Notices, 51(10), p. 731-747.
PHOG: Probabilistic Model for Code — Bielik, P., Raychev, V. et Vechev, M., juin 2016. PHOG: probabilistic model for code. Dans International Conference on Machine Learning (p. 2933-2942). PMLR.
Learning Programs from Noisy Data — Raychev, V., Bielik, P., Vechev, M. et Krause, A., 2016. Learning programs from noisy data. ACM Sigplan Notices, 51(1), p. 761-774.
Code Completion with Statistical Language Models — Raychev, V., Vechev, M. et Yahav, E., juin 2014. Code completion with statistical language models. Dans Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation (p. 419-428).
Predicting Program Properties from "Big Code" — Raychev, V., Vechev, M. et Krause, A., 2015. Predicting program properties from" big code". ACM SIGPLAN Notices, 50(1), p. 111-124.
Statistical Deobfuscation of Android Applications — Bichsel, B., Raychev, V., Tsankov, P. et Vechev, M., octobre 2016. Statistical deobfuscation of android applications. Dans Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security (p. 343-355).
DEBIN: Predicting Debug Information in Stripped Binaries — He, J., Ivanov, P., Tsankov, P., Raychev, V. et Vechev, M., octobre 2018. Debin: Predicting debug information in stripped binaries. Dans Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security (p. 1667-1680).
Outils accessibles au public
En outre, des outils de recherche ont été développés et publiés pendant la mise au point des technologies à la base de Snyk Code. Voici un aperçu de ces outils.
Remarque : Snyk n’est pas responsable de ces outils, et ne les maintient ni ne les héberge. Ils font partie de projets de recherche respectifs auxquels des membres de l’équipe Snyk ont participé.
JSNice
JSNice désobfusque des programmes JavaScript à l’aide de l’apprentissage automatique. Des dizaines de milliers de programmeurs dans le monde l’utilisent.

Nice2Predict
Nice2Predict est un framework open source efficace et évolutif pour la prédiction structurée, qui permet de créer plus rapidement de nouveaux moteurs statistiques.

DeGuard
DeGuard inverse le processus d’obfuscation de la structure des applications Android. Les analystes en sécurité l’utilisent au quotidien.

Pour conclure
Comme indiqué plus haut, l’équipe Snyk Code est à la pointe de la recherche. Elle contribue au domaine en publiant des articles scientifiques, en accueillant des étudiants et en participant à d’autres projets scientifiques. Découvrez vous-même les résultats de ses recherches : inscrivez-vous dès aujourd’hui à Snyk Code.
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.



