Skip to main content

À la découverte des technologies avancées derrière Snyk Code

Écrit par

Frank Fischer

blog feature snyk code dark

20 octobre 2021

0 minutes de lecture

Snyk 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.

Diagramme du workflow de Snyk Code montrant comment du code volumineux est analysé sous forme d’arbres, traité par des solveurs et des algorithmes de ML, puis évalué à l’aide de règles de sécurité sélectionnées

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.

Logo de JS Nice en blanc et violet

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.

Bannière violette avec le texte « NICE 2 Predict » en blanc

DeGuard

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

Logo DEGUARD bleu et blanc

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.

Lire la suite

blog feature snyk container custom base recommendations
Blog

Découvrez Evo Agentic AppSec : une sécurité au rythme du développement de l’IA

Le développement piloté par l’IA dépasse les workflows de sécurité traditionnels. L’AppSec agentique de Snyk s’appuie sur des agents de sécurité pour détecter, corriger et vérifier les vulnérabilités en continu, tandis que les équipes définissent les exigences.

blog feature ai violet
Blog

VulnBump : les agents IA peuvent-ils corriger les dépendances vulnérables sans casser le build ?

VulnBump évalue des agents IA sur 307 mises à niveau de dépendances réelles. Une correction n’est comptabilisée que si la vulnérabilité disparaît et que la compilation et les tests restent au vert.

Blog

Les modèles de pointe ont trouvé les vulnérabilités. Seul l’attaquant a trouvé les chaînes d’exploitation.

L’analyse statique a détecté les failles, mais seuls des tests d’attaque en conditions réelles ont prouvé comment elles pouvaient être enchaînées pour provoquer des compromissions. Comparaison d’Evo COS, de Claude Security et de Claude Code Security.