La función de corrección automática de Snyk Code, Snyk Agent Fix, acaba de mejorar
23 de abril de 2024
0 minutos de lecturaSnyk Agent Fix es una función impulsada por IA que ofrece correcciones con un solo clic y verificadas por seguridad dentro de Snyk Code, una herramienta SAST en tiempo real centrada en los desarrolladores. Como una de las primeras funciones semiautomatizadas de corrección de seguridad en el IDE del mercado, la beta pública de Snyk Agent Fix se anunció como parte de Snyk Launch en abril de 2023. La función ofrecía correcciones para los problemas de seguridad detectados en tiempo real por Snyk Code, directamente en el código y dentro del IDE. Desde entonces, hemos trabajado para mejorar esta potente funcionalidad, que representa un cambio importante para quienes usan Snyk Code. Hoy, después de casi 12 meses de comentarios de usuarios de la beta pública y mejoras iterativas, nos complace anunciar nuevas mejoras del modelo de nuestra función de corrección automática, probada en batalla. Ahora, Snyk Agent Fix ofrece lo siguiente:
Compatibilidad con 8 lenguajes
Una tecnología innovadora, con patente en trámite, que mejora significativamente la precisión no solo de Snyk Agent Fix, sino también de otros modelos con los que la probamos, como GPT-4, GPT-3.5 y Mixtral.
IA multimodal (nuestro reconocido enfoque de IA híbrida) para maximizar la robustez mediante la diversidad de modelos.
Cómo abordar la necesidad de correcciones automáticas sin complicaciones con Snyk Agent Fix
Snyk Code analiza el código fuente en el que trabajan los desarrolladores en cada etapa del ciclo de vida del desarrollo de software (SDLC), desde el IDE hasta el SCM y los pipelines de CI/CD. Así ofrece precisión, velocidad y corrección proactiva inigualables para identificar problemas de seguridad en el ámbito SAST.
Según las políticas de seguridad pertinentes, una vez identificados nuevos problemas de seguridad, los desarrolladores buscarán corregirlos. Sin embargo, corregir problemas de seguridad no siempre es sencillo. Se necesita entender cómo funciona el código dentro del contexto general de la base de código, cuál es el problema de seguridad y cuál es la mejor manera de corregirlo.
Snyk Code ofrece a los desarrolladores explicaciones detalladas de los problemas de seguridad detectados y ejemplos de correcciones provenientes de repositorios reales con licencias permisivas, que pueden servirles de inspiración para resolver sus problemas. Antes de Snyk Agent Fix, Snyk Code ya había dado un paso importante para reducir la carga cognitiva de los desarrolladores. Sin embargo, estos todavía tenían que encontrar por su cuenta la manera de corregir los problemas de seguridad.
Por eso, con Snyk Agent Fix buscamos facilitar aún más la corrección de vulnerabilidades para los desarrolladores. Esta función está impulsada por el componente LLM de nuestro motor DeepCode AI (que combina IA simbólica y aprendizaje automático, incluido nuestro LLM). Snyk Agent Fix ayudó a los desarrolladores a crear software seguro sin complicaciones, al permitirles corregir problemas de seguridad de forma automática, inicialmente en proyectos de JavaScript y TypeScript. Quienes usaban Snyk Code en Visual Studio Code o Eclipse podían seleccionar ⚡Fix this issue cuando aparecían nuevos problemas de seguridad.
Lo que aprendimos de nuestro lanzamiento pionero de la versión beta inicial
Cuando Snyk presentó Snyk Agent Fix en acceso anticipado, empresas de muchos tamaños y sectores distintos adoptaron la función, que ofrecía a los equipos una forma única de corregir problemas de seguridad: resolverlos directamente en el IDE antes de que estas vulnerabilidades llegaran a producción y automatizar su corrección.
Aunque nos adelantamos a otros al lanzar una función de corrección automática de código impulsada por IA, todas las funciones beta están, por naturaleza, en fase de mejora, y queríamos seguir perfeccionando Snyk Agent Fix. Entre nuestras prioridades estaban mejorar la consistencia y la corrección de las soluciones propuestas, perfeccionar las reglas para los lenguajes, ampliar la cobertura de lenguajes, extender la accesibilidad (en ese momento solo estaba disponible en el IDE) y mejorar la experiencia del usuario.
Había varias áreas por abordar. En estrecha colaboración y tomando en cuenta los comentarios de los usuarios, decidimos empezar por los aspectos de mayor impacto:
Mejorar la calidad de los resultados
Incluir más lenguajes.
La calidad y la seguridad de las correcciones son fundamentales en una función como Snyk Agent Fix. Por eso, decidimos redoblar nuestros esfuerzos para mejorar la profundidad y amplitud de las correcciones que proponemos.
Crear una función de corrección automática confiable en un mundo de IA
Un nuevo modelo LLM para más velocidad y precisión
Cuando se lanzó Snyk Agent Fix, usaba una versión del modelo T5 de Google, que los principales expertos en seguridad de Snyk habían ajustado ampliamente. ¿Por qué empezamos con este modelo? Para ponerlo en perspectiva, nos adelantamos a la industria y llevábamos dos años trabajando en Snyk Agent Fix antes de su lanzamiento, cuando los LLM todavía estaban en sus inicios. Por eso, entre las opciones disponibles en ese momento, consideramos que T5 era el modelo que mejor se ajustaba a nuestras necesidades. Lo ajustamos con proyectos de código abierto con licencias permisivas que ya habían corregido problemas de seguridad, para enseñarle distintas formas de resolverlos.
Antes de que Snyk Agent Fix propusiera una corrección de seguridad, el motor de IA híbrida de Snyk, DeepCode AI, usaba reglas estrictas y algoritmos de IA simbólica basados en conocimiento para volver a analizar la corrección del código e incorporar nuestras predicciones de seguridad. De esta forma, reducía la posibilidad de alucinaciones y correcciones inadecuadas, a las que todos los LLM, incluido Snyk Agent Fix, son susceptibles. Seguimos verificando el código que propone Snyk Agent Fix incluso después de pasar a un modelo LLM diferente y más avanzado (consulta más abajo).
A partir de lo que aprendimos en las primeras etapas de Snyk Agent Fix, decidimos pasar a modelos LLM para generar correcciones más precisas de los problemas de seguridad. Probamos todos los LLM potencialmente viables e interesantes para descubrir cuál ofrecía los mejores resultados al combinarlo con nuestros métodos de ajuste. Por su precisión y velocidad, elegimos StarCoder como modelo base y lo ajustamos con nuestros conjuntos de datos de entrenamiento.
Las mejoras en los resultados fueron increíbles:

