LLMs: ¿Un enfoque (im)perfectamente humano de la codificación segura?

Publicado el 01 de febrero de 2024
por Pieter Danhieux
ESTUDIO DE CASO

LLMs: ¿Un enfoque (im)perfectamente humano de la codificación segura?

Publicado el 01 de febrero de 2024
por Pieter Danhieux
Ver recurso
Ver recurso
Ordenador portátil a oscuras con rayas de luz que salen de la pantalla.
Ordenador portátil a oscuras con rayas de luz que salen de la pantalla.

Una versión de este artículo apareció en Lectura oscura. Se ha actualizado y sindicado aquí.

Desde que se empezó a hablar de las últimas herramientas de inteligencia artificial, los desarrolladores y los curiosos de la programación las han utilizado para generar código con sólo pulsar un botón. Los expertos en seguridad no tardaron en señalar que, en muchos casos, el código que se generaba era de mala calidad y vulnerable, y que en manos de personas poco concienciadas en materia de seguridad podría provocar una avalancha de aplicaciones y desarrollos web inseguros que llegaría a consumidores desprevenidos.

Y luego están los que tienen suficientes conocimientos de seguridad como para utilizarlos para, bueno, hacer el mal. Por cada hazaña alucinante de la IA, parece que hay un contragolpe de la misma tecnología que se utiliza con fines nefastos. Phishing, vídeos de estafas falsas, creación de malware, travesuras de script kiddie en general... estas actividades perturbadoras se pueden conseguir mucho más rápido, con barreras de entrada más bajas.

No cabe duda de que hay muchos titulares que promocionan estas herramientas como revolucionarias o, al menos, como las mejores cuando se comparan con la habilidad humana "media". Aunque parece inevitable que la tecnología de IA al estilo LLM cambie la forma en que abordamos muchos aspectos del trabajo -no solo el desarrollo de software-, debemos dar un paso atrás y considerar los riesgos más allá de los titulares. 

Y como compañero de codificación, sus defectos son quizá su atributo más "humano".

En sus soluciones predominan los patrones de codificación deficientes

ChatGPT se basa en décadas de código y bases de conocimiento existentes, por lo que no es de extrañar que, a pesar de toda su maravilla y misterio, también sufra los mismos problemas comunes a los que se enfrenta la gente cuando navega por el código. Los patrones de codificación deficientes son el pan de cada día, y sigue haciendo falta un conductor consciente de la seguridad para generar ejemplos de codificación seguros haciendo las preguntas adecuadas y ofreciendo la ingeniería de consulta adecuada. 

Incluso entonces, no hay garantía de que los fragmentos de código proporcionados sean precisos y funcionales desde una perspectiva de seguridad; la tecnología es propensa a la alucinación, incluso inventando bibliotecas inexistentes cuando se le pide que realice algunas operaciones JSON específicas, como descubrió Mike Shema. Esto podría dar lugar a "alucinaciones" por parte de los actores de amenazas, que estarían encantados de crear malware disfrazado de la biblioteca inventada recomendada con total confianza por ChatGPT.

En última instancia, tenemos que enfrentarnos a la realidad de que, en general, no hemos esperado que los desarrolladores sean lo suficientemente conscientes de la seguridad, ni nosotros, como industria, les hemos preparado adecuadamente para escribir código seguro por defecto. Esto se pondrá de manifiesto en la enorme cantidad de datos de formación introducidos en ChatGPT, y podemos esperar resultados de seguridad similares, al menos al principio. Los desarrolladores tendrían que ser capaces de identificar los fallos de seguridad y, o bien corregirlos ellos mismos, o bien diseñar mejores avisos para obtener un resultado más sólido.

El primer estudio a gran escala realizado por investigadores de la Universidad de Stanford en el que se examina cómo interactúan los usuarios con un asistente de codificación de inteligencia artificial para resolver una serie de funciones relacionadas con la seguridad corrobora esta idea:

"Observamos que los participantes que tenían acceso al asistente de IA eran más propensos a introducir vulnerabilidades de seguridad en la mayoría de las tareas de programación, aunque también más propensos a calificar sus respuestas inseguras como seguras en comparación con los de nuestro grupo de control."

Esto habla de un nivel de confianza por defecto en el resultado de las herramientas de codificación de IA como productoras de código que siempre es intrínsecamente seguro, cuando en realidad no lo es.


Entre esto y las inevitables amenazas derivadas de la IA que impregnarán nuestro futuro, ahora más que nunca, los desarrolladores deben perfeccionar sus habilidades de seguridad y elevar el listón de la calidad del código sin importar su origen.

El camino hacia el desastre de la filtración de datos está empedrado de buenas intenciones

No debería sorprendernos que los compañeros de codificación de IA sean populares, sobre todo porque los desarrolladores se enfrentan a una responsabilidad cada vez mayor, plazos más ajustados y la ambición de la innovación de una empresa descansando sobre sus hombros. Sin embargo, incluso con las mejores intenciones, la falta de concienciación sobre la seguridad a la hora de utilizar la IA para la codificación conducirá inevitablemente a problemas de seguridad evidentes. Todos los desarrolladores que utilicen herramientas de IA/ML generarán más código, y su nivel de riesgo para la seguridad dependerá de su nivel de conocimientos. Las organizaciones deben ser muy conscientes de que las personas sin formación generarán sin duda código más rápidamente, pero también aumentarán la velocidad de la deuda técnica de seguridad.

Incluso nuestra prueba preliminar (abril de 2023) con ChatGPT ha revelado que generará errores muy básicos que podrían tener consecuencias devastadoras. Cuando le pedimos que construyera una rutina de inicio de sesión en PHP utilizando una base de datos MySQL, el código funcional se generó rápidamente. Sin embargo, por defecto almacenaba las contraseñas en texto plano en una base de datos, almacenaba las credenciales de conexión a la base de datos en el código, y utilizaba un patrón de codificación que podría dar lugar a una inyección SQL (aunque, hizo algún nivel de filtrado en los parámetros de entrada y escupió errores de base de datos). Todos los errores de novato por cualquier medida:

Las recomendaciones de ChatGPT no son necesariamente seguras, y pueden ser peligrosas en algunos casos.


Otras indicaciones aseguraron que se enmendaran los errores, pero se necesitan conocimientos importantes de seguridad para corregirlos. El uso generalizado y sin control de estas herramientas no es mejor que soltar a desarrolladores junior en tus proyectos, y si este código está construyendo infraestructura sensible o procesando datos personales, entonces estamos ante una bomba de relojería.

Por supuesto, al igual que los desarrolladores junior aumentan sin duda sus habilidades con el tiempo, esperamos que las capacidades de la IA/ML mejoren. Dentro de un año, puede que no cometa errores de seguridad tan obvios y sencillos. Sin embargo, eso tendrá el efecto de aumentar drásticamente la habilidad de seguridad requerida para rastrear los errores de seguridad más graves, ocultos y no triviales que todavía está en peligro de producir.

Seguimos estando mal preparados para detectar y corregir las vulnerabilidades de seguridad, y la IA aumenta la brecha.

Aunque se ha hablado mucho de "cambiar a la izquierda" durante muchos años, el hecho es que, en la mayoría de las organizaciones, hay una falta significativa de conocimientos prácticos de seguridad entre la cohorte de desarrollo, y debemos trabajar más duro para proporcionar las herramientas adecuadas y la educación para ayudarles en su camino.

En la actualidad, no estamos preparados para los errores de seguridad que estamos acostumbrados a encontrar, por no hablar de los nuevos problemas derivados de la IA, como la inyección inmediata y la alucinación en cuclillas, que representan vectores de ataque completamente nuevos que están listos para despegar como un reguero de pólvora. Las herramientas de codificación de IA representan el futuro del arsenal de codificación de un desarrollador, pero la educación para manejar estas armas de productividad de forma segura debe llegar ahora.

¿Quiere saber más? Descargue nuestro último libro blanco.
Ver recurso
Ver recurso

Autor

Pieter Danhieux

Pieter Danhieux es un experto en seguridad mundialmente reconocido, con más de 12 años de experiencia como consultor de seguridad y 8 años como instructor principal de SANS enseñando técnicas ofensivas sobre cómo atacar y evaluar organizaciones, sistemas y personas en busca de debilidades de seguridad. En 2016, fue reconocido como una de las personas más cool de la tecnología en Australia (Business Insider), galardonado como Profesional de Seguridad Cibernética del Año (AISA - Asociación Australiana de Seguridad de la Información) y tiene certificaciones GSE, CISSP, GCIH, GCFA, GSEC, GPEN, GWAPT, GCIA.

¿Quieres más?

Sumérjase en nuestras últimas ideas sobre codificación segura en el blog.

Nuestra amplia biblioteca de recursos tiene como objetivo potenciar el enfoque humano de la mejora de la codificación segura.

Ver blog
¿Quieres más?

Obtenga las últimas investigaciones sobre la seguridad impulsada por los desarrolladores

Nuestra amplia biblioteca de recursos está repleta de recursos útiles, desde libros blancos hasta seminarios web, que le ayudarán a iniciarse en la codificación segura orientada a los desarrolladores. Explórela ahora.

Centro de recursos

LLMs: ¿Un enfoque (im)perfectamente humano de la codificación segura?

Publicado el 01 de febrero de 2024
Por Pieter Danhieux

Una versión de este artículo apareció en Lectura oscura. Se ha actualizado y sindicado aquí.

Desde que se empezó a hablar de las últimas herramientas de inteligencia artificial, los desarrolladores y los curiosos de la programación las han utilizado para generar código con sólo pulsar un botón. Los expertos en seguridad no tardaron en señalar que, en muchos casos, el código que se generaba era de mala calidad y vulnerable, y que en manos de personas poco concienciadas en materia de seguridad podría provocar una avalancha de aplicaciones y desarrollos web inseguros que llegaría a consumidores desprevenidos.

Y luego están los que tienen suficientes conocimientos de seguridad como para utilizarlos para, bueno, hacer el mal. Por cada hazaña alucinante de la IA, parece que hay un contragolpe de la misma tecnología que se utiliza con fines nefastos. Phishing, vídeos de estafas falsas, creación de malware, travesuras de script kiddie en general... estas actividades perturbadoras se pueden conseguir mucho más rápido, con barreras de entrada más bajas.

No cabe duda de que hay muchos titulares que promocionan estas herramientas como revolucionarias o, al menos, como las mejores cuando se comparan con la habilidad humana "media". Aunque parece inevitable que la tecnología de IA al estilo LLM cambie la forma en que abordamos muchos aspectos del trabajo -no solo el desarrollo de software-, debemos dar un paso atrás y considerar los riesgos más allá de los titulares. 

Y como compañero de codificación, sus defectos son quizá su atributo más "humano".

En sus soluciones predominan los patrones de codificación deficientes

ChatGPT se basa en décadas de código y bases de conocimiento existentes, por lo que no es de extrañar que, a pesar de toda su maravilla y misterio, también sufra los mismos problemas comunes a los que se enfrenta la gente cuando navega por el código. Los patrones de codificación deficientes son el pan de cada día, y sigue haciendo falta un conductor consciente de la seguridad para generar ejemplos de codificación seguros haciendo las preguntas adecuadas y ofreciendo la ingeniería de consulta adecuada. 

Incluso entonces, no hay garantía de que los fragmentos de código proporcionados sean precisos y funcionales desde una perspectiva de seguridad; la tecnología es propensa a la alucinación, incluso inventando bibliotecas inexistentes cuando se le pide que realice algunas operaciones JSON específicas, como descubrió Mike Shema. Esto podría dar lugar a "alucinaciones" por parte de los actores de amenazas, que estarían encantados de crear malware disfrazado de la biblioteca inventada recomendada con total confianza por ChatGPT.

En última instancia, tenemos que enfrentarnos a la realidad de que, en general, no hemos esperado que los desarrolladores sean lo suficientemente conscientes de la seguridad, ni nosotros, como industria, les hemos preparado adecuadamente para escribir código seguro por defecto. Esto se pondrá de manifiesto en la enorme cantidad de datos de formación introducidos en ChatGPT, y podemos esperar resultados de seguridad similares, al menos al principio. Los desarrolladores tendrían que ser capaces de identificar los fallos de seguridad y, o bien corregirlos ellos mismos, o bien diseñar mejores avisos para obtener un resultado más sólido.

El primer estudio a gran escala realizado por investigadores de la Universidad de Stanford en el que se examina cómo interactúan los usuarios con un asistente de codificación de inteligencia artificial para resolver una serie de funciones relacionadas con la seguridad corrobora esta idea:

"Observamos que los participantes que tenían acceso al asistente de IA eran más propensos a introducir vulnerabilidades de seguridad en la mayoría de las tareas de programación, aunque también más propensos a calificar sus respuestas inseguras como seguras en comparación con los de nuestro grupo de control."

Esto habla de un nivel de confianza por defecto en el resultado de las herramientas de codificación de IA como productoras de código que siempre es intrínsecamente seguro, cuando en realidad no lo es.


Entre esto y las inevitables amenazas derivadas de la IA que impregnarán nuestro futuro, ahora más que nunca, los desarrolladores deben perfeccionar sus habilidades de seguridad y elevar el listón de la calidad del código sin importar su origen.

El camino hacia el desastre de la filtración de datos está empedrado de buenas intenciones

No debería sorprendernos que los compañeros de codificación de IA sean populares, sobre todo porque los desarrolladores se enfrentan a una responsabilidad cada vez mayor, plazos más ajustados y la ambición de la innovación de una empresa descansando sobre sus hombros. Sin embargo, incluso con las mejores intenciones, la falta de concienciación sobre la seguridad a la hora de utilizar la IA para la codificación conducirá inevitablemente a problemas de seguridad evidentes. Todos los desarrolladores que utilicen herramientas de IA/ML generarán más código, y su nivel de riesgo para la seguridad dependerá de su nivel de conocimientos. Las organizaciones deben ser muy conscientes de que las personas sin formación generarán sin duda código más rápidamente, pero también aumentarán la velocidad de la deuda técnica de seguridad.

Incluso nuestra prueba preliminar (abril de 2023) con ChatGPT ha revelado que generará errores muy básicos que podrían tener consecuencias devastadoras. Cuando le pedimos que construyera una rutina de inicio de sesión en PHP utilizando una base de datos MySQL, el código funcional se generó rápidamente. Sin embargo, por defecto almacenaba las contraseñas en texto plano en una base de datos, almacenaba las credenciales de conexión a la base de datos en el código, y utilizaba un patrón de codificación que podría dar lugar a una inyección SQL (aunque, hizo algún nivel de filtrado en los parámetros de entrada y escupió errores de base de datos). Todos los errores de novato por cualquier medida:

Las recomendaciones de ChatGPT no son necesariamente seguras, y pueden ser peligrosas en algunos casos.


Otras indicaciones aseguraron que se enmendaran los errores, pero se necesitan conocimientos importantes de seguridad para corregirlos. El uso generalizado y sin control de estas herramientas no es mejor que soltar a desarrolladores junior en tus proyectos, y si este código está construyendo infraestructura sensible o procesando datos personales, entonces estamos ante una bomba de relojería.

Por supuesto, al igual que los desarrolladores junior aumentan sin duda sus habilidades con el tiempo, esperamos que las capacidades de la IA/ML mejoren. Dentro de un año, puede que no cometa errores de seguridad tan obvios y sencillos. Sin embargo, eso tendrá el efecto de aumentar drásticamente la habilidad de seguridad requerida para rastrear los errores de seguridad más graves, ocultos y no triviales que todavía está en peligro de producir.

Seguimos estando mal preparados para detectar y corregir las vulnerabilidades de seguridad, y la IA aumenta la brecha.

Aunque se ha hablado mucho de "cambiar a la izquierda" durante muchos años, el hecho es que, en la mayoría de las organizaciones, hay una falta significativa de conocimientos prácticos de seguridad entre la cohorte de desarrollo, y debemos trabajar más duro para proporcionar las herramientas adecuadas y la educación para ayudarles en su camino.

En la actualidad, no estamos preparados para los errores de seguridad que estamos acostumbrados a encontrar, por no hablar de los nuevos problemas derivados de la IA, como la inyección inmediata y la alucinación en cuclillas, que representan vectores de ataque completamente nuevos que están listos para despegar como un reguero de pólvora. Las herramientas de codificación de IA representan el futuro del arsenal de codificación de un desarrollador, pero la educación para manejar estas armas de productividad de forma segura debe llegar ahora.

¿Quiere saber más? Descargue nuestro último libro blanco.

Nos gustaría contar con su permiso para enviarle información sobre nuestros productos y/o temas relacionados con la codificación segura. Siempre trataremos sus datos personales con el máximo cuidado y nunca los venderemos a otras empresas con fines de marketing.

Enviar
Para enviar el formulario, habilite las cookies "Analytics". Siéntase libre de desactivarlas de nuevo una vez que haya terminado.