Skip to main content

Snyk en RSAC 2021: ML en SAST, ¿distracción o disrupción?

Escrito por

Tony Sleva

social security video

30 de junio de 2021

0 minutos de lectura

El aprendizaje automático es un término cargado de significado. Aunque ofrece un enorme potencial para impulsar las tecnologías, a menudo se usa como una palabra de moda en marketing para describir un reconocimiento de patrones con otro nombre. Por eso, cada vez es más difícil saber si aplicar el aprendizaje automático a una tecnología existente abrirá nuevos caminos o servirá para vender más licencias. Ese es el problema que explora Frank Fischer, de Marketing de Producto de Snyk Code, en su charla de RSAC 2021, ML en SAST: ¿disrupción o distracción?.

Las pruebas estáticas de seguridad de aplicaciones (SAST) son una tecnología que encuentra vulnerabilidades de seguridad en el código fuente que no está en ejecución. El objetivo de SAST es encontrar vulnerabilidades lo antes posible y en las primeras etapas del ciclo de vida del desarrollo de software (SDLC). Como analiza el código fuente, es el lugar perfecto para aplicar IA simbólica y permitir que las herramientas SAST ejecuten reglas en las bases de código para detectar problemas.

Últimamente, hemos visto mucho entusiasmo en torno a GitHub Copilot. Esta solución se basa en un modelo de aprendizaje automático, pero parece comprender mejor el código subyacente. Como muestran los ejemplos compartidos en redes sociales, a veces hace sugerencias increíbles y otras veces actúa como un loro que repite frases que ya escuchó. Esto muestra lo que es posible hoy y cuáles son las limitaciones actuales, y refuerza el punto central de la charla de RSAC.

Aunque SAST existe desde hace mucho tiempo, no ha tenido grandes disrupciones, sino solo mejoras graduales. Hemos visto mejoras constantes en la precisión, pero a costa de un mayor consumo de recursos computacionales. Esto significa que los análisis que son sólidos (sin falsos positivos) y completos (sin vulnerabilidades sin detectar) pueden tardar horas o días en finalizar. Además, las herramientas SAST suelen ser muy buenas para detectar problemas, pero muy malas para ofrecer soluciones prácticas. Entonces, la pregunta es: ¿puede el aprendizaje automático generar la disrupción que SAST necesita para ser rápido, preciso y ofrecer soluciones prácticas?

Sin embargo, antes de responder, es importante analizar cómo funcionan las herramientas SAST. Para encontrar vulnerabilidades, necesitan una base de conocimiento con reglas y métodos para detectar patrones maliciosos. Esta base debe ser mantenida por expertos que investigan vulnerabilidades y agregan nuevas reglas como IA simbólica. La gestión de la base de conocimiento aún no se puede automatizar, pero sí se puede mejorar con aprendizaje automático.

Al aprovechar una enorme cantidad de repositorios de código fuente (todos disponibles mediante código abierto) y aplicar aprendizaje automático, los expertos que mantienen las bases de conocimiento de SAST pueden aumentar exponencialmente la cantidad de vulnerabilidades que detectan. Al aprender de miles de millones de líneas de código, la solidez y la exhaustividad pueden dar un gran salto. Este tipo de salto es una disrupción.

Pero detectar más vulnerabilidades parece una mejora, no una disrupción. La verdadera disrupción estaría en aplicar el aprendizaje automático para automatizar las correcciones de código. Su implementación no puede detenerse en la detección: también debe aplicarse a las correcciones de esas vulnerabilidades. Si se aplica correctamente a SAST, el aprendizaje automático puede no solo detectar patrones incorrectos, sino también identificar los patrones correctos que deben aplicarse para resolverlos. Eso es una disrupción.

La última disrupción que puede ofrecer el aprendizaje automático es la capacidad de mejorar la precisión y la utilidad de las soluciones a escala. Cada día contamos con más capacidad computacional (por ejemplo, GPU), mejores algoritmos y más modelos preentrenados (por ejemplo, GPT-3 o GitHub Copilot) para que el aprendizaje automático funcione a la escala necesaria y reduzca el tiempo de análisis a minutos.

Con base en todo esto, Frank concluye que el aprendizaje automático realmente será una disrupción en el campo de SAST, ya que mejorará la velocidad, la precisión y la utilidad de las soluciones. Pero incluso con la capacidad de generar disrupción, puede convertirse en una distracción si se implementa de forma incompleta. Al evaluar tu próxima solución SAST, tendrás que considerar algunas cosas:

  • ¿Tu solución SAST ya aplica algún nivel de aprendizaje automático? Si no es así, ¿está en la hoja de ruta? El aprendizaje automático debe usarse para detectar y corregir vulnerabilidades. Si no está previsto para ambas cosas, la solución SAST no estará a la altura.

  • ¿Tu solución SAST ya ofrece soluciones prácticas? ¿Y lo hace directamente desde las herramientas que usan los desarrolladores? Si no es así, aplicar aprendizaje automático solo permitirá detectar más vulnerabilidades sin ofrecer soluciones, lo que implica más trabajo para los desarrolladores y una menor tasa de adopción.

  • ¿Tu solución SAST se integra directamente en un pipeline automatizado? Si no es así, seguirá habiendo un cuello de botella, sin importar lo sólida que sea la implementación del aprendizaje automático. Además, en el reciente informe de Snyk El estado de la seguridad de aplicaciones nativas de la nube, descubrimos que el 72 % de los equipos totalmente automatizados corrigió las vulnerabilidades críticas en menos de una semana. Esta cifra puede ser incluso mayor con el aprendizaje automático.

Mira la charla completa de RSAC 2021 para obtener más información sobre el aprendizaje automático en SAST. Si buscas una herramienta SAST que ya ofrezca velocidad, precisión y soluciones prácticas, regístrate y empieza a usar Snyk Code gratis.

Empieza con Capture the Flag

Aprende a resolver desafíos de Capture the Flag viendo nuestro taller virtual introductorio a pedido.