Aplicación de IA en seguridad de aplicaciones

Autor: Kiran Maraju, CEH, CISSP
Fecha de Publicación: 24 April 2018
English

El uso de la inteligencia artificial (AI) en la seguridad cibernética ayudará a las organizaciones a mejorar las capacidades de seguridad de las aplicaciones existentes. La seguridad de la aplicación cubre la seguridad de la web o del cliente grueso y las aplicaciones móviles que pasan por varias fases del ciclo de vida de desarrollo de seguridad, por ejemplo, diseño de seguridad y codificación de seguridad. Se pueden aprovechar diversas áreas de IA, como el aprendizaje automático y los sistemas expertos, para mejorar la seguridad de las aplicaciones a fin de derivar, predecir o aplicar inferencias para pronosticar amenazas de seguridad, identificar vulnerabilidades de seguridad e identificar la guía de remediación de codificación de seguridad.

Las siguientes áreas de IA se pueden aplicar a la seguridad de la aplicación:

  • Aprendizaje automático—Aprendizaje del árbol de decisiones (DTL) durante la identificación de amenazas
  • Sistemas expertos—Encadenamiento hacia adelante y encadenamiento hacia atrás para la revisión del código de seguridad y la guía de revisión del código

Los auditores de seguridad pueden utilizar estas técnicas para automatizar la identificación de amenaza de ataque y el proceso de revisión del código. El proceso implica desarrollar diversas reglas de inferencia de soporte de decisiones para varias vulnerabilidades de seguridad de aplicaciones, aplicar las reglas de decisión e inferencia a sistemas expertos y entrenar los mismos sistemas usando un algoritmo con los diversos escenarios de ataques de seguridad de aplicaciones y rutas de ataque. Los auditores de seguridad pueden identificar e inferir la posibilidad de ataques exitosos proporcionando entradas a estos sistemas expertos en seguridad de aplicaciones basadas en el aprendizaje automático. La figura 1 describe la relación entre DTL y sistemas expertos en este proceso.

DTL de aprendizaje automático: identificación de amenaza de ataque de seguridad a la aplicación

DTL es una forma de aprendizaje inductivo que utiliza un conjunto de ejemplos de entrenamiento para crear una hipótesis que hace conclusiones generales. También determina las mejores rutas de ataque de atributos (amenazas) si es posible. Durante el desarrollo del árbol de decisión, un conjunto de ejemplos de capacitación se divide en subconjuntos más pequeños y un árbol de decisión asociado se desarrolla de forma incremental. Un árbol de decisión que cubre el conjunto de capacitación se devuelve después de completar el proceso de aprendizaje. La figura 2 describe los árboles de decisión de amenazas.

Cross-site scripting (XSS) es una vulnerabilidad de seguridad de aplicaciones web donde los datos de entrada enviados a la aplicación web no se validan correctamente para entradas maliciosas. Los atacantes usan esta vulnerabilidad XSS para secuestrar sesiones, usar cookies y para ataques de desfiguración de página (defacement).1

El siguiente es un escenario XSS típico con ejemplos de entrenamiento, incluyendo rutas de ataque con diferentes atributos disponibles tales como validación de datos de entrada, validación de datos de salida y tipo de datos. Los valores de tipo de datos contaminados con posibles tipos de datos se devuelven al usuario final (XSS reflectante), se guardan en el servidor (XSS persistente) o se transfieren a un sistema diferente como entrada. Al aplicar valores de entropía y ganancia, el árbol de decisión siguiente-mejor-atributo con un valor de entropía seleccionado como nodo raíz y con todos los nodos de raíz y nodos raíz posteriores se construye como se muestra en la figura 3.

El método del árbol de decisión es un tipo de aprendizaje supervisado que involucra atributos, conjuntos de entrenamiento y determina el mejor atributo de acuerdo con la entropía y la ganancia con algoritmos como Iterative Dichotomiser 3 (ID3).2

La ganancia de información (G), G (S, A) donde A es un atributo y S es una muestra de ejemplos de entrenamiento

p+ son los ejemplos positivos en S
p- son los ejemplos negativos en S
  • Entropía de S: número promedio óptimo de bits para codificar información sobre certeza/incertidumbre. Entropy (E) es el número mínimo de bits necesarios para clasificar un ejemplo arbitrario como yes o no.
Entropía (S) = -p + log2p+ - p-log2p-
  • Ganancia (S, A): reducción en la entropía después de elegir el atributo A

Por lo tanto, la entropía de los datos de entrenamiento, E (S), puede representarse como E ([3+, 9-]) porque de los 12 ejemplos de entrenamiento, tres de ellos son éxito de ataque y nueve de ellos son fallas de ataque. La figura 4 describe las rutas de ataque y sus resultados.

