Explora las tecnologías avanzadas detrás de Snyk Code
Frank Fischer
20 de octubre de 2021
0 minutos de lecturaSnyk Code es la solución de pruebas estáticas de seguridad de aplicaciones (SAST) de Snyk e incorpora tecnologías revolucionarias al campo de SAST. Se basa en la investigación y las tecnologías desarrolladas por DeepCode, una empresa derivada de la ETH (Zúrich, Suiza), que DeepCode se unió a Snyk a finales de 2020. Este artículo trata sobre estas tecnologías y explica cómo Snyk no solo contribuye a la comunidad de código abierto, sino que también promueve la colaboración con la comunidad académica en el campo del análisis estático de programas.
El proceso de Snyk Code
El proceso general se muestra a continuación.

Comienza a la izquierda con «Big Code», un conjunto de entrenamiento compuesto por cientos de miles de repositorios de código abierto y su historial de cambios, que abarca diversos lenguajes de programación. El primer paso consiste en transformar el código mediante el análisis sintáctico para obtener representaciones intermedias. Snyk Code usa un árbol de sintaxis abstracta (AST) y un grafo de eventos (EG), que permiten realizar un análisis sensible al flujo de datos y al contexto. Encontrarás más detalles en los artículos académicos citados más adelante. El EG puede representar diversos lenguajes de programación.
A continuación, se aplica un solucionador lógico usando la representación intermedia y reglas lógicas. Hay varios aspectos destacables de este solucionador. En primer lugar, es propietario y está optimizado para esta tarea, con algoritmos de menor complejidad temporal que los que se usan en los solucionadores Datalog estándar. En segundo lugar, esto se traduce en un rendimiento de ejecución líder en la industria. Por último, al ser un sistema basado en restricciones, genera hechos semánticos que pueden utilizarse como entrada para el proceso de aprendizaje guiado por personas.
Mediante el uso de código abierto, Snyk Code aprovecha el conocimiento de la comunidad global de desarrolladores para identificar y resolver problemas de seguridad. Incluso detecta combinaciones de orígenes y destinos que todavía no se usan en el conjunto de entrenamiento, pero que podrían representar una amenaza. Además, permite agregar reglas para exploits de día cero, aunque todavía no haya datos de entrenamiento disponibles.
En el proceso de aprendizaje participan los ingenieros de seguridad de Snyk, quienes trabajan con algoritmos de aprendizaje automático para generar y mantener la base de conocimientos. También agregan información adicional para ayudar a los desarrolladores a comprender los problemas y tomar medidas cuando se detectan.
En producción, Snyk Code sigue este flujo, pero no usa el código para aprender. En su lugar, aplica la base de conocimientos y genera resultados precisos en minutos o incluso segundos. ¡Y eso es todo! Así es como logramos que Snyk Code sea una solución SAST tan potente.
Comienza con Capture the Flag
Aprende a resolver desafíos de Capture the Flag con nuestro taller virtual 101 a pedido.
Participación en publicaciones y conferencias académicas
Además de crear esta herramienta SAST, el equipo detrás de Snyk Code lleva muchos años publicando activamente en las principales conferencias de aprendizaje automático y lenguajes de programación, y también ha publicado varias herramientas académicas para el análisis estático de programas.
Aquí tienes una selección de publicaciones y sistemas de investigación:
TFix: Aprendizaje para corregir errores de código con un transformador de texto a texto — Berabi, B., He, J., Raychev, V. y Vechev, M., junio de 2021. TFix: Aprendizaje para corregir errores de código con un transformador de texto a texto. En Actas de la 38.ª Conferencia Internacional sobre Aprendizaje Automático, PMLR 139 (pp. 780-791).
Aprendizaje para encontrar problemas de nombres con mucho código y poca supervisión — He, J., Lee, C.C., Raychev, V. y Vechev, M., junio de 2021. Aprendizaje para encontrar problemas de nombres con mucho código y poca supervisión. En Actas de la 42.ª Conferencia Internacional ACM SIGPLAN sobre Diseño e Implementación de Lenguajes de Programación (pp. 296-311).
Aprendizaje no supervisado de especificaciones de alias de API — Eberhardt, J., Steffen, S., Raychev, V. y Vechev, M., junio de 2019. Aprendizaje no supervisado de especificaciones de alias de API. En Actas de la 40.ª Conferencia ACM SIGPLAN sobre Diseño e Implementación de Lenguajes de Programación (pp. 745-759).
Inferencia escalable de especificaciones de taint con mucho código — Chibotaru, V., Bichsel, B., Raychev, V. y Vechev, M., junio de 2019. Inferencia escalable de especificaciones de taint con mucho código. En Actas de la 40.ª Conferencia ACM SIGPLAN sobre Diseño e Implementación de Lenguajes de Programación (pp. 760-774).
Inferencia de reglas para API de criptografía a partir de cambios en el código — Paletov, R., Tsankov, P., Raychev, V. y Vechev, M., 2018. Inferencia de reglas para API de criptografía a partir de cambios en el código. ACM SIGPLAN Notices, 53(4), pp.450-464.
Aprendizaje de un analizador estático a partir de datos — Bielik, P., Raychev, V. y Vechev, M., julio de 2017. Aprendizaje de un analizador estático a partir de datos. En Conferencia Internacional sobre Verificación Asistida por Computadora (pp. 233-253). Springer, Cham.
Modelo probabilístico de código con árboles de decisión — Raychev, V., Bielik, P. y Vechev, M., 2016. Modelo probabilístico de código con árboles de decisión. ACM SIGPLAN Notices, 51(10), pp.731-747.
PHOG: Modelo probabilístico de código — Bielik, P., Raychev, V. y Vechev, M., junio de 2016. PHOG: modelo probabilístico de código. En Conferencia Internacional sobre Aprendizaje Automático (pp. 2933-2942). PMLR.
Aprendizaje de programas a partir de datos ruidosos — Raychev, V., Bielik, P., Vechev, M. y Krause, A., 2016. Aprendizaje de programas a partir de datos ruidosos. ACM Sigplan Notices, 51(1), pp.761-774.
Autocompletado de código con modelos estadísticos de lenguaje — Raychev, V., Vechev, M. y Yahav, E., junio de 2014. Autocompletado de código con modelos estadísticos de lenguaje. En Actas de la 35.ª Conferencia ACM SIGPLAN sobre Diseño e Implementación de Lenguajes de Programación (pp. 419-428).
Predicción de propiedades de programas a partir de «Big Code» — Raychev, V., Vechev, M. y Krause, A., 2015. Predicción de propiedades de programas a partir de «Big Code». ACM SIGPLAN Notices, 50(1), pp.111-124.
Desofuscación estadística de aplicaciones Android — Bichsel, B., Raychev, V., Tsankov, P. y Vechev, M., octubre de 2016. Desofuscación estadística de aplicaciones Android. En Actas de la Conferencia ACM SIGSAC de 2016 sobre Seguridad de las Comunicaciones y las Computadoras (pp. 343-355).
DEBIN: Predicción de información de depuración en binarios sin símbolos — He, J., Ivanov, P., Tsankov, P., Raychev, V. y Vechev, M., octubre de 2018. DEBIN: Predicción de información de depuración en binarios sin símbolos. En Actas de la Conferencia ACM SIGSAC de 2018 sobre Seguridad de las Comunicaciones y las Computadoras (pp. 1667-1680).
Herramientas disponibles públicamente
Además, durante el desarrollo de las tecnologías que sustentan Snyk Code, se desarrollaron y publicaron herramientas de investigación. A continuación, encontrarás un resumen de estas herramientas.
Nota: Snyk no se hace responsable de estas herramientas ni las mantiene ni las aloja. Son parte de los respectivos proyectos de investigación en los que han participado miembros del equipo de Snyk.
JSNice
JSNice desofusca programas de JavaScript mediante aprendizaje automático. Lo usan decenas de miles de programadores en todo el mundo.

Nice2Predict
Nice2Predict es un framework de código abierto eficiente y escalable para la predicción estructurada, que permite crear nuevos motores estadísticos con mayor rapidez.

DeGuard
DeGuard revierte el proceso de ofuscación del diseño de aplicaciones Android. Los analistas de seguridad la usan a diario.

En resumen
Como se muestra arriba, el equipo de Snyk Code está a la vanguardia de la investigación y contribuye mediante la publicación de artículos científicos, la mentoría de estudiantes y la participación en otros proyectos científicos. Comprueba por ti mismo los resultados de su investigación: regístrate hoy en Snyk Code.
Comienza con Capture the Flag
Aprende a resolver desafíos de Capture the Flag con nuestro taller virtual 101 a pedido.
