Einblicke in die fortschrittlichen Technologien hinter Snyk Code
Frank Fischer
20. Oktober 2021
0 Min. LesezeitSnyk Code ist die Static-Application-Security-Testing-Lösung (SAST) von Snyk und bringt einige revolutionäre Technologien in den SAST-Bereich. Die Lösung basiert auf Forschung und Technologien eines Spin-offs der ETH Zürich in der Schweiz: DeepCode, das sich Ende 2020 Snyk angeschlossen hat. In diesem Artikel geht es um diese Technologien und darum, wie Snyk nicht nur die Open-Source-Community unterstützt, sondern auch die akademische Community im Bereich der statischen Programmanalyse fördert und mit ihr zusammenarbeitet.
Der Prozess von Snyk Code
Der Gesamtprozess ist unten dargestellt.

Links beginnt der Prozess mit „Big Code“: einem Trainingsdatensatz aus Hunderttausenden Open-Source-Repositories und deren Änderungshistorie, der zahlreiche Programmiersprachen abdeckt. Im ersten Schritt wird der Code durch Parsing in Zwischenrepräsentationen umgewandelt. Snyk Code verwendet einen abstrakten Syntaxbaum (AST) und einen Ereignisgraphen (EG). Damit ist eine datenfluss-sensitive, kontextbezogene Analyse möglich. Weitere Einzelheiten finden Sie in den wissenschaftlichen Arbeiten, die später in diesem Artikel zitiert werden. Der EG kann verschiedene Programmiersprachen darstellen.
Anschließend kommt ein Logik-Solver zum Einsatz, der die Zwischenrepräsentation und logische Regeln verwendet. Dieser Solver weist mehrere bemerkenswerte Eigenschaften auf. Erstens ist er proprietär und wurde für diese Aufgabe optimiert. Die verwendeten Algorithmen haben eine geringere Zeitkomplexität als die Algorithmen herkömmlicher Datalog-Solver. Zweitens ermöglicht das eine branchenführende Laufzeit. Schließlich generiert das constraint-basierte System semantische Fakten, die als Eingabe für den von Menschen gesteuerten Lernprozess dienen können.
Snyk Code nutzt Open Source, um das Wissen der globalen Entwickler-Community auszuwerten und Sicherheitsprobleme zu erkennen und zu beheben. Dabei findet es beispielsweise Kombinationen aus Quellen und Senken, die im Trainingsdatensatz noch nicht vorkommen, aber eine potenzielle Bedrohung darstellen könnten. Außerdem lassen sich Regeln für Zero-Day-Exploits hinzufügen, selbst wenn noch keine Trainingsdaten verfügbar sind.
Am Lernprozess sind die Snyk-Sicherheitsexperten beteiligt, die mit Machine-Learning-Algorithmen arbeiten, um die Wissensdatenbank zu erstellen und zu pflegen. Sie ergänzen außerdem Informationen, die Entwicklerinnen und Entwicklern helfen, gefundene Probleme zu verstehen und Maßnahmen zu ergreifen.
In der Produktion durchläuft Snyk Code zwar dieselbe Pipeline, verwendet den Code aber nicht zum Lernen. Stattdessen greift die Lösung auf die Wissensdatenbank zurück und liefert präzise Ergebnisse in wenigen Minuten oder sogar Sekunden. So ist es uns gelungen, Snyk Code zu einer so leistungsstarken SAST-Lösung zu machen.
Starten Sie mit Capture the Flag
Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Herausforderungen lösen.
Beiträge zu wissenschaftlichen Publikationen und Konferenzen
Neben der Entwicklung dieses SAST-Tools veröffentlicht das Team hinter Snyk Code seit vielen Jahren regelmäßig Beiträge auf führenden Konferenzen zu Machine Learning und Programmiersprachen. Außerdem hat es mehrere wissenschaftliche Tools zur statischen Programmanalyse publiziert.
Hier finden Sie eine Auswahl an Publikationen und Forschungssystemen:
TFix: Learning to Fix Coding Errors with a Text-to-Text Transformer — Berabi, B., He, J., Raychev, V. und Vechev, M., Juni 2021. TFix: Learning to Fix Coding Errors with a Text-to-Text Transformer. In Proceedings of the 38th International Conference on Machine Learning, PMLR 139(S. 780–791).
Learning to find naming issues with big code and small supervision — He, J., Lee, C.C., Raychev, V. und Vechev, M., Juni 2021. Learning to find naming issues with big code and small supervision. In Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation (S. 296–311).
Unsupervised Learning of API Aliasing Specifications — Eberhardt, J., Steffen, S., Raychev, V. und Vechev, M., Juni 2019. Unsupervised learning of API aliasing specifications. In Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation (S. 745–759).
Scalable Taint Specification Inference with Big Code — Chibotaru, V., Bichsel, B., Raychev, V. und Vechev, M., Juni 2019. Scalable taint specification inference with big code. In Proceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation (S. 760–774).
Inferring Crypto API Rules from Code Changes — Paletov, R., Tsankov, P., Raychev, V. und Vechev, M., 2018. Inferring crypto API rules from code changes. ACM SIGPLAN Notices, 53(4), S. 450–464.
Learning a Static Analyzer from Data — Bielik, P., Raychev, V. und Vechev, M., Juli 2017. Learning a static analyzer from data. In International Conference on Computer Aided Verification (S. 233–253). Springer, Cham.
Probabilistic Model for Code with Decision Trees — Raychev, V., Bielik, P. und Vechev, M., 2016. Probabilistic model for code with decision trees. ACM SIGPLAN Notices, 51(10), S. 731–747.
PHOG: Probabilistic Model for Code — Bielik, P., Raychev, V. und Vechev, M., Juni 2016. PHOG: probabilistic model for code. In International Conference on Machine Learning (S. 2933–2942). PMLR.
Learning Programs from Noisy Data — Raychev, V., Bielik, P., Vechev, M. und Krause, A., 2016. Learning programs from noisy data. ACM Sigplan Notices, 51(1), S. 761–774.
Code Completion with Statistical Language Models — Raychev, V., Vechev, M. und Yahav, E., Juni 2014. Code completion with statistical language models. In Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation (S. 419–428).
Predicting Program Properties from "Big Code" — Raychev, V., Vechev, M. und Krause, A., 2015. Predicting program properties from" big code". ACM SIGPLAN Notices, 50(1), S. 111–124.
Statistical Deobfuscation of Android Applications — Bichsel, B., Raychev, V., Tsankov, P. und Vechev, M., Oktober 2016. Statistical deobfuscation of android applications. In Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security (S. 343–355).
DEBIN: Predicting Debug Information in Stripped Binaries — He, J., Ivanov, P., Tsankov, P., Raychev, V. und Vechev, M., Oktober 2018. Debin: Predicting debug information in stripped binaries. In Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security (S. 1667–1680).
Öffentlich verfügbare Tools
Während der Entwicklung der Technologien hinter Snyk Code wurden außerdem Forschungstools entwickelt und veröffentlicht. Die folgende Liste gibt einen Überblick über diese Tools.
Hinweis: Snyk ist nicht für diese Tools verantwortlich und pflegt oder hostet sie nicht. Vielmehr sind sie Teil der jeweiligen Forschungsprojekte, an denen Mitglieder des Snyk-Teams mitgewirkt haben.
JSNice
JSNice deobfuskiert JavaScript-Programme mithilfe von Machine Learning. Das Tool wird weltweit von Zehntausenden Programmierern genutzt.

Nice2Predict
Nice2Predict ist ein effizientes und skalierbares Open-Source-Framework für strukturierte Vorhersagen, mit dem sich neue statistische Engines schneller entwickeln lassen.

DeGuard
DeGuard macht die Layout-Verschleierung von Android-Apps rückgängig. Sicherheitsexperten nutzen das Tool täglich.

Zusammenfassung
Wie oben gezeigt, ist das Team von Snyk Code in der Forschung führend. Es leistet mit wissenschaftlichen Publikationen, der Betreuung von Studierenden und der Beteiligung an weiteren Forschungsprojekten einen wichtigen Beitrag. Erleben Sie die Ergebnisse dieser Forschung selbst und melden Sie sich noch heute für Snyk Code an.
Starten Sie mit Capture the Flag
Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Herausforderungen lösen.