Las rutas de ataque previas se proporcionan como conjuntos de entrenamiento para el sistema de soporte de decisiones, y la entrada se pasa a través de este sistema de soporte de decisiones. Esto se representa en la figura 3 como el árbol de decisión de ataque XSS. Cuando no se realiza la validación de datos de entrada, esto verificará la validación de datos de salida y, si no se realiza la validación de datos de salida, buscará el tipo de datos y proporcionará el resultado como éxito de ataque (es decir, ataque XSS posible) o ataque fallido (es decir, el ataque XSS no es posible). Para la ruta de ataque P13, la validación de los datos de entrada se realiza con el ataque de resultado del árbol de decisiones fallido. Esto significa que XSS no es posible utilizando los conjuntos de entrenamiento anteriores.

La figura 3 es el árbol de decisiones de vulnerabilidad XSS. Se pueden crear tipos similares de árboles de decisión para diversas vulnerabilidades de seguridad de aplicaciones para correlacionar, identificar y predecir las amenazas de seguridad una vez que estos árboles de decisión se construyan para varias vulnerabilidades de seguridad. Estas reglas del sistema de soporte de decisiones se pueden aprovechar como reglas de inferencia para los sistemas expertos de seguridad de aplicaciones.

Sistemas expertos de seguridad de aplicaciones

Los sistemas expertos son capaces de interpretar la información proporcionada, asesorar y derivar una solución. También proporcionan alternativas sugeridas para el problema y predicen los resultados. La figura 5 ilustra los componentes de una base de conocimiento del sistema experto y un motor de inferencia. La base de conocimiento comprende información que es fáctica y heurística (adivinable), incluidas las reglas y los hechos. Las reglas If-then-else son parte de la representación del conocimiento. La información adquirida de los expertos en seguridad se envía a los sistemas expertos en forma de reglas if-then-else para desarrollar sistemas expertos de seguridad. Los hechos son las aserciones.

Revisión del código de seguridad motor de inferencia—sistemas expertos de encadenamiento hacia adelante

El motor de inferencia de revisión del código de seguridad con encadenamiento directo3 se puede utilizar para predecir valores, es decir, derivar lo que puede suceder a continuación. Esto ayudará a los motores de revisión del código de seguridad a determinar realmente el tipo de ataque. La figura 6 detalla la vulnerabilidad de inyección de SQL,4 con las reglas de inferencia de encadenamiento hacia delante que usan las reglas if-then-else al hacer coincidir las diversas condiciones.

SQL injection es una vulnerabilidad de seguridad de aplicaciones web en la que los datos de entrada enviados a las aplicaciones web no se validan correctamente para las entradas maliciosas. Usando ataques de vulnerabilidad de inyección SQL, los atacantes inyectarán comandos SQL maliciosos a la base de datos back-end y extraerán los detalles de la base de datos. La figura 7 describe el motor de inferencia de revisión del código de seguridad y las reglas de encaminamiento de reenvío.

Reglas de inferencia de encadenamiento directo para vulnerabilidad de inyección de SQL

Los siguientes son ejemplos de los hechos y reglas utilizados para demostrar las reglas de inferencia de encadenamiento directo para la vulnerabilidad de inyección SQL.

Hechos:

  • Hecho 1: X es un parámetro de URL.
  • Hecho 2: X contiene un personaje especial.
  • Hecho 3: X no se procesa la validación de entrada de la lista blanca.
  • Hecho 4: X se pasa a través de una llamada a la base de datos.

Reglas

  • Regla 1: Si X es un parámetro de formulario y X contiene caracteres especiales, entonces X es una entrada contaminada.
  • Regla 2: Si X es un parámetro de URL y X contiene caracteres especiales, entonces X es una entrada contaminada.
  • Regla 3: Si X es un parámetro de cookie y X contiene caracteres especiales, entonces X es una entrada contaminada.
  • Regla 4: Si X es una importación de archivo y X contiene caracteres especiales, entonces X es una entrada contaminada.
  • Regla 5: Si X es un encabezado HTTP y X contiene caracteres especiales, entonces X es una entrada contaminada.
  • Regla 6: Si X es una entrada contaminada y la entrada no es una validación de entrada de la lista blanca procesada, entonces X es una entrada no validada.
  • Regla 7: Si X es una entrada contaminada y X no es una validación de entrada de la lista negra procesada, entonces X es una entrada no validada.
  • Regla 8: Si X es una entrada contaminada y no una entrada de escape, entonces X es una entrada no validada.
  • Regla 9: Si X es una entrada no validada y X no se procesa en las declaraciones preparadas (con consultas parametrizadas), entonces X es una entrada potencial de inyección SQL.
  • Regla 10: Si X es una entrada no validada y X pasa a través de una llamada a la base de datos, entonces X es una entrada potencial de inyección SQL.

La figura 8 detalla las reglas que coinciden con la memoria de trabajo actual, el conjunto de conflictos, la regla disparada y el siguiente ciclo después de que se ha disparado una regla.

Guía de remediación de vulnerabilidades de seguridad de la aplicación—sistema experto de encadenamiento hacia atrás

