Franco Piergallini Guida

Franco Piergallini Guida

Security Researcher. Área de Innovación y Laboratorio de ElevenPaths.
Ciberseguridad
Cómo engañar a las apps que usan Deep Learning para la detección de melanomas
Uno de los grandes logros del deep learning es la clasificación de imágenes por medio de las redes neuronales convolucionales. En el artículo “El Internet de la Salud” vemos un ejemplo claro donde esta tecnología, como la del proyecto -GoogleLeNet- de Google (que originalmente fue diseñado para interpretar imágenes para coches inteligentes o self-driving cars), es ahora utilizada en el campo de análisis de imágenes médicas para la detección de melanomas y cáncer en la piel. Realizando una simple búsqueda en las tiendas de aplicaciones móviles con este objetivo, encontramos algunas que, en base a una foto de una mancha o lunar de tu piel, predicen si es un melanoma malicioso o algo totalmente benigno. Como vimos en artículos anteriores, este tipo de algoritmos podría ser vulnerable a alteraciones en su comportamiento. A partir de la selección de algunas de estas aplicaciones, procedimos a realizar un ataque del tipo blackbox con el objetivo de generar estratégicamente ruido a una imagen de un melanoma para observar si es posible invertir la clasificación de las redes neuronales internas de las aplicaciones sobre las cuales no teníamos información. Es decir, en este escenario de investigación, no contábamos con acceso a las redes neuronales internas de las aplicaciones. Metodología Ante esta situación, uno de los caminos posibles era recrear nuestros propios modelos entrenados de la forma más intuitiva de encarar este tipo de problemática y generamos ataques para estos que, debido a la propiedad denominada transferibilidad, deberían funcionar en todas las aplicaciones que habíamos seleccionado. Pero encontramos un camino incluso más sencillo: para ahorrarnos el paso de entrenar una red neuronal dedicada a la detección de melanomas en imágenes, simplemente buscamos un proyecto open source que encarase esta problemática y tuviese una red neuronal ya entrenada y lista en Github. La propiedad de transferibilidad fue descubierta por investigadores que encontraron que las muestras adversarias diseñadas específicamente para causar una clasificación errónea en un modelo, también pueden causar clasificaciones erróneas en otros modelos entrenados de forma independiente, incluso cuando los dos modelos están respaldados mediante algoritmos o infraestructuras claramente diferentes. Para tratar verificar la teoría utilizando de manera “normal” una de las aplicaciones seleccionadas desde nuestro dispositivo o emulador (Android), procedimos a cargar nuestras imágenes de melanomas aleatoriamente seleccionadas de Google con el fin de ver sus resultados. Efectivamente, pudimos observar que las aplicaciones clasificaron con una alta confidencia como melanomas dichas imágenes, tal como lo vemos en la siguiente imagen: Imagen 1: Clasificación de imágenes como Melanomas A partir de ahí, procedimos a recrear un adversarial attack. Intuimos que en todas las aplicaciones victimas se utilizó un approach parecido al propuesto en el repositorio de Github. Por lo tanto, utilizando los pesos de la red neuronal provistas por el repositorio aplicamos la técnica Fast Sign Gradient Method (FSGM), que ya mencionamos en otro post al respecto, generando el “ruido blanco” necesario para engañar a las redes neuronales. Este ruido, casi imperceptible al ojo humano, está específicamente diseñado a partir de los pesos de la red neuronal para tener el mayor impacto a la hora de asignar las probabilidades de clasificación de las imágenes y cambiar totalmente el veredicto de predicción. Y, efectivamente, la imagen cuidadosamente generada por medio de los pesos de las redes neuronales open source con el FSGM, tienen el impacto deseado en las aplicaciones víctimas destino. Observamos que, claramente, se cumple la propiedad de transferibilidad, ya que no tenemos idea de qué estructura interna ni pesos tienen las redes internas de las aplicaciones. Sin embargo, fuimos capaces de cambiar la predicción de imágenes en las cuales se mostraba un resultado con bastante certeza de que eran melanomas, simplemente añadiéndoles “ruido”. Imagen 2: Melanomas analizados, pero con una reducción en la clasificación Este tipo de ataque lo recreamos exitosamente en varias aplicaciones que encontramos en las tiendas de Google y Apple. En algunos casos, se comportaban de una forma similar y no exactamente igual, pero en el final de las pruebas siempre obtuvimos el mismo resultado. Engañar a la red neuronal en su predicción. En la siguiente imagen mostramos los resultados de una misma imagen de melanoma subida a la misma aplicación, pero a la cual le fuimos aumentando el ruido hasta llegar al momento en el cual la red interna de la aplicación, cambia su predicción. Imagen 3: Cambio de predicción a medida que se sube el ruido en la imagen Cabe destacar, que cuando analizamos este tipo de aplicaciones, no solo encontramos potenciales vulnerabilidades relacionadas con las tecnologías de deep learning, sino que a su vez, podemos encontrarnos con las vulnerabilidades típicas como: Inadecuada implementación Webview XSS No aplicación de métodos de ofuscación Conexiones inseguras hacia backends (HTTP) Fuga de datos privados Al fin y al cabo, son debilidades que ya conocemos y que aún muchas de ellas siguen sin ser corregidas en aplicaciones que manejan información tan delicada como los datos médicos. Conclusiones Según Gartner, para el 2022, el 30% de todos los ciberataques a la inteligencia artificial aprovechará el envenenamiento de datos de entrenamiento, el robo de modelos o adversarial attacks. Además, una investigación de Microsoft indica que 22 de 28 organizaciones de Fortune 500 no estarían preparadas con herramientas tácticas y estratégicas para proteger, detectar y responder a ataques en sus sistemas de Machine Learning. Los hallazgos que hemos encontrado podrían representar una mezcla perfecta para que más adelante, cuando estén desplegadas más aplicaciones de este tipo y las interacciones con otros gadgets o plataformas médicas, se incremente el riesgo tanto a la seguridad de las plataformas y la privacidad de datos.
9 de febrero de 2021
Ciberseguridad
Las primeras vulnerabilidades oficiales en Machine Learning, así, en general
Hoy por hoy no eres nadie en el mercado si no usas un sistema de Machine Learning. Ya sea un sistema de “ifs” anidados o un modelo de inteligencia real con una envidiable curva ROC, esta técnica forma parte del discurso habitual en ciberseguridad, y como tal, se incorporado ya a la industria como un método más. Nos preguntamos si está siendo atacado o sufriendo vulnerabilidades, una forma de medirlo es saber si se ya conocen fallos oficiales y qué impacto han tenido. ¿Cómo se ataca un sistema de Machine Learning? Pues como casi todo en ciberseguridad, conociéndolo a fondo. Una de las fórmulas es “extraer” su modelo de inteligencia para poder eludirlo. Si sabemos cómo clasifica un sistema, podemos enviar muestras para que las clasifique a nuestro gusto y pase desapercibidas. Por ejemplo, en el año 2019 se registró en el NIST la primera vulnerabilidad asociada a un sistema de Machine Learning con un CVE concreto. Aquí se logró “imitar” un modelo de Machine Learning para la clasificación de correo basura (SPAM) recolectando la puntuación que iba asignando el sistema de Protección de Emails a los distintos los encabezados. Una vez replicado el modelo, extrajeron el conocimiento que serviría para generar un posterior ataque que eludía los filtros. Básicamente, el conocimiento relevante que pudieron obtener los investigadores replicando el modelo original fueron los pesos que el sistema le asignaba a cada término que aparecía en la cabecera de un email para clasificarlo como "no spam". A partir de ahí, realizar pruebas añadiendo estos términos en un correo basura para “engañar” al modelo original y lograr el objetivo de poder clasificar un correo spam como no spam. En nuestro post "Pensando en ataques a WAFs basados en Machine Learning" utilizamos la misma técnica para engañar modelos implementados en algunos WAF que detectan URLs maliciosas y XSS. Indagamos en los modelos para comprender o conocer cuáles son los términos que tienen más peso a la hora de clasificar una URL como no maliciosa y los incluimos a nuestra URL maliciosa para lograr generar una clasificación errónea en la predicción. La respuesta por parte del fabricante a esta vulnerabilidad indican que parte de la solución a este problema fue la capacidad de su modelo de actualizar sus puntuaciones (pesos) en tiempo real. En otras palabras, sacrificar la estacionalidad por la adaptabilidad y reentrenar dinámicamente su modelo con nuevas interacciones de los usuarios. Si bien es una posibilidad interesante en este caso y que refuerza el sistema, esto no siempre es aplicable para cualquier modelo que utilicemos ya que podría acarrear otro nuevo vector de ataque en donde un adversario podría manipular los limites de decisión del modelo envenenándolo con inputs sintéticos que en realidad son “basura”. Dado que para tener un impacto significativo el atacante debería insertar una gran cantidad de basura, los servicios que son más populares y ven un gran volumen de tráfico legitimo son más difíciles de envenenar para tener un impacto significativo en el resultado del aprendizaje. Un nuevo mundo de oportunidades La anterior vulnerabilidad se restringía a un producto, pero también hemos asistido a problemas genéricos en los algoritmos. Por hacer una analogía, sería como encontrar un fallo en la implementación de un fabricante, en contraposición a un fallo en el diseño del protocolo (que obligaría a actualizar a todos los fabricantes). En este sentido, quizás una de las implementaciones de Machine Learning más famosas son las basadas en los algoritmos entrenados a través del descenso de gradiente (gradient descent). Hace no tanto se descubrió que son potencialmente vulnerables a ataques de clasificación errónea arbitrarios, como explican en esta alerta del CERT Coordination Center, Carnegie Mellon University. En este caso, ya estudiamos y compartimos en una aplicación del mundo real atacando un sistema de reconocimiento de videos Deep Fakes, y otra relacionada con el ataque de aplicaciones móviles para la detección de melanomas en la piel que publicaremos más adelante. En conclusión, a medida que incorporamos esta tecnología al mundo de la seguridad, veremos más ejemplos de fallos de implementación, e incluso más esporádicamente, fallos de diseño en algoritmos que pondrán a prueba la habilidad de estos sistemas supuestamente inteligentes. Las consecuencias serán en general que los atacantes serán capaces de engañarles para clasificar erróneamente y por tanto, eludir probablemente ciertos sistemas de seguridad.
21 de diciembre de 2020
Ciberseguridad
Pensando en ataques a WAFs basados en Machine Learning
Una de las piezas fundamentales para la correcta implementación de machine y deep learning son los datos. Este tipo de algoritmos necesitan consumir, en algunos casos, una gran cantidad de datos para lograr dar con una combinación de “parámetros” internos que le permitan generalizar o aprender, con el fin de predecir nuevas entradas. Si estas familiarizado con la seguridad informática, probablemente lo que hayas notado es que datos es lo que sobra, la seguridad se trata de datos, y los encontramos representados en distintas formas: files, logs, network packets, etc. Típicamente, estos datos se analizan de una forma manual, por ejemplo, utilizando file hashes, reglas personalizadas como las firmas y heurísticas definidas manualmente. Este tipo de técnicas requieren demasiado trabajo manual para mantenerse al día con el panorama cambiante de las amenazas cibernéticas, que tiene un crecimiento diario dramáticamente exponencial. En 2016, hubo alrededor de 597 millones de ejecutables de malware únicos conocidos por la comunidad de seguridad según AVTEST, y en lo que va del 2020 ya vamos mas de mil millones. Imagen 1: fuente https://www.av-test.org/es/estadisticas/software-malicioso/ Para este volumen de datos, un análisis manual de todos los ataques es humanamente imposible. Por este motivo, los algoritmos de deep y machine learning son ampliamente utilizados en la seguridad, por ejemplo: antivirus para detectar malware, firewall detectando actividad sospechosa en la red, SIEMs para identificar tendencias sospechosas en los datos, entre otros. Al igual que un ciberdelincuente podría aprovechar una vulnerabilidad de un cortafuegos para obtener acceso a un web server, los algoritmos de machine learning también son susceptibles a un posible ataque como vimos en estas dos entregas anteriores: Adversarial Attacks, el enemigo de la inteligencia artificial 1 y Adversarial Attacks, el enemigo de la inteligencia artificial 2. Por lo tanto, antes de poner tales soluciones en la línea de fuego, es crucial considerar sus debilidades y comprender cuán maleables son bajo estrés. Ejemplos de ataques a WAF Veamos un par de ejemplos de ataque a dos WAFs, donde cada uno cumple con un simple objetivo: detectar XSS y sitios maliciosos analizando el texto de una URL específica. A partir de grandes sets de datos, donde estaban correctamente etiquetados XSS y sitios maliciosos, se entrenó un algoritmo del tipo logistic regression con el cual poder predecir si es malicioso o no. Los sets de datos para XSS y para sitios maliciosos utilizados para entrenar estos dos algoritmos de logistic regression, básicamente, son una recopilación de URLs clasificadas en “buenas” y “malas”: Imagen 2: URLs maliciosas Imagen 3: XSS Donde el set de datos de sitios maliciosos contiene unos 420.000 URLs entre buenas y malas y, por el lado de XSS, hay 1.310.000. Al ser un ataque del tipo white box, tenemos acceso a todo el proceso y manipulación de datos para el entrenamiento de los algoritmos. Por lo tanto, podemos apreciar que el primer paso en los dos escenarios es aplicar una técnica llamada TF-IDF (Term frecuency – Inverse document frecuency), que nos va a brindar una importancia a cada uno de los términos dada su frecuencia de aparición en cada una de las URLs en nuestros sets de datos. A partir de nuestro objeto TF-IDF podemos obtener el vocabulario generado para ambos casos, y una vez entrenado el algoritmo podríamos fácilmente acceder y ver a cuáles de estos términos le dio mayor peso. A su vez, a partir de estos términos podemos fácilmente manipular el output del algoritmo. Veamos el caso de clasificación de sitios maliciosos. Clasificación de sitios maliciosos Según el algoritmo, si alguno de estos términos aparece en una URL hay una alta probabilidad de que sea un sitio no malicioso: Imagen 4: peso de los términos para considerarlos NO maliciosos. Esto quiere decir que, simplemente añadiendo alguno de estos términos a mi URL maliciosa, voy a poder influenciar al máximo al algoritmo a mi merced. Tengo mi URL maliciosa que el algoritmo detecta con bastante certeza que, efectivamente, es un sitio malicioso: Imagen 5: URL maliciosa Con un 90% de confianza, clasifica la URL como maliciosa. Pero si le añadimos el término ‘photobucket’ a la URL, el algoritmo ya la clasifica como “bueno”: Imagen 6: URL maliciosa con un término que da “confianza”. Incluso podríamos empujar más esa probabilidad simplemente añadiendo otro término a la URL, por ejemplo “2011”: Imagen 7: URL con 2 términos que dan “confianza” Pasemos al escenario de XSS. Tenemos un payload al cual el algoritmo lo clasifica correctamente como XSS y con una confianza del 99% (en este ejemplo el label 1 corresponde a XSS y el 0 a no XSS): Imagen 8: Payload de XSS detectable. Veamos los términos con menor peso para invertir esa predicción: Imagen 9: peso de los términos para bajar la predicción de ataque XSS. Como hicimos anteriormente, agregamos alguno de estos términos para manipular el output del algoritmo. Después de unas pruebas, damos con el payload que invierte la predicción, tuvimos que agregar el término “t/s” unas 700 veces para lograr el objetivo: Imagen 10: payload capaz de invertir la predicción del XSS. Y, efectivamente, nuestro algoritmo lo predice como NO XSS: Imagen 11: No detección del XSS por el payload utilizado.. Por si alguien está interesado en el tema, les dejamos los links de los proyectos WAF de sitios maliciosos y el WAF de XSS. Algunas referencias fueron tomadas del libro Malware Data Science Disponer de acceso a los pasos de preprocesamiento de los datos y a los modelos facilita la generación de estos tipos de ataques. Si el atacante no tuviera acceso a estos, implicaría un esfuerzo mayor para dar con el preprocesamiento justo de los datos y la arquitectura o algoritmo del modelo predictivo. Sin embargo, sigue siendo posible recrear estos ataques por medio de otras técnicas como la transferibilidad, donde muestras adversarias que están diseñadas específicamente para causar una clasificación errónea en un modelo también pueden causar clasificaciones erróneas en otros modelos entrenados de forma independiente. Incluso cuando los dos modelos están respaldados mediante algoritmos o infraestructuras claramente diferentes.
5 de octubre de 2020
Ciberseguridad
Adversarial Attacks, el enemigo de la inteligencia artificial (II)
En el Machine y Deep Learning, al igual que en cualquier sistema, existen vulnerabilidades y técnicas que permiten manipular su comportamiento a merced de un atacante. Como hablamos en la primera parte de este artículo sobre Adversarial Attacks, una de estas técnicas son los adversarial examples: inputs generados cuidadosamente por un atacante para alterar el comportamiento de respuesta de un modelo. Veamos algunos ejemplos: El más sencillo podemos encontrarlo en los comienzos de la detección de correos basura, clasificadores estándares como Naive Bayes tuvieron mucho éxito contra emails que contenían textos como: ¡Haga dinero rápido!, Refinancia tu hipoteca, Viagra… Como eran automáticamente detectados y clasificados como spam, los generadores de correos basura aprendieron a engañar a los clasificadores insertando puntuaciones, caracteres especiales o código HTML como comentarios o incluso tags falsos. Así comenzaron a usar “disfraces” como: v.ia.g.ra, ¡H4G4 D|nero r4p1do!, Inçrèmēntä la tęštõśtĘröná 250%.... Y fueron más allá, una vez solucionado este problema para los clasificadores, los atacantes inventaron un nuevo truco: para evadir a los clasificadores que se basaban en el análisis del texto, simplemente embebieron el mensaje en una imagen. Figura 1: Adversarial examples Ebay Varias contramedidas fueron rápidamente desarrolladas basándose en los hashes de imágenes conocidas como spam utilizando OCRs para extraer textos de imágenes. Para evadir estas defensas, los atacantes comenzaron a su vez a aplicar filtros y transformaciones a las imágenes con ruido aleatorio dificultando la tarea de reconocimiento de caracteres en las imágenes. Figura 2: Imagen ruido aleatorio Como en criptografía, nos encontramos en un juego sin fin donde continuamente se van encontrando técnicas de defensas y técnicas de ataque. Detengámonos en este punto. Clasificación de imágenes y Adversarial Attacks En la clasificación de imágenes, los atacantes aprendieron a generar meticulosa y estratégicamente “ruido blanco”, utilizando algoritmos para maximizar el impacto en redes neuronales y pasar desapercibido por el ojo humano. O sea, logran una estimulación en las capas internas de la red que alteran completamente su respuesta e impiden que sean procesadas de manera inteligente. Una de las razones por las que existen este tipo de ataques en las imágenes es debido a las dimensiones de éstas y las infinitas combinaciones posibles que puede llegar a tener como input una red neuronal. Si bien podemos aplicar técnicas como el data augmentation para incrementar tanto en tamaño como en variedad nuestros set de datos de entrenamiento, es imposible capturar la gran complejidad combinatoria que implica el espacio real de posibles imágenes. Figura 3: https://arxiv.org/abs/1412.6572 Pero, ¿como se genera este ruido blanco? Primero, vamos a formular los adversarial examples matemáticamente, desde la perspectiva de la optimización. Nuestro objetivo fundamental en el aprendizaje supervisado es proporcionar un mapeo preciso de una entrada a una salida mediante la optimización de algunos parámetros del modelo. Esto se puede formular como el siguiente problema de optimización: 〖min 〗_θ loss(θ,X_i 〖,Y〗_i ) Que es típicamente conocido como el entrenamiento de las redes neuronales. Para realizar esta optimización se utilizan algoritmos como stochastic gradient descent, entre otros. Una aproximación muy similar se puede utilizar para lograr que un modelo clasifique erróneamente un input especifico. Para generar un ejemplo adversario, utilizamos los parámetros en los que la red convergió después del proceso de entrenamiento y optimizamos sobre el espacio posible del input. Esto quiere decir que vamos a buscar una perturbación que pueda ser agregada al input y maximizar la función de loss del modelo: 〖max 〗_(δ∈∆) loss(θ,X_i+ δ〖,Y〗_i ) Ejemplo de juguete "Toy example" Pensemos por un momento en un simple ejemplo donde tenemos una neurona de regresión lineal, con un input de 6 dimensiones: Que, al pasar por el proceso de entrenamiento, convergió con los siguientes pesos: W=(0,-1,-2,0,3,1),b=0. Si le damos el input: La neurona va a dar como output: Entonces, ¿de que forma cambiamos x→x* con el fin de que yx* cambie radicalmente pero que x*≅x? Si tomamos la derivada de ∂y/∂x=WT, nos va a indicar como los pequeños cambios en x impactan en y. Para generar x* le agregamos una pequeña perturbación εWT,ε=0.5 al input x de la siguiente forma: Y si hacemos forward propagation a nuestro nuevo input x*, si tenemos suerte, vamos a notar una diferencia con respecto al output que nos provee el modelo para x. Efectivamente, para el input x* obtenemos 6.5 como output, cuando para x teníamos -1. Esta técnica (con algunas mínimas diferencias al toy example que acabamos de ver) se llama fast gradient sign method y fue introducida por Ian Goodfellow en el paper titulado Explaining and Harnessing Adversarial Examples en 2015. Adversarial examples del futuro: coches autónomos Los adversarial examples son una particularidad innata de todos los problemas de optimización, incluyendo el deep learning. Pero si nos remontamos unos 10 años atrás, el deep learning ni siquiera hacía un buen trabajo en datos normales y sin alteración. El hecho de que ahora estemos buscando e investigando formas de “hackear” o “romper” redes neuronales implica que se han vuelto increíblemente avanzadas. Pero ¿pueden estos ataques tener un impacto en el mundo real como, por ejemplo, el sistema de autopiloto en un coche? Elon Musk dio su opinión en el podcast de Lex Fridman asegurando que este tipo de ataques pueden ser fácilmente controlados. En un entorno del tipo black-box, donde los atacantes no tienen acceso a los detalles internos de la red neuronal como la arquitectura o los parámetros, la probabilidad de éxito es relativamente baja, aproximadamente del 4% en promedio. Sin embargo, investigadores de Keen Labs han logrado generar adversarial examples alterando el sistema de autopiloto de los coches Tesla. Por otro lado, en entornos del tipo white-box se podrían generar adversarial examples con una tasa de éxito promedio del 98% (An Analysis of Adversarial Attacks and Defenses on Autonomous Driving Models). Esto implica una alta susceptibilidad en proyectos de self-driving open-source como comma.ai, donde se exponen por completo la arquitectura y parámetros de los modelos. Waymo, una empresa desarrolladora de vehículos autónomos pertenecientes al conglomerado Alphabet Inc expone una serie de datos de sensores de alta resolución recopilados por sus automóviles en una amplia variedad de condiciones, con el fin de ayudar a la comunidad investigadora a avanzar en esta tecnología. Estos datos podrían ser utilizados para entrenar una amplia variedad de modelos y generar adversarial attacks que en algunos casos podrían tener efecto en las redes utilizadas por Waymo debido a la transferabilidad, una propiedad de las redes neuronales en las cuales indica que dos modelos se van a basar en las mismas características para cumplir con un mismo objetivo. Hemos de mencionar que existe una gran brecha entre engañar un modelo y engañar un sistema que contiene un modelo. Muchas veces, las redes neuronales son un componente más en un ecosistema en los que interactúan distintos tipos de análisis en la toma de decisiones. Siguiendo con el caso de los coches autónomos, la decisión de reducir la velocidad por la detección de un posible objeto próximo, detectado en el análisis de la cámara frontal, podría no concordar con los datos obtenidos de otro componente como un LIDAR en el caso de un adversarial attack. Pero en otro tipo de tomas de decisiones, como por ejemplo analizar las señales de tránsito, podría intervenir únicamente el análisis de vídeo y tener un efecto realmente peligroso convirtiendo una señal de stop en una de, por ejemplo, límite de 50 kilómetros hora. Figura 4: Señal de Stop Sin lugar a dudas, esta técnica supone una amenaza latente para el mundo del deep learning. Pero eso no es todo, porque existen otros tipos de ataques para cada una de las etapas en el pipeline del machine learning en los cuales un atacante puede tomar ventaja, como pueden ser: Etapa de entrenamiento: envenenamiento del set de datos. Parámetros aprendidos: ataques de manipulación de parámetros. Etapa inferencia: adversarial attacks. Test outputs: robo de modelos. ¿Quieres saber más sobre Adversarial Attacks? Primera parte de este artículo disponible aquí: CYBER SECURITY Adversarial Attacks, el enemigo de la inteligencia artificial 30 de junio de 2020
8 de septiembre de 2020
Ciberseguridad
Adversarial Attacks, el enemigo de la inteligencia artificial
Una red neuronal tiene un simple objetivo: reconocer patrones inherentes en sets de datos. Para lograrlo, debe tener la capacidad de “aprender” pasando por un proceso de entrenamiento donde se ajustan miles de parámetros hasta llegar a una combinación que minimice una métrica de error dada. Si logra encontrar una combinación de sus parámetros que le permiten generalizar los datos, será capaz reconocer estos patrones y predecir, con una tolerancia de error admisible, entradas de datos que nunca haya visto en el proceso de entrenamiento. Estos datos pueden ser imágenes, videos, audios o datos tabulares. ¿Qué pasa si alguien sabe manipular esos datos para que ofrezcan los datos que le convienen? De forma imperceptible e inconsciente, utilizamos redes neuronales en un sinfín de tareas que realizamos a diario. Algunos de los ejemplos más superficiales son los sistemas de recomendación de películas en Netflix y música en Spotify, la identificación y categorización de correos electrónicos, la interpretación de consultas y predicciones de siguiente palabra en buscadores, los asistentes virtuales y su procesamiento natural del lenguaje, el reconocimiento facial en cámaras y, por supuesto, la identificación de amigos en las redes sociales y los filtros graciosos que deforman nuestros rasgos faciales. Sin discriminación, las redes neuronales triunfan en una variedad de campos inmensa. Podemos utilizarlas para diagnosticar la COVID-19, rastrear vendedores de drogas en redes sociales, o incluso detectar fake news. Sin embargo, se ha demostrado que también pueden ser hackeadas, remontándonos a la esencia y definición del hacking: manipular la conducta normal de un sistema. Una de las técnicas utilizadas para manipular arbitrariamente las redes neuronales es la que se conoce comúnmente como "Adversarial Attacks". Con ella podemos producir la salida deseada creando una entrada cuidadosamente elaborada. Por ejemplo, si tenemos una red neuronal que en base al sonido de la tos predice la probabilidad de tener o no COVID-19, podríamos manipular los espectrogramas grabados añadiendo ruido para modificar la probabilidad de respuesta (aumentarla o disminuirla). O incluso podríamos generar un espectrograma sin ningún sentido o parecido a los generados por la tos y así obtener cualquier probabilidad de respuesta deseada. Ejemplo con deep fakes Veamos un ejemplo concreto: tenemos un sistema que es muy bueno prediciendo si un vídeo es deepfake o no. Una de las soluciones convencionales a esta problemática comienza con la recolección y alineamiento de n caras que aparecen en el video utilizando una red neuronal específica para esta tarea. Una vez recolectadas, otra red predice la probabilidad de que una cara sea deepfake o no. Vídeo tomado de Deepfake Detection Challenge (DFDC) El último paso es tomar un promedio de todas las probabilidades para las n caras recolectadas. Si este promedio es mayor a un límite impuesto (por ejemplo, 0.6), entonces el vídeo es clasificado como deepfake; de lo contrario, se clasifica como no deepfake. Claramente podemos ver que, en el ejemplo, la calidad del deepfake generado no es muy buena y el sistema está muy seguro al clasificarlo (0.86). Para modificar la probabilidad de salida del sistema deberíamos agregar ruido estratégicamente generado e insertarlo en el vídeo. Para lograrlo tenemos tres restricciones: El ruido generado debe ser lo suficientemente sofisticado para que la red que identifica las caras siga haciendo su trabajo sin problemas. El ruido debe estar generado de tal forma que baje la probabilidad que predice la segunda red en todas las caras recolectadas. Las modificaciones deben ser lo más imperceptibles posible para los humanos. Analizando en detalle la segunda red, podemos apreciar que el input que recibe siempre es del mismo tamaño: una imagen RGB de 256 píxeles de alto por 256 píxeles de ancho. Las redes neuronales son determinísticas, es decir, que para cualquier imagen de entrada que se ajuste a la primera capa, ésta va a producir un output. Los píxeles toman valores entre 0 y 256, lo que implica que el espacio de posibles combinaciones para entradas de la segunda red va a ser 256256*256*3 pero sólo un subconjunto muy pequeño va a cumplir con las tres restricciones. Para generar el ruido utilizamos Fast Gradient Sign Method (live demo), que implica un ataque de tipo white box y tener acceso completo al sistema. Pero, ¿qué pasa cuando tenemos una sola oportunidad para engañar al sistema? Podríamos crear nuestro propio modelo réplica del original y generar el ruido en base a éste. Hay altas probabilidades de que el ataque funcione por transferibilidad, una propiedad que todavía es caso de estudio pero que básicamente dice que dos modelos con el mismo objetivo se van a basar en las mismas características para cumplirlo. ¿Cómo nos defendemos de este tipo de ataques? Una solución puede ser agregando una nueva red neuronal que funcione como una especie de IDS (SafetyNet) en nuestro proceso. Si detecta que la imagen o vídeo contiene este tipo de ataques, puede descartar el vídeo y clasificarlo como malicioso. Otra solución sería generar estos ataques e incluirlos en nuestros sets de datos y en el proceso de entrenamiento de nuestra red para que pueda etiquetarlos como maliciosos, pero esta opción es muy costosa debido a la cantidad de combinaciones sobre las cuales se pueden generar. Una solución muy ingeniosa de un equipo de NVIDIA llamada BaRT (The Barrage of Random Transforms) plantea aplicar distintos tipos de ataques al set de datos en el cual es entrenada la red neuronal para dificultar la tarea del atacante a la hora de hacer un ataque de tipo black box y que la red pueda clasificar correctamente un vídeo como malicioso. Cleverhans, de Tensorflow; y ART (Adversarial Robustness Toolbox), de IBM, son librerías en las que podemos encontrar un punto de partida con ejemplos para saber más sobre este tipo de ataques en las redes neuronales, así como formas para solucionarlos en nuestros modelos y aumentar su robustez. Hay muchos lugares en los que los atacantes pueden aprovechar este tipo de técnicas y tener un impacto realmente significativo: robo de identidad en sistemas de reconocimiento facial, engañar a los detectores de contenido sexual o violento en las redes sociales, señales de tránsito que utilizan los vehículos autónomos, detectores de fake news, etc. Detrás de todas estas aplicaciones que utilizamos a diario existen modelos que, al igual que cualquier sistema, pueden ser vulnerables a que su comportamiento se vea alterado. Más sobre Adversarial Attacks, en la segunda parte de este artículo: CYBER SECURITY Adversarial Attacks, el enemigo de la inteligencia artificial (II) 8 de septiembre de 2020
30 de junio de 2020