5 vulnerabilidades críticas en GraphQL utilizadas para programar aplicaciones móviles y web modernas

Especialistas en servicios de seguridad informática han revelado el hallazgo de 5 vulnerabilidades críticas en GraphQL (GQL), un lenguaje de consulta de datos empleado en un número considerable de sitios web y aplicaciones móviles modernas como parte del stack de tecnología. Esta herramienta simplifica la obtención de datos de un servidor a un cliente a través de una llamada API.

Para analizar estas vulnerabilidad, un grupo de investigadores de la firma Carve creó una API de demostración. A continuación se presenta una breve reseña de las fallas reportadas. 

Verificaciones de autorización inconsistentes

Si bien GraphQL ayuda a implementar una validación de datos adecuada, los desarrolladores de API se quedan solos para implementar métodos de autenticación y autorización en la parte superior. Peor aún, las “capas” de una API GraphQL hacen que esto sea más complicado: las verificaciones de autorización deben estar presentes no solo en los resolvers de nivel de consulta, sino también para los resolvers que cargan datos adicionales.

Acorde a los expertos en servicios de seguridad informática que crearon la API, una vulnerabilidad expuesta en la API de demostración expone la oportunidad de recuperar una publicación por ID, donde no hay verificaciones de autorización.

Capas de proxy REST débiles

Una API subyacente adaptada para el uso de los clientes GraphQL con proxys REST puede implementarse en la capa proxy GraphQL con una solicitud a GET/api/users/1 en la API back-end. Si se implementa de forma incorrecta, los actores de amenazas podrían modificar la ruta o los parámetros pasados a la API de back-end.   

Los expertos mencionan que una adecuada codificación URL y los parámetros de validación pasados a otro servicio pueden mitigar el riesgo de explotación de esta falla.

Evasión de validación de Skalar personalizada

Los datos sin procesar con GQL se representan con un tipo Skalar, y finalmente se pasan como datos de entrada o se devuelven como salida. El conjunto básico de tipos Skalar es suficiente para muchas API simples, pero para escenarios en los que los tipos de datos sin procesar adicionales son útiles, GraphQL incluye soporte para que los desarrolladores de aplicaciones definan sus propios tipos escalares.

Si un desarrollador implementa su propio tipo Skalar, será responsable de mantenerse al día con la sanitización y la validación, mencionan los especialistas en servicios de seguridad informática.  

Limitación de velocidad desorganizada

El número de acciones que realiza la consulta GQL es mutable por naturaleza y, por lo tanto, requiere una cantidad errática de recursos del servidor. Esta es la razón por la cual las técnicas de limitación de velocidad utilizadas para las API REST no están destinadas a ser utilizadas para las API GQL. En otras palabras, las estrategias de la API REST son insuficientes para las API GQL.

Filtración de datos públicos por función de introspección

Agregar características veladas a los endpoints de la API es una perspectiva atractiva para los desarrolladores; estas características podrían protegerse de la vista pública con protección de acceso de administrador o con otro endpoint de API. Una característica de GraphQL llamada introspección hace que sea muy fácil descubrir endpoints ocultos.

Para mayores informes sobre vulnerabilidades, exploits, variantes de malware y riesgos de seguridad informática puede ingresar al sitio web del Instituto Internacional de Seguridad Cibernética (IICS), al igual que a las plataformas oficiales de las compañías tecnológicas.