RASP toma una aplicación ingenua y le permite identificar ataques y bloquearlos. Hay una serie de enfoques diferentes, incluidos los filtros, las cajas de arena y la instrumentación completa. Aquí hay un buen artículo independiente sobre RASP que describe los casos de uso y los enfoques: enlace .
Veamos un ejemplo simple de inyección SQL. Una aplicación ingenua simplemente no tiene defensa y es explotada. Una aplicación que utiliza PreparedStatements es segura contra la inyección, pero no tiene idea de si está siendo atacada o no. Vamos a ver cómo funciona esto con RASP. Estoy describiendo el enfoque de instrumentación de Contrast aquí.
Primero, el RASP se instala en la aplicación. En este caso, basta con agregar el agente RASP al entorno. Cuando se carga el código, el RASP utiliza una instrumentación binaria dinámica para agregar nuevos sensores de seguridad y capacidad de análisis a la aplicación. Este proceso es muy similar al funcionamiento de NewRelic o AppDynamics para instrumentar una aplicación para el rendimiento.
Cuando el ataque llega a la aplicación, RASP usa datos de la solicitud, el usuario, la sesión y cualquier otra información contextual. Los datos de solicitud del atacante se rastrean a través de la aplicación. Si parece un ataque, pero nunca llega a una consulta SQL, se informa como una sonda. Esta es una gran diferencia de lo que puede hacer un WAF, ya que los WAF no pueden ver lo que sucede dentro de la aplicación y deben realizar un bloqueo excesivo.
Si el ataque realmente llega a una consulta SQL y modifica el significado de esa consulta, solo entonces RASP bloquea el ataque. Básicamente, esto se aplica a la definición de Inyección de SQL, ya que solo se bloquean los ataques que modifican con éxito el significado de las consultas de SQL. Esta es la razón por la que la implementación de RASP se puede implementar sin mucha configuración o capacitación.
En última instancia, el usuario obtiene visibilidad de quién está atacando sus aplicaciones, de dónde provienen los ataques, las técnicas que se utilizan, la línea exacta de código a la que se dirige y la consulta SQL completa que contiene el ataque. La cantidad de ataques viables es solo una pequeña fracción de las sondas generales que nunca alcanzan una vulnerabilidad coincidente. Por lo tanto, los resultados son bastante diferentes de lo que puede proporcionar un WAF.
El proceso es aproximadamente el mismo para otras vulnerabilidades. Aunque, RASP puede agregar protecciones específicas para las vulnerabilidades conocidas en bibliotecas y componentes. RASP también puede agregar el registro de seguridad u otras características de seguridad a las aplicaciones.