Corrige automáticamente las vulnerabilidades del código con IA
14 de octubre de 2024
0 minutos de lecturaEn la biblioteca de talleres de SecRel para clientes de Snyk, tenemos uno llamado Breaking AI. En este taller se explica cómo los asistentes de IA generativa, como copilot y codium, pueden ayudar a los desarrolladores a escribir código más rápido. La gran conclusión del taller es que los asistentes de IA son como desarrolladores júnior recién salidos de sus boot camps de programación: tienen muchas ganas de ayudar y son muy serviciales, pero de verdad quieres revisar su código (sin ánimo de ofender a los desarrolladores júnior: los necesitamos y son geniales). En el taller, mostramos cómo combinar los asistentes de IA con Snyk te da un superpoder: escribir código rápido y seguro.
Para citar a un famoso chef, Snyk ahora “subió la apuesta” con su capacidad Deep Code AI Fix. Snyk Code siempre ha ofrecido buenas recomendaciones para corregir las vulnerabilidades de seguridad que detecta. Incluso te mostraba tres buenos ejemplos de otros proyectos de código abierto con la misma vulnerabilidad y cómo la corrigieron. Ahora, gracias a los datos cuidadosamente seleccionados por el equipo de investigación de seguridad de Snyk y a un modelo híbrido de IA que combina el poder de la IA generativa y la simbólica, además de modelos de aprendizaje automático, Snyk puede corregir automáticamente muchas vulnerabilidades de seguridad comunes desde la comodidad de tu IDE favorito.
En este blog, mostraré cómo aprovechar al máximo Deep Code AI Fix (DCAIF) en un proyecto de ejemplo en Java que usamos en nuestros talleres. Puedes encontrar el código fuente aquí. NOTA: Este proyecto tiene vulnerabilidades intencionales y no es apto para usarse en ningún entorno de producción.
Diversión con una app para programar conferencias
Si alguna vez asististe a una conferencia de tecnología o diste una charla en una, sabes que uno de los aspectos más desafiantes es crear y presentar el programa.
La app de referencia es una versión terrible de esto (¡NO soy un buen desarrollador de front-end!), pero es útil para mostrar cómo el código puede funcionar técnicamente y, al mismo tiempo, ser inseguro.
Es una app de Spring Boot que usa el motor de plantillas Thymeleaf. Al iniciar, genera al azar ponentes, títulos de charlas y descripciones usando la popular biblioteca faker. Los títulos y las descripciones de las charlas provienen del texto del libro The Hitchhiker’s Guide to the Galaxy. NOTA: Es posible que algunos títulos y descripciones no sean del todo aptos para el trabajo. ¡Ya te lo advertimos!
Cada ponente generado para el evento también tiene una página propia donde puedes ver la lista de sus charlas en la conferencia. Nos centraremos en esta parte de la app.
Para compilar y ejecutar la app, ejecuta lo siguiente:
Al ejecutar la app, además del banner habitual de Spring Boot y otros mensajes, verás algo como esto:
NOTA: No será exactamente así, ya que los ponentes y sus charlas se generan al azar cada vez que inicias la app.
Si haces clic en uno de los enlaces o lo copias y pegas, verás la página de un ponente con una lista de sus charlas:

A jugar: encuentra la vulnerabilidad
Revisa TalkController.java. Así se muestra la página de un ponente. ¿Puedes detectar la vulnerabilidad?
¡No queremos que tengas que depender de tus propios ojos! Queremos que los desarrolladores avancen rápido Y escriban código seguro.
Uso IntelliJ Idea para escribir mis aplicaciones en Java. También uso la extensión de Snyk para IDE. La buena noticia es que hay extensiones de Snyk para los IDE más populares, con compatibilidad para una amplia variedad de lenguajes de programación.
Si quieres seguir los pasos y no tienes una cuenta de Snyk, puedes crear una gratis aquí.
¿Mencioné que esta app tiene muchas vulnerabilidades? Es porque la usamos en nuestros talleres. La que quiero analizar es la de TalkController.java:

Muestra que se encontró una vulnerabilidad de Cross-site Scripting (XSS)
Muestra una diferencia de código de uno de los tres proyectos de código abierto que tienen la misma vulnerabilidad. Así se corrigió (la parte verde).
La línea roja ondulada indica dónde está la vulnerabilidad en el código.
Toda esta información es muy útil para resolver el problema. Sin embargo, observa el pequeño ícono de un rayo (⚡️) a la izquierda de la vulnerabilidad en el punto n.º 1. Indica que esta vulnerabilidad se puede corregir automáticamente.
Si pasas el cursor sobre la línea roja ondulada, verás la opción Corregir este problema:

Antes de ver el resultado de Deep Code AI Fix, veamos qué haría copilot por nosotros.
Este es el prompt que le di a copilot en la línea 42 y el código que inserta:
Esto podría funcionar contra ataques ingenuos, pero ¿funcionaría contra todos los tipos de ataques XSS? No estoy tan seguro. De hecho, al volver a ejecutar el análisis de Snyk, la vulnerabilidad XSS sigue ahí.
Veamos la corrección de Snyk:
Ahora, esto sí me gusta. Usa un enfoque idiomático y esperado con una biblioteca integrada de Spring Boot: HtmlUtils. Confío en que esto saneará por completo la entrada: username. Un nuevo análisis de Snyk muestra que la vulnerabilidad ya no está.

¡Así da gusto! La corrección automática de Snyk no solo resolvió la vulnerabilidad, sino que lo hizo de una manera acorde con el framework utilizado, en este caso, Spring Boot.
DCAIF no te hará más lento
En esta publicación, te mostré cómo Deep Code AI Fix de Snyk va más allá de recomendar una corrección y puede aplicarla por ti. También puedes confirmar el beneficio de la corrección al comprobar que la vulnerabilidad de seguridad original ya no está.
En Snyk, nos encantan los asistentes de IA, pero no son muy buenos en seguridad. Nuestra investigación muestra que las IA generativas tienden a generar código inseguro casi con la misma frecuencia que las personas: alrededor del 40 %. Esto tiene sentido, ya que las soluciones de IA generativa pura, como Copilot, entrenan sus modelos principalmente con código existente. El enfoque híbrido de Snyk, que incluye IA simbólica, IA generativa, aprendizaje automático y entrenamiento seleccionado por nuestro equipo de seguridad, ofrece resultados que priorizan la seguridad.
Empieza a proteger el código generado por IA
Crea tu cuenta gratuita de Snyk para empezar a proteger el código generado por IA en minutos. O agenda una demostración con un experto para descubrir cómo Snyk puede adaptarse a tus necesidades de seguridad para desarrolladores.
