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.
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:
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:
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:
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.
¡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.
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.
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