"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Corrija automáticamente las vulnerabilidades del código con IA

Corrija automáticamente las vulnerabilidades del código con IA

Publicado el 2024-11-08
Navegar:767

En la biblioteca de talleres para clientes de SecRel de Snyk, tenemos uno llamado Breaking AI. Este taller cubre cómo los asistentes de IA generativa, como copiloto y codium, pueden ayudar a los desarrolladores a escribir código más rápido. El gran remate del taller es que los asistentes de IA son como desarrolladores junior recién salidos de sus campos de entrenamiento de codificación: súper entusiastas y serviciales, pero - tú realmente quieres revisar su código (no hay sombra para los desarrolladores junior - nosotros Los necesito, ¡y son increíbles!). En el taller, mostramos cómo combinar asistentes de IA y Snyk te brinda un superpoder: escribir código de forma rápida y segura.

Para citar a un chef famoso, Snyk ahora "ha mejorado un poco" con su capacidad Deep Code AI Fix. Snyk Code siempre ha brindado buenos consejos de solución cuando encuentra una vulnerabilidad de seguridad. Incluso le daría tres buenas referencias de otros proyectos de código abierto con la misma vulnerabilidad y le mostraría cómo esos proyectos lo solucionaron. Ahora, gracias a los datos cuidadosamente seleccionados del equipo de investigación de seguridad de Snyk, un modelo de IA híbrido que combina el poder de la IA generativa y simbólica, así como modelos de aprendizaje automático, Snyk ahora puede corregir automáticamente muchas vulnerabilidades de seguridad comunes desde la comodidad de su hogar. IDE favorito.

En este blog, demostraré cómo aprovechar mejor Deep Code AI Fix (DCAIF) en un proyecto de ejemplo de Java que utilizamos en nuestros talleres. El código fuente se puede encontrar aquí. NOTA: Este proyecto es deliberadamente vulnerable de varias maneras y no es adecuado para su uso en ningún entorno de producción.

Diversión con una aplicación de programación de conferencias

Si alguna vez has asistido a una conferencia tecnológica o has hablado en una, sabes que uno de los aspectos más desafiantes es crear y presentar el cronograma.

La aplicación de referencia es una versión terrible de esto (¡NO soy un buen desarrollador front-end!), pero es útil para mostrar cómo el código puede funcionar técnicamente y ser inseguro al mismo tiempo.

Es una aplicación Spring Boot que utiliza el motor de plantillas Thymeleaf. Al inicio, genera oradores aleatorios, títulos de charlas y datos de descripción de charlas utilizando la popular biblioteca faker. Todos los títulos y descripciones de las charlas provienen del texto del libro La guía del autoestopista galáctico. NOTA: Es posible que no todos los títulos y descripciones sean 100% seguros para el trabajo. ¡Has sido advertido!

Cada orador generado para el evento también tiene una página dedicada donde puede ver una lista de sus charlas en la conferencia. Nos centraremos en esta parte de la aplicación.

Para compilar y ejecutar la aplicación, ejecute lo siguiente:

mvn clean install
mvn spring-boot:run

Cuando ejecutes la aplicación, además del banner habitual de Spring Boot y otros resultados, verás algo como esto:

Access talks for heath.davis at: http://localhost:8081/talks?username=heath.davis
Access talks for russell.bernier at: http://localhost:8081/talks?username=russell.bernier
Access talks for kenyetta.jones at: http://localhost:8081/talks?username=kenyetta.jones
Access talks for howard.bailey at: http://localhost:8081/talks?username=howard.bailey
Access talks for buddy.jast at: http://localhost:8081/talks?username=buddy.jast
Access talks for jeanice.kertzmann at: http://localhost:8081/talks?username=jeanice.kertzmann
Access talks for deborah.hamill at: http://localhost:8081/talks?username=deborah.hamill
Access talks for horacio.renner at: http://localhost:8081/talks?username=horacio.renner
Access talks for winfred.schuster at: http://localhost:8081/talks?username=winfred.schuster
Access talks for tommie.hane at: http://localhost:8081/talks?username=tommie.hane
Access talks for micah at: http://localhost:8081/talks?username=micah