Snyk Agent Fix puede corregir automáticamente distintos tipos de problemas de seguridad y de código. Como se muestra en las filas de la imagen anterior, clasificamos estos problemas en 5 categorías: AST, interprocedural, local, SecurityLocal y SecurityFlow*, para resumir los resultados de la evaluación. Para cada problema encontrado, Snyk Agent Fix genera 5 correcciones posibles. Las 3 columnas de la imagen anterior —pass@1, pass@3 y pass@5— indican el porcentaje de resultados que contienen 1 corrección precisa entre 1, 3 y 5 opciones, respectivamente.
Para proteger la precisión de Snyk Agent Fix, verificamos todas las predicciones con nuestras reglas y nuestra base de conocimiento creadas por expertos (representadas en nuestra IA simbólica). Una predicción supera las verificaciones si genera código sintácticamente correcto y analizable, y corrige el problema de seguridad correspondiente sin introducir nuevos problemas. Esta es una ventaja distintiva de Snyk: usamos nuestro propio analizador de código y nuestra propia base de conocimiento, ambos impulsados por IA simbólica (lee aquí por qué esto es importante), para filtrar las correcciones incorrectas y las alucinaciones generadas por el LLM que impulsa Snyk Agent Fix, antes de que cualquier corrección defectuosa llegue a nuestros clientes.
Esto hace que Snyk Agent Fix sea más robusto y seguro que otras soluciones de corrección automática que analizan código y dependen exclusivamente de LLM para corregir problemas, o incluso para verificarlos y corregirlos. Encontrarás información detallada sobre nuestras evaluaciones y categorías de problemas en el artículo de investigación sobre la tecnología CodeReduce de Snyk (consulta más abajo).
Una tecnología innovadora, con patente en trámite, que mejora significativamente la precisión incluso de GPT-4
También trabajamos para mejorar la calidad de los resultados optimizando la manera en que los datos del usuario (es decir, el código pertinente) se procesaban y se incorporaban al prompt del LLM que impulsa Snyk Agent Fix. Esta tecnología propietaria de Snyk, llamada “CodeReduce”, tiene ahora una patente en trámite. CodeReduce aprovecha el análisis de programas para enfocar el mecanismo de atención del LLM únicamente en las partes del código necesarias para realizar la corrección correspondiente. Así, ayuda al LLM a centrarse en un fragmento de código más corto que contiene el defecto detectado y el contexto necesario.
En otras palabras, Snyk vuelve a eliminar el ruido y simplificar el proceso para lograr resultados eficientes y de gran impacto. Por eso, CodeReduce reduce drásticamente la cantidad de código que Snyk Agent Fix debe procesar, lo que ayuda a mejorar la calidad de las correcciones en todos los modelos probados (incluidos GPT-3.5, GPT-4 y Mixtral) y disminuye las probabilidades de alucinaciones. De hecho, mejoramos la precisión de GPT-4 hasta en un impresionante 20% (consulta la imagen a continuación). Pronto hablaremos más sobre el funcionamiento de CodeReduce. ¡No te lo pierdas!

