Skip to main content

Cómo SAS protege su código generado por IA

Escrito por
Headshot of Gerald Crescione

Gerald Crescione

feature snyk platform

15 de abril de 2024

0 minutos de lectura

Los asistentes de programación impulsados por IA generativa están transformando la perspectiva del mundo técnico. Esta innovación revolucionó la forma de trabajar de los desarrolladores y elevó la eficiencia y la velocidad a niveles nunca vistos. La IA plantea nuevos desafíos para los equipos de seguridad ante este aumento de velocidad. Estos modelos de asistentes de programación se entrenan con código de alta y baja calidad de toda la web. El código que generan, aunque funcional, incorpora a nuestros proyectos problemas externos de calidad y seguridad. La IA también introduce nuevos vectores de ataque que podrían causar daños importantes en las organizaciones. Para responder a esto, los equipos de seguridad deben estar a la altura del desafío y garantizar un uso seguro y responsable de esta potente herramienta.

Estas nuevas realidades hacen que los equipos se pregunten dónde usar la IA para el desarrollo de software, qué precauciones tomar para minimizar los resultados inconsistentes de estas herramientas y cómo seguir innovando con IA sin exponerse a los riesgos emergentes.

Hace poco, Snyk organizó un webinar en vivo sobre todos estos temas, moderado por Clinton Herget y con la participación de Brett Smith y Chris Knackstedt. Los ponentes analizaron cómo se ven estos riesgos del código generado por IA para las organizaciones en 2024 y qué medidas están tomando para proteger sus aplicaciones frente a estas nuevas amenazas.

Los riesgos del código generado por IA

Smith y Knackstedt coinciden en que la IA generativa revolucionó indudablemente el desarrollo de software, al convertirse en un programador en pareja para desarrolladores de todo el mundo. Su capacidad para ofrecer un punto de partida al escribir código desde cero agiliza considerablemente el proceso de desarrollo. Esperan que, en un futuro cercano, aprovechar el poder de la IA generativa permita a los desarrolladores acelerar su flujo de trabajo y mejorar la eficiencia general.

Knackstedt también espera ver los efectos positivos de las herramientas de IA, ya que ofrecen soluciones precisas para problemas específicos. Dijo: “Me ha impresionado muchísimo el avance de la IA generativa en tan solo un año, especialmente los nuevos casos de uso que las personas están imaginando para algunas de estas herramientas”.

Aunque la IA puede aumentar la velocidad cuando se usa adecuadamente, también puede causar graves problemas de seguridad si se usa de forma incorrecta. Las herramientas de IA hacen que sea mucho más difícil para los equipos de seguridad mantenerse al día con otros avances tecnológicos. Muchos todavía intentan asimilar la última transformación digital y ponerse al día con DevOps, la nube, CI/CD y muchas otras tecnologías y procesos. Estas transformaciones digitales en curso se están acelerando por el fenómeno de la IA generativa, lo que hace que sea más importante que nunca que estos equipos de seguridad se adapten.

Además de acelerar la transformación digital que ya está en marcha, el código generado por IA puede plantear amenazas de seguridad para las organizaciones. Esto se debe principalmente a dos motivos.

El código generado por IA no es seguro ni de alta calidad por naturaleza

Las herramientas de IA generativa usan datos de entrenamiento de alta y baja calidad de toda internet: código bien escrito por desarrolladores sénior, código con errores de principiantes e incluso ejemplos intencionales de código no funcional publicados en foros como Stack Overflow. Como la IA generativa ingiere una variedad tan amplia de código, los resultados tienen el mismo nivel de calidad que esperarías de un desarrollador júnior.

Los ponentes también hablaron sobre la importancia de entender que las herramientas de IA generativa actuales no pueden detectar vulnerabilidades de forma predeterminada. Herget hizo referencia a una investigación de Snyk que lo demuestra. Nuestro equipo creó una clase de código Java con varios métodos y llamó a uno de ellos “SQL injection”. Luego preguntamos a varios asistentes de programación con IA si el código tenía una vulnerabilidad de inyección SQL, y todos respondieron: “Sí”. Después, simplemente cambiamos el nombre de la clase sin alterar nada de la funcionalidad del código y los mismos asistentes respondieron: “No”. Este experimento demostró que la IA todavía no entiende el significado simbólico de determinados términos dentro del código.

