← Últimos artículos
💻 computer science

GraphQLer: Enhancing GraphQL Security with Context-Aware API Testing

GraphQLer es un marco de trabajo de pruebas de seguridad automatizadas de código abierto que mejora la seguridad de las API de GraphQL mediante la construcción de grafos de dependencias tipados a partir de esquemas en vivo para sintetizar cadenas de vulnerabilidades de múltiples pasos, superando así a herramientas existentes como ZAP y EvoMaster en la detección de fallos complejos y dependientes del estado, tales como IDOR, UAF e inyecciones.

Autores originales: Omar Tsai, Jianing Li, Tsz Tung Cheung, Lejing Huang, Hao Zhu, Jianrui Xiao, Iman Sharafaldin, Mohammad A. Tayebi

Publicado 2026-08-05
📖 4 min de lectura☕ Lectura para el café

Autores originales: Omar Tsai, Jianing Li, Tsz Tung Cheung, Lejing Huang, Hao Zhu, Jianrui Xiao, Iman Sharafaldin, Mohammad A. Tayebi

Artículo original bajo licencia CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta es una explicación generada por IA del artículo a continuación. No ha sido escrita ni avalada por los autores. Para mayor precisión técnica, consulte el artículo original. Leer descargo de responsabilidad completo

Imagina el internet como una ciudad gigante y bulliciosa donde diferentes programas informáticos (aplicaciones) se comunican constantemente entre sí para compartir información. Durante años, estas conversaciones siguieron un mapa estrico y predecible: si querías una foto, pedías la carpeta "foto"; si querías un mensaje, pedías la carpeta "mensaje". Esto era como pedir de un menú donde cada plato tiene un nombre y una ubicación fija. Pero recientemente, una nueva forma de hablar llamada GraphQL se volvió popular. En lugar de un menú fijo, GraphQL es como una máquina expendedora mágica que cambia de forma. Puedes pedir exactamente lo que quieres, y ella intentará construirlo para ti en el acto. El problema es que, debido a que esta máquina es tan flexible, a veces olvida revisar quién está parado frente a ella. Una máquina expendedora regular podría darte un refresco solo a alguien con una moneda, pero esta máquina mágica podría entregarte accidentalmente un diario privado o una cuenta bancaria si lo pides de la manera correcta. Aquí es donde entran los investigadores de seguridad, tratando de averiguar cómo engañar a la máquina para que revele sus secretos sin realmente destruir la ciudad.

El artículo que estás a punto de leer presenta a un nuevo detective digital llamado GraphQLer. Piensa en la mayoría de los escáneres de seguridad como turistas torpes que se acercan a la máquina expendedora, presionan un botón al azar y ven qué sucede. Si presionan "Refresco" y obtienen un refresco, siguen adelante. Si presionan "Agua" y obtienen un error, se rinden. Nunca se dan cuenta de que para obtener el "Tesoro Secreto", primero tienes que presionar "Comprar Refresco", luego "Obtener Recibo" y después presionar "Tesoro Secreto". Las herramientas antiguas son demasiado tontas para conectar los puntos; prueban cada botón de forma aislada y pierden las secuencias complejas necesarias para romper el sistema.

GraphQLer es diferente. Es como un detective que primero estudia los planos de la máquina (el "schema" o esquema) para entender cómo están conectados los botones. Construye un mapa mental que muestra que el "Botón A" crea un nuevo artículo, el "Botón B" lo elimina, y el "Botón C" podría todavía ser capaz de verlo incluso después de que haya desaparecido. Con este mapa, GraphQLer no solo presiona botones al azar; crea cadenas específicas de acciones. Simula un escenario donde un usuario compra un artículo, luego intenta robarlo, o lo elimina y luego intenta leerlo de nuevo.

Los investigadores probaron este nuevo detective en 21 APIs diferentes, reales y falsas pero realistas (los sistemas informáticos que se están probando). Encontraron que GraphQLer fue una mejora masiva respecto a las herramientas antiguas. Mientras que las mejores herramientas existentes solo podían alcanzar con éxito aproximadamente el 29% de los botones de la máquina, GraphQLer logró alcanzar el 85.52% de ellos. Más importante aún, cuando se trataba de encontrar los complicados agujeros de seguridad, las herramientas antiguas encontraron cero de los problemas complejos de múltiples pasos. Sin embargo, GraphQLer encontró todos los cinco problemas confirmados de "IDOR" (donde puedes ver las cosas de otra persona simplemente cambiando un número) e incluso detectó un error de "Use-After-Free" (donde puedes ver un archivo después de haber sido eliminado).

En una prueba del mundo real en un sistema financiero (al cual los autores llaman "FinServ" para mantenerlo anónimo), GraphQLer encontró ocho posibles fallos de seguridad sin necesidad de contraseñas o documentos secretos. Incluso encontró formas de hacer que el sistema colapsara y revelara su código interno, lo cual es un gran error para la seguridad. El artículo también mostró que GraphQLer puede reproducir vulnerabilidades conocidas en una popular plataforma de código abierto llamada Saleor, demostrando que funciona en sistemas que ya se sabe que están rotos.

Los autores son muy cuidadosos al decir que, aunque su herramienta es excelente para encontrar este tipo de errores de reacción en cadena, no es una varita mágica que lo soluciona todo. Todavía tiene dificultades con algunos escenarios muy específicos y complejos donde la máquina requiere múltiples piezas de información al mismo tiempo para funcionar. Pero para la gran mayoría de las aplicaciones modernas que utilizan esta flexible tecnología GraphQL, GraphQLer demuestra que ya no puedes probar los botones uno por uno. Tienes que entender la historia que la máquina está contando, y solo entonces puedes encontrar dónde están los agujeros en la trama.

¿Ahogado en artículos de tu campo?

Recibe resúmenes diarios de los artículos más novedosos que coincidan con tus palabras clave de investigación — con resúmenes técnicos, en tu idioma.

Probar Digest →