El motor de inferencia de guía de remediación de seguridad de aplicación con encadenamiento hacia atrás se puede usar para el diagnóstico de los valores, es decir, derivar lo que sucedió. Este sistema experto de orientación de remediación de aplicaciones ayuda al desarrollador a determinar varios posibles subobjetivos (soluciones) para corregir las vulnerabilidades. La figura 9 describe los sistemas expertos de encadenamiento hacia atrás que proporcionan una guía para las vulnerabilidades de seguridad con aportes como objetivos, hechos y resultados como posibles subagrupaciones coincidentes.

La figura 10 detalla las reglas de guía de remediación de seguridad de la aplicación para la vulnerabilidad de remediación de inyección de SQL donde las reglas 14, 15 y 16 serán sub-metas. Estos subobjetivos se pueden tratar como posibles soluciones que un desarrollador puede implementar para remediar el ataque SQL, es decir, escapar de la entrada o implementar la validación de entrada de la lista negra/lista blanca para caracteres especiales.

Reglas de inferencia de encadenamiento hacia atrás para identificar las recomendaciones de vulnerabilidad de inyección de SQL

El objetivo es la inyección de SQL, y las reglas son:

  • Regla 11: Si X es una entrada potencial de inyección SQL, entonces X es una entrada no validada.
  • Regla 12: Si X es una posible entrada de inyección SQL, entonces X no se procesa en las declaraciones preparadas (con consultas parametrizadas).
  • Regla 13: Si X es una entrada potencial de inyección SQL, entonces X pasa a través de una llamada a la base de datos.
  • Regla 14: Si X es una entrada no validada, entonces X es una entrada contaminada y no una entrada de escape (subgama).
  • Regla 15: Si X es una entrada no validada, entonces X es una entrada contaminada y X no es una validación de entrada de la lista negra procesada (subobjetivo).
  • Regla 16: Si X es una entrada no validada, entonces X es una entrada contaminada y X no es una validación de entrada de la lista blanca procesada (subobjetivo).
  • Regla 17: Si X es una entrada contaminada, entonces X es del encabezado de solicitud HTTP y X contiene caracteres especiales.
  • Regla 18: Si X es una entrada contaminada, entonces X es de importación de archivos y X contiene caracteres especiales.
  • Regla 19: Si X es una entrada contaminada, entonces X es del parámetro de cookie y X contiene caracteres especiales.
  • Regla 20: Si X es una entrada contaminada, entonces X es del parámetro URL y X contiene caracteres especiales.
  • Regla 21: Si X es una entrada contaminada, entonces X es del parámetro y X contiene caracteres especiales.

La figura 11 detalla las reglas que coinciden con la memoria de trabajo actual, el conjunto de conflictos, la regla disparada y el siguiente ciclo después de que se ha disparado una regla.

Memoria de trabajo (WM) = ([entrada no validada] [entrada contaminada] [entrada no escapada] [no validada entrada de lista blanca procesada] [no validación entrada de lista negra procesada]) comprende los diversos métodos (sub-objetivos) que pueden considerarse posibles soluciones para remediar la vulnerabilidad de inyección SQL.

Conclusión

Las técnicas del sistema experto de seguridad de aplicaciones y aprendizaje de árbol de decisión pueden aprovecharse para automatizar la toma de decisiones y determinar los próximos mejores atributos para identificar las rutas de ataque para clasificar/identificar amenazas de seguridad, vulnerabilidades de seguridad y guía de corrección de código. Esto se puede lograr identificando y proporcionando todos los posibles escenarios de ataque a los sistemas expertos de seguridad de aplicaciones y DTL. Los conjuntos de entrenamiento se desarrollan incrementalmente para crear hipótesis para derivar conclusiones. Los sistemas expertos en seguridad de aplicaciones con encadenamiento hacia adelante y hacia atrás también pueden usarse para determinar las vulnerabilidades de seguridad, es decir, derivar consecuencias basadas en posibles antecedentes (reglas coincidentes) y también pueden utilizarse para asesorar soluciones de corrección de vulnerabilidades de seguridad para corregir las vulnerabilidades.

Notas finales

1 Open Web Application Security Project, Cross-Site Scripting (XSS), https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)
2 Quinlan, J. R.; “Induction of Decision Trees,” Machine Learning 1, p. 81–106, Kluwer Academic Publishers, USA, 1986, www.hunch.net/~coms-4771/quinlan.pdf
3 Al-Ajlan, A.; “The Comparison Between Forward and Backward Chaining,” International Journal of Machine Learning and Computing, vol. 5, iss. 2, 2015, p. 106–113, www.ijmlc.org/vol5/492-A14.pdf
4 Open Web Application Security Project, SQL Injection, https://www.owasp.org/index.php/SQL_Injection

Kiran Maraju, CEH, CISSP
Tiene 18 años de experiencia en seguridad de la información y participa en múltiples evaluaciones de vulnerabilidad de red, aplicaciones web y seguridad móvil. También tiene experiencia en pruebas de penetración, revisión de códigos de seguridad, seguridad del ciclo de vida de desarrollo de software, seguridad de red, seguridad de bases de datos y evaluaciones de seguridad inalámbrica. Maraju está trabajando como un líder especialista para Deloitte. Antes de eso, trabajó como científico para la Organización de Investigación Espacial de la India (ISRO).