Las amenazas externas pueden aprovecharse de los modelos de IA

Además de agravar los problemas existentes, la IA también trae consigo el riesgo de nuevos vectores de ataque. Los actores de amenazas pueden explotar la IA generativa mediante inyecciones de código, envenenamiento de datos, inyecciones de prompts y secuestros. Estos ataques pueden hacer que el modelo realice acciones maliciosas (como escribir código inseguro a propósito) o permitir que los actores maliciosos roben datos de entrenamiento sensibles.

Las alucinaciones, en las que las herramientas de IA generan referencias, bibliotecas de código o funciones que no existen, son otro problema de seguridad. Los actores maliciosos pueden aprovechar las alucinaciones de la IA mediante técnicas como la ocupación de nombres de bibliotecas. Por ejemplo, si la IA alucina una biblioteca de código inexistente, un atacante podría aprovecharse de ello creando una versión real con código malicioso. Entonces, el código generado por IA que haga referencia a esta biblioteca incorporaría ese código malicioso en la aplicación.

Cómo usar de forma segura el código generado por IA

Aunque plantea riesgos de seguridad, la IA generativa sigue siendo esencial para muchos de los desarrolladores actuales y no desaparecerá pronto. Ofrece un apoyo invaluable para ayudar a los equipos de desarrollo a superar el bloqueo creativo y funciona como un asistente de programación júnior. En definitiva, este apoyo permite a los desarrolladores programar más rápido que nunca.

Pero esta velocidad sin precedentes afecta directamente a los equipos de seguridad actuales. Significa que tienen más código que proteger en menos tiempo. Por eso, los equipos de seguridad deben aprovechar tácticas que les permitan proteger mejor el código generado por IA sin frenar la innovación técnica. Aquí tienes algunos consejos que estos equipos pueden aplicar para adaptarse a los ciclos de desarrollo acelerados y respaldados por IA de hoy:

Prioriza la capacitación de los desarrolladores

Para empezar, los equipos de desarrollo deben entender qué puede y qué no puede hacer cada herramienta de IA. Smith dijo: “Esto no es una solución mágica que resolverá todos tus problemas. No es un programa para desarrolladores sénior. Es un programa para colaboradores júnior que puede generar 170 líneas... tus desarrolladores deben entender que no están escribiendo código mejor ni más seguro que antes. Ahora simplemente tienen un autocompletado muy inteligente”.

Además, las organizaciones deben enseñar a los desarrolladores a proteger la propiedad intelectual y la privacidad cuando ingresan prompts relacionados con código en una herramienta de IA. Es fundamental que los equipos de desarrollo entiendan que la IA generativa usa los prompts como datos de entrenamiento y que, al aprovechar estos datos para responder a los prompts de otras personas, podría poner en riesgo activos sensibles.

El análisis del comportamiento es fundamental para medir el éxito de estas iniciativas de capacitación. Knackstedt dijo: “Tendremos que adoptar procesos y principios que recurran más al análisis del comportamiento, no solo del código, sino también de las personas que lo desarrollan y de quienes usan las soluciones a partir de las cuales se crea... [así], podremos tener una visión más integral del uso de la IA según su propósito de diseño y de su uso real en la práctica”.

Refuerza las medidas de seguridad probadas

Incorporar pruebas de seguridad al ciclo de vida del desarrollo ha sido importante desde la perspectiva de DevSecOps desde hace tiempo. Sin embargo, como la velocidad de inserción de código ha aumentado considerablemente debido a la IA, es más importante que nunca que las organizaciones consideren integrar pruebas de seguridad en sus pipelines de código.

