Seguridad

“Yo no soy un robot, que lo dice ChatGPT”: El captcha cognitivo de los conjuntos semánticos

Uno de los mecanismos más utilizados para evitar los ataques de fuerza bruta o de diccionario mediante el uso de herramientas automatizadas son los Captchas o los “Yo no soy un Robot“. Por supuesto, cuando quieres hacer un exploit que requiere del uso de muchas llamadas a una web, es necesario saltarse esas protecciones, por eso se considera un “bug” o una “weakness” cuando es fácil saltarse esas protecciones.

Figura 1: “Yo no soy un robot, que lo dice ChatGPT.”
El captcha cognitivo de los conjuntos semánticos

En el pasado, he publicado muchos artículos sobre los diferentes bugs que van apareciendo al respecto con las diferentes soluciones de Captcha o de “Yo no soy un Robot” que se van implementando en las diferentes webs. Y a medida que se han ido saltando, hemos ido metiendo diferentes formas de “demostrar que eres un humano y no un robot“. Primero con los captchas visuales que permiten reconocer letras de formas retorcidas, que con la evolución de las técnicas de visión artificial se han ido superando uno a uno. 
O usando las opciones de accesibilidad que permiten, como contaban en el pasado mis compañeros Óscar Bralo, Álvaro Nuñez-Romero y Ioseba Palop que lograron saltarse el servicio de Google reCaptcha con el servicio Cognitivo de Google Voice Recognition. Y es que el avance de los algoritmos de inteligencia artificial ha hecho que cada vez sea más complejo probar que es un humano y no una IA para los servicios de Captcha. Y por ende, que para los humanos sea cada vez menos usable utilizarlos.
El captcha cognitivo de los conjuntos semánticos
Uno de los que utiliza la administración pública española es un captcha cognitivo basado en conjuntos semánticos de palabras. O lo que es lo mismo, reconocer qué palabra tiene que ver con un determinado tema. Así que te puedes ir a una página de la administración pública y encontrarte algo como esto:

Figura 3: Qué opción se corresponde con “Clima”

Vale, si te has criado en España, seguro que no tienes ninguna opción de equivocarte, así que no parece poco usable, pero como siempre, si es usable, tampoco parece muy complicado automatizar la respuesta a estos temas. Y en este caso, como os podéis imaginar, basta con preguntarle a ChatGPT para que nos de la respuesta correcta.

Figura 4: ChatGPT dice que la respuesta correcta es Clima

Sí, no es nada complicado. De hecho, no haría falta ni ponérselo tan bonito como se lo he puesto yo, que he reformulado la pregunta. Basta con copiar y pegar la parte de la pregunta que lleva las opciones. Algo como esto. Este es el desafío cognitivo.

Figura 5: ¿Qué tal vas de Mundo Clásico?

Copiamos desde el “cuál” hasta el final, y se lo enchufamos directamente a ChatGPT, para obtener la respuesta que “todos vosotros, seres humanos”, conocíais.

Figura 6: Frédéric Chopin es la respuesta de este captcha

Tal vez alguno podría haber pensado que José, por eso de ser un nombre bíblico que podría haber sido una persona concreta de la historia, pero la respuesta es Chopin. No sé cuántas personas de la tercera edad se habrían confundido, pero desde luego ChatGPT no lo hace. Y la última.

Figura 7: ¿Leche, Trompeta, Yate, Caballo o Frente? Elige.

Con enviárselo a ChatGPT, resuelto el misterio. No hay ninguna complicación en este tipo de protecciones para un modelo LLM como ChatGPT, como os podéis imaginaros. Así que es trivial saltarse este tipo de Captchas solo con utilizar las herramientas de inteligencia artificial que están hoy en día a nuestro alcance.

Figura 8: Respuesta “Frente”

Llegados a este punto, la pregunta es: Si este sistema de Captcha ha demostrado que no es ninguna solución para detener a alguien que quiera hacer un ataque automatizado… ¿debemos implementarlo y forzar errores a los humanos de verdad aunque sean pocos? Y es que cuando implementemos medidas de seguridad, debemos tener en cuenta que los atacantes cuentan ya con herramientas de Machine Learning/ Inteligencia Artificial igual que todo el mundo.

Figura 9: Libro de Machine Learning aplicado a Ciberseguridad de
Carmen TorranoFran Ramírez, Paloma Recuero, José Torres y Santiago Hernández.
Es decir, cualquier script automatizado utilizando ChatGPT puede saltarse esta protección de conjuntos semánticos, así que vale para cero como protección contra los malos. ¿Debemos por tanto meter una protección que solo entorpece la usabilidad metiendo pasos extras a las personas? ¿O consideramos que obligar al atacante a usar una llamada de API a un LLM como ChatGPT sirve para algo?
¡Saludos Malignos!
Autor: Chema Alonso (Contactar con Chema Alonso)  

Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.