NOTA: No será exactamente así, ya que los oradores y sus charlas se generan aleatoriamente cada vez que inicias la aplicación.

Si haces clic o copias/pegas uno de los enlaces, verás una página de orador con una lista de sus charlas:

Automatically fix code vulnerabilities with AI

Juguemos: encuentre la vulnerabilidad

Eche un vistazo a TalkController.java. Así es como se representa la página de un orador. ¿Puedes detectar la vulnerabilidad?

¡No queremos que tengas que depender de tus ojos! Queremos que los desarrolladores se muevan rápido Y escriban código seguro.

Utilizo IntelliJ Idea para escribir mis aplicaciones Java. También uso la extensión IDE de Snyk. La buena noticia es que existen extensiones de Snyk IDE para todos los IDE populares, que admiten una amplia gama de lenguajes de programación.

Si quieres seguirnos y no tienes una cuenta de Snyk, puedes crear una gratis aquí.

¿Mencioné que esta aplicación tiene muchas vulnerabilidades? Eso es porque lo usamos en nuestros talleres. En el que quiero centrarme es en TalkController.java:

Automatically fix code vulnerabilities with AI

  1. Muestra que se encontró una vulnerabilidad de secuencias de comandos entre sitios (XSS)
  2. Muestra una diferencia de uno de los tres proyectos de código abierto con la misma vulnerabilidad. Esto muestra cómo se solucionó (la parte verde).
  3. La línea ondulada roja indica dónde está la vulnerabilidad en el código.

Toda esta es información muy útil para resolver el problema. Sin embargo, observe un pequeño ícono de rayo (⚡️) a la izquierda de la vulnerabilidad en el n.° 1. Eso indica que esta vulnerabilidad se puede solucionar automáticamente.

Si colocas el mouse sobre el garabato rojo, verás la opción para Solucionar este problema:

Automatically fix code vulnerabilities with AI
Antes de ver el resultado de Deep Code AI Fix, veamos qué haría el copiloto por nosotros.

Aquí está el mensaje que le di al copiloto en la línea 42 y el código que inyecta:

// guard against XSS
username = username.replaceAll("", ">");

Este puede funcionar contra ataques ingenuos, pero ¿funcionará contra todos los tipos de ataques XSS? No estoy tan seguro. De hecho, cuando vuelvo a ejecutar el análisis de Snyk, la vulnerabilidad XSS sigue ahí.

Echemos un vistazo a la solución de Snyk:

String usernameStr = ""   HtmlUtils.htmlEscape(username)   "'s talks";
================================================


Ahora, este me gusta. Utiliza un enfoque idiomático y esperado con una biblioteca Spring Boot incorporada: HtmlUtils. Estoy seguro de que esto desinfectará completamente la entrada: nombre de usuario. Un nuevo escaneo de Snyk muestra que la vulnerabilidad ya no existe.

Automatically fix code vulnerabilities with AI
¡Pulgares arriba, de hecho! La corrección automática de Snyk no solo resolvió la vulnerabilidad, sino que lo hizo de una manera que coincide con el marco en uso: Spring Boot en este caso.

DCAIF no lo frenará

En esta publicación, le mostré cómo Deep Code AI Fix de Snyk va más allá de un simple consejo de corrección y puede solucionarlo en su nombre. También puede confirmar el beneficio de la solución al ver que la vulnerabilidad de seguridad original ya no existe.

En Snyk, nos encantan los asistentes de IA, pero no son muy buenos en seguridad. Nuestra investigación muestra que las generaciones de IA que existen tienden a generar código inseguro aproximadamente al mismo ritmo que los humanos: alrededor del 40%. Esto tiene sentido ya que las soluciones Gen AI pura como Copilot entrenan sus modelos principalmente en código existente. El enfoque híbrido de Snyk, que incluye IA simbólica, IA de generación, aprendizaje automático y capacitación seleccionada de nuestro equipo de seguridad, brinda a los resultados un enfoque que prioriza la seguridad.

Declaración de liberación Este artículo se reproduce en: https://dev.to/snyk/automatically-fix-code-vulnerabilities-with-ai-4dbf?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3