Patent ES-2892849-T3 (ES)
Title: Detección de manipulación de aplicaciones
Inventor: VELASCO SARASOLA ROBERTO
Filed: 2015-03-27
Granted: 2022-02-07
Abstract: Un método (18, 28) para la detección de manipulación de datos (29) por un cliente (11, 15, 25, 71) que realiza una solicitud a un servidor (13, 17, 27, 75) y la detección de vulnerabilidades dentro del código fuente, implementado en un sistema que comprende: - al menos un cliente (11, 15, 25, 71) adaptado para · ejecutar las solicitudes (21, 24) a un servidor (13, 17, 27, 75) que comprende datos editables y datos no editables, preferiblemente datos editables de cuadros de texto o cabeceras HTTP, · recibir respuestas del servidor (13, 17, 27, 75), preferiblemente sobre el Protocolo de Transferencia de Hipertexto (HTTP), - al menos un servidor (13, 17, 27, 75) adaptado para · recibir (31) dicha solicitud, y · enviar (22) dicha respuesta (29), donde el método (18, 28) comprende los siguientes pasos: a) recibir (31), por el servidor (13, 17, 27, 75), una solicitud de un cliente (11, 15, 25, 71), si la solicitud es una solicitud inicial ir al paso c), b) si la solicitud es una solicitud no inicial, - leer (33), por el servidor (13, 17, 27, 75), el identificador de solicitud (ESTADO_ID) de la solicitud recibida, - detectar (34) la manipulación por el servidor (13, 17, 27, 75), y finalizar el método (18, 28) si el identificador de solicitud (ESTADO_ID) es diferente al identificador de solicitud (ESTADO_ID) de una solicitud anterior que se ha añadido a un primer tipo de estructura de datos (ESTADO) creada para cada punto de riesgo de una respuesta (29) de una solicitud anterior en la misma sesión, en donde un punto de riesgo es preferiblemente unos recursos predeterminados, URL, o enlace o formulario, preferiblemente que comprenden parámetros, - detectar la manipulación (35) por el servidor (13, 17, 27, 75), y finalizar (310) el método (18, 28) si el contenido recibido en la solicitud es diferente al contenido del primer tipo de estructura de datos (ESTADO) correspondiente al identificador de solicitud (ESTADO_ID) recibido, - detectar la manipulación (35) por el servidor (13, 17, 27, 75), y finalizar (310) el método (18, 28) si hay algún parámetro adicional no incluido dentro de un primer tipo de estructura de datos (ESTADO) existente, - si la solicitud comprende al menos un parámetro editable, que ha sido editado o completado por el cliente (11, 15, 25, 71), almacenar (36) por el servidor (13, 17, 27, 75) la representación de los datos comprendidos en estos campos en el servidor (13, 17, 27, 75) en un segundo tipo de estructura de datos, Tainted Objects, y estando los Tainted Objects almacenados en una lista; c) generar (37) la respuesta por el servidor (13, 17, 27, 75), preferiblemente una página HTML, d) analizar (38), por el servidor (13, 17, 27, 75), si durante la generación de la respuesta, se genera al menos un punto de riesgo, e) si hay al menos un punto de riesgo en la respuesta, preferiblemente recursos, URL o enlace o formularios, · crear (39), por el servidor (13, 17, 27, 75), un primer tipo de estructura de datos (ESTADO) para cada punto de riesgo, · generar y asociar, por el servidor (13, 17, 27, 75), un identificador de solicitud (ESTADO_ID) para el primer tipo de estructura de datos (ESTADO), · si el punto de riesgo comprende al menos un parámetro, identificar la tipología, editable o no editable, del al menos un parámetro del punto de riesgo, preferiblemente la tipología no editable comprende uno de una casilla de verificación, botón de selección, seleccionar y la tipología editable comprende uno de un cuadro de texto o área de texto de campo editables, f) en caso de que el servidor haya creado Tainted Objects, propagar TaintedObjects de manera que, para cada nuevo objeto creado u objeto derivado de un TaintedObject, el nuevo objeto se incluya en la lista de TaintedObjects, g) realizar una acción predeterminada (392) si la solicitud comprende datos en forma de un TaintedObject de la lista de TaintedObjects, los datos que se usan (391) como parámetro de entrada en un punto sumidero, la acción predeterminada que es: - crear una alerta que informa del archivo y el número de línea del punto sumidero en caso de que este esté en forma de código de programación, o - abortar la carga de los datos, o - realizar las acciones proactivas de dejar escapar una cadena en los datos, o - realizar las acciones proactivas de ejecutar funciones seguras, o - una combinación de crear una alerta y realizar una acción proactiva; y enviar (22), desde el servidor (13, 17, 27, 75), la respuesta (29) y todos los primeros tipos de estructuras de datos (ESTADO) creados para la solicitud junto con la respuesta al cliente (11, 15, 71), h) recibir la respuesta susceptible de ser modificada por el cliente (11, 15, 25, 71), i) continuar en el paso a) si el cliente (11, 15, 25, 71) envía otra solicitud al servidor (13, 17, 27, 75) en una misma sesión, usando uno de los identificadores de solicitud (ESTADO_ID) generado en el paso e) de la solicitud actual, o una solicitud anterior dentro de la misma sesión. el método (18, 28) que se lleva a cabo aplicando al menos una de las técnicas conocidas añadiendo un comportamiento adicional a un servidor (13, 17, 27, 75), preferiblemente estas técnicas comprendidas en un grupo que comprende: - Transformación de código compilado, - Extensión de API, - Código adicional.