Smith contó cómo su equipo usa el análisis estático de código para hacer frente a la velocidad sin precedentes de los problemas de código que genera el desarrollo asistido por IA. Dijo: “Con el auge de la IA generativa, cada vez más código vulnerable intenta entrar en nuestro pipeline a una velocidad que nunca habíamos visto. Cada vez que subes código, se analiza con Snyk y no puedes integrarlo hasta que pase las pruebas. Incluir Snyk Code (SAST) en nuestros controles automatizados es nuestra forma de combatir los aspectos dañinos de la IA generativa. Si no puedes distinguir necesariamente entre lo que genera una máquina y lo que genera una persona, entonces prueba todo. Haz pruebas más frecuentes y usa un conjunto de herramientas diseñado para seguir el ritmo del DevSecOps moderno, sin ralentizar a nadie”.

Implementa pruebas integrales

Los equipos también deberían considerar cómo verificar el código generado por IA mediante la combinación adecuada de herramientas automatizadas e intervención manual. Según Knackstedt: “El uso de la programación generativa debe abordarse con ciertas medidas de protección y consideración. En esencia, diría que hay que asegurarse de que una persona participe en el proceso, no aceptar a ciegas lo que producen estas soluciones de IA generativa y revisar el código a fondo”.

Smith explicó cómo SAS realiza estas revisiones exhaustivas mediante comprobaciones automatizadas de código con Snyk SAST y dos puntos de control con intervención humana. Dijo: “Implementamos reglas en GitHub que exigen que dos personas revisen el código antes de integrarlo; una de ellas debe ser la responsable del código. Desde mi perspectiva, alguien debe revisarlo antes de que entre y debe pasar las comprobaciones automatizadas”.

Enfócate en la coherencia

Desde la perspectiva de Smith, proteger los procesos de IA requiere mantener la coherencia de la seguridad en todas las áreas del desarrollo, desde la infraestructura como código hasta el código fuente y la documentación. Dijo: “Intentamos tratar todo de la misma manera... Si abordamos todo con el mismo nivel de importancia, aplicamos el mismo nivel de diligencia a sus métodos de seguridad”.

Knackstedt también destacó la importancia de la coherencia y explicó que es fundamental “garantizar cierto grado de estandarización en las herramientas que usas para crear tu código y protegerlas dentro de tu organización. Se trata de entender qué datos se usan para ajustar los modelos o complementarlos con contexto adicional dentro de tu organización”.

El futuro del código generado por IA

A medida que los equipos de desarrollo sigan usando IA generativa, es probable que veamos algunas tendencias de seguridad emergentes. Por ejemplo, seguramente aumentará el número de componentes de IA que se usan en las herramientas de seguridad para responder a problemas durante todo el SDLC. Knackstedt lo describió como “combatir fuego con fuego y encontrar oportunidades para incorporar IA e IA generativa en algunas de estas medidas de protección. Así puedes comprender las cosas con la misma rapidez y aplicar el mismo tipo de lógica”.

Además, no solo tu equipo de desarrollo usa IA generativa para escribir código. Es muy probable que tus proveedores externos también estén experimentando con esta tecnología. Smith explicó: “A medida que incorporamos proveedores en línea, empezamos a usar más software como servicio en nuestro SDLC... ¿Cómo sé que usan la IA de manera responsable?” Las mejores prácticas de seguridad de la cadena de suministro de software son más importantes que nunca debido a las posibles vulnerabilidades de IA que surgen al usar proveedores de SaaS.

Por otro lado, el éxito de proteger el código generado por IA dependerá, en última instancia, de un modelo de responsabilidad compartida, como el que aplicamos a la seguridad en la nube entre el usuario y el proveedor. Knackstedt dijo: “El uso generalizado de la inteligencia artificial en toda una organización exige integrar más algunas de estas prácticas de gestión de riesgos para garantizar una forma integral y responsable de implementar, administrar, monitorear y mantener la visibilidad de la inteligencia artificial”.

Esta conversación con Clinton Herget, Brett Smith y Chris Knackstedt apenas explora cómo la IA generativa afecta el desarrollo de código hoy y cómo usar de forma segura esta tecnología emergente. Para profundizar en cómo proteger el código generado por IA, consulta nuestro informe de 2023 sobre IA, seguridad y confianza en el desarrollo moderno.

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.

Publicado en: