ChatGPT hace código con SQL Injection, CoPilot mete Security Bugs y los programadores que usan Asistentes AI hacen más "Buggy Code"
Eso es lo que dice el paper publicado el 16 de Diciembre por investigadores de la Universidad de Stanford donde han hecho un experimento muy interesante con programadores para saber si activarles asistentes de Inteligencia Artificial para ayudarles a hacer código - como el caso de Copilot o ChatGPT - y ver después si su código es más o menos inseguro, corrector o incompleto.
Figura 1: ChatGPT hace código con SQL Injection, CoPilot mete Security
Bugs y los programadores que usan Asistentes AI hacen más "buggy code".
El resultado que arroja el artículo académico, titulado "Do users write more insecure code with AI assistants?" es que, a día de hoy, el código es más inseguro cuando los programadores se confían en el asistente de AI y le dejan meter más código, lo que lleva a que haya más bugs.
Probar esto es tan fácil como hacer una prueba con ChatGPT para ver si se come un SQL Injection de libro en un procedimiento en PHP para autenticar una página web, tal y como veis a continuación.
En el código no ha filtrado ninguno de los datos de entrada que va a introducir en la consulta un bug de SQL Injection, y ha hecho un programa que funciona, pero que no tienen ninguna medida de protección y seguridad del código para evitar SQL Injection. Eso es que no se ha leído aún nuestro libro.
Figura 4: Libro Hacking de Aplicaciones Web: SQL Injection de Enrique Rando y Chema Alonso |
Que Copilot mete bugs, ya lo sabíamos, como vimos en el artículo de nuestro compañero Fran Ramírez donde vimos tres ejemplos en Python de código inseguro, como por ejemplo código para crear un fichero temporal usando funciones inseguras, como en este ejemplo.
Lo que viene a demostrar este paper no es si los asistentes de AI generan "buggy code", que ya sabemos que sí, sino si el usarlos hace que los programadores incrementen el número de bugs, errores, códigos inseguros, etcétera que los programadores que no los usan. Y el resultado es que sí. Que para 5 experimentos, el código seguro generado por programadores que no usaban asistentes AI era del 79% mientras que el de los programadores con asistente AI era del 67%.
Figura 6: Con AI, código más inseguro que sin AI
Por supuesto, cada programador es único, y depende mucho de lo que haga la persona con su código, pero para 5 ejercicios de seguridad, que tienen que ver con cifrar datos, firmas digitalmente, hacer consultas SQL o meter un directorio en un sandbox, el resultado era el anterior.
Por supuesto, estamos al inicio del uso de asistentes de AI para programar, pero esto en dos años estará más que evolucionado y llegará un momento donde, probablemente, se alcanzará la Paridad Humana en programar, y entonces ya no habrá vuelta atrás, y programar sin asistentes de AI será una temeridad, pero por ahora, estamos en una fase mucho más temprana, así que cuidado con tu código.
¡Saludos Malignos!
Autor: Chema Alonso (Contactar con Chema Alonso)
5 comentarios:
Si, programan con errores pero, los corrigen si se lo especificas. La paridad humana está a 6 meses vista como mucho. Toca reciclarse y toca hacerlo ya. Tonto el último.
No hay que temer, hay que aprovechar la ocasión para crear cosas más grandes, mucho más grandes.
Europa debe ponerse las pilas y personalmente voy a implicarme totalmente en ello, se lo debo al niño que fui y que soñaba con este momento. Una IA no va superarme, hacer que me supere. Vienen tiempos fabuloso y emocionantes y yo estaré al pié del cañon, nos vemos en la línea!! Vamooooooososssss!!
Lo mismo que con el arte en todas sus modalidades, vamos a dar un paso de gigante hacia adelante, aunque parezca lo contrario.
Y si le específicas, además, que esté protegido contra SQL injection?
Posiblemente la query éste bastante filtrada.
En medio año, estará muy pulido, (y será de pago 😃).
De hecho, las traducciones que realiza son espectacularmente buenas, ya hoy en día, aunque haya que repasarlas
Contraataca google
Si se dan cueng en ChatGPT, no le especifica bien solo le pide hacer un codigo sin especificar que prepare la tabla para asi evitar el sql inject
Publicar un comentario