Compatibilidad con 8 lenguajes y mejoras generales en reglas y datos
Además de cambiar el modelo base y mejorar el enfoque de Snyk Agent Fix para lograr resultados de mayor calidad, también queríamos ampliar y profundizar las correcciones. Para ello, colaboramos con nuestro equipo de etiquetado a fin de mejorar la calidad de nuestra base de datos de correcciones y verificar si los resultados generados por Snyk Agent Fix eran precisos, lo que nos ayudó a seguir mejorando el modelo.
Gracias a nuestro enfoque multidimensional para mejorar la función de corrección automática de Snyk Code, pasamos de contar con cientos de reglas, pero solo compatibles con JavaScript/TypeScript (que consideramos un solo lenguaje), a admitir muchas más reglas en 7 lenguajes adicionales, con mayor confianza en cada regla. Ahora ofrecemos compatibilidad para las siguientes amenazas del OWASP Top 10:
JavaScript/TypeScript
Java
Python
C/C++
C# (compatibilidad limitada)
Go (compatibilidad limitada)
APEX (compatibilidad limitada)
También mejoramos la forma en que recopilamos y procesamos los datos. Gracias a estas mejoras, la precisión de nuestro LLM alcanzó un promedio del 80%, lo que facilita que nuestra IA simbólica verifique la seguridad de las correcciones sugeridas por el LLM, como se explicó anteriormente. ¿Qué significa esto para los usuarios? Significa que pueden esperar que las sugerencias de corrección de DeepCode AI resuelvan las vulnerabilidades correspondientes el 100% de las veces y en menos tiempo que antes.
¿Qué sigue?
A pesar de los grandes avances que hemos logrado para crear una función de corrección automática confiable, seguiremos mejorando, optimizando e iterando nuestro LLM de Snyk Agent Fix. Además, trabajaremos en la experiencia del usuario dentro del IDE y fuera de él. ¿Qué significa esto?
Mejoras del modelo para lograr correcciones aún más rápidas y eficaces
Los LLM siguen evolucionando rápidamente y todo el tiempo se lanzan modelos nuevos o mejorados. StarCoder 2, una versión más reciente de StarCoder, ya está disponible y la pondremos a prueba. Si durante las pruebas descubrimos que es posible lograr más mejoras, probablemente pasaremos a StarCoder 2. Además del LLM, también estamos invirtiendo en lo siguiente:
Ofrecer correcciones más rápidas a los usuarios mediante la optimización de nuestro modelo neuronal y servidor, para reducir la latencia de generación de correcciones de un promedio de aproximadamente 12 segundos a menos de 6 segundos.
Ampliar la cobertura de reglas y mejorar la calidad de las correcciones para nuestros principales lenguajes: JavaScript/TypeScript, Java, Python, C/C++ y C#.
Una experiencia optimizada en el IDE para corregir problemas fácilmente
Ahora, quienes usan Snyk Agent Fix pueden ver las correcciones propuestas con mayor facilidad, elegir entre distintas opciones la que mejor se adapte a sus necesidades y obtener una vista previa de los posibles cambios en el código, todo en el mismo flujo y antes de aplicar la corrección propuesta.

Todas estas capacidades ayudan a los desarrolladores a programar más rápido, con menos esfuerzo y de forma más segura. Sin embargo, lo que realmente los ayuda (además de la precisión de Snyk Agent Fix) es la comprensión del contexto del código por parte de nuestro LLM. A diferencia de otras herramientas de seguridad que solo entienden el código como texto sin formato, Snyk Agent Fix entiende el código de los desarrolladores y puede corregirlo como lo haría un desarrollador: con cambios que tienen la mayor probabilidad de compilar y aplicando la corrección de código más eficaz y eficiente para resolver los problemas de seguridad.
Los usuarios de todos los IDE compatibles actualmente, incluidos VS Code y Eclipse, podrán disfrutar de una corrección de vulnerabilidades simplificada y automática. También ampliaremos el acceso a quienes usan IDE de JetBrains.
Una experiencia de corrección automática lista para los usuarios, con precisión pionera, alta seguridad y amplia aplicabilidad
Durante el último año, hemos trabajado arduamente para atender los comentarios de los usuarios sobre Snyk Agent Fix y hemos logrado grandes avances para ampliar y profundizar los resultados, así como para mejorar la calidad general de las correcciones automáticas de DeepCode AI. Ahora, los usuarios pueden disfrutar de una mayor aplicabilidad, resultados más precisos de corrección automática y correcciones más seguras, todo directamente desde el IDE:
8 lenguajes compatibles.
Nuestra tecnología CodeReduce, con patente en trámite, aumenta la precisión de la corrección automática no solo para Snyk Agent Fix, sino también para otros modelos de IA como GPT-4.
Usamos varios modelos de IA para reducir los riesgos inherentes a los LLM y a la homogeneidad de los modelos. Además, verificamos los resultados de nuestro LLM con nuestro motor de análisis estático y análisis simbólicos de IA basados en conocimiento, que filtran las correcciones incorrectas y las alucinaciones generadas por el modelo antes de que lleguen al usuario final.
Una función de corrección automática que, como la nuestra, se ha puesto a prueba exhaustivamente en la versión beta ofrece una experiencia de usuario superior no solo en teoría, sino también en la práctica. Y aunque estamos orgullosos de nuestros logros, no pensamos conformarnos. Seguiremos invirtiendo en mejorar los resultados de Snyk Agent Fix y la experiencia de nuestros usuarios.
Los clientes actuales de Snyk Code pueden probar Snyk Agent Fix en el IDE activando Sugerencias de corrección de Snyk Code en la configuración de Snyk Preview (consulta la imagen a continuación). Encontrarás más información en nuestra documentación.

¿No tienes Snyk Code, pero quieres empezar a corregir automáticamente de forma confiable a la velocidad de la IA? Regístrate para crear una cuenta de Snyk aquí y empieza hoy mismo a disfrutar de un flujo de trabajo más proactivo, sencillo y ágil.
Toma el control de la seguridad de la IA con Snyk
Descubre cómo Snyk ayuda a proteger el código generado por IA de tus equipos de desarrollo y ofrece a los equipos de seguridad visibilidad y controles completos.
*Para analizar el código, Snyk Agent Fix usa Snyk Code. En la versión de septiembre de 2023, Snyk Code implementa 156 comprobaciones distintas. Las clasificamos en cinco categorías según el tipo de análisis que requiere cada una y si comprueba propiedades de seguridad:
AST: La mayoría de las comprobaciones de AST solo pueden realizarse en el árbol de sintaxis abstracta. Muchas de estas reglas exigen propiedades de las extensiones VueJS o React del lenguaje e incluyen comprobaciones como la ausencia de etiquetas, nombres de variables duplicados y patrones que, por lo general, no dependen del análisis del flujo de control o de datos del programa.
Interprocedural: Las comprobaciones interprocedurales también dependen del análisis entre procedimientos, pero, a diferencia de las comprobaciones locales, las propiedades que verifican siempre se encuentran en distintas funciones o métodos del programa. Estas reglas incluyen comprobaciones de discrepancias entre la firma de un método, su implementación o su uso. (Ten en cuenta que en nuestra investigación publicada sobre la nueva tecnología CodeReduce, Interprocedural se denomina Filewide).
Local: Las comprobaciones locales usan análisis entre procedimientos para detectar que ciertos valores incorrectos se transferirían a métodos que no los aceptarían, que no se liberan recursos o que ciertas expresiones no tienen efecto o siempre producen resultados con una semántica inesperada.
SecurityLocal: Al igual que las comprobaciones locales, las comprobaciones SecurityLocal verifican el uso incorrecto de API desde una perspectiva de seguridad, así como otros tipos de configuraciones de seguridad incorrectas. Por lo general, lo hacen siguiendo el conjunto de todas las llamadas a métodos en un objeto o los valores que se pasan como parámetros a llamadas de métodos o funciones.
SecurityFlow: Las comprobaciones SecurityFlow suelen ser las más complejas que admite el analizador estático seleccionado. Esta categoría incluye todas las reglas de análisis de taint que implican el análisis del flujo de datos entre procedimientos desde un origen de datos, así como la detección de diversos patrones de sanitización de datos.
