Los chatbots han existido durante mucho tiempo y, según el tamaño del mercado global de chatbots (y el crecimiento esperado), se mantendrán durante mucho tiempo e irán ganando importancia. En el pasado, rara vez cumplían con las expectativas de los clientes o brindaban una experiencia muy positiva. Sin embargo, en los últimos años, los avances en la IA conversacional han transformado la forma en que se pueden usar.
Dado que los chatbots ofrecen una amplia gama de aplicaciones, en ciertos casos también se vuelven responsables de recopilar y proteger información personal. En consecuencia, son una gran atracción para los piratas informáticos y también para los ataques maliciosos. La responsabilidad de garantizar la seguridad de los chatbots se ha pronunciado después de la introducción de GDPR en Europa. Como las estadísticas muestran que esta tecnología será un factor determinante en nuestras vidas, las pruebas de seguridad también deben formar parte de nuestras tareas diarias, para que estos chatbots puedan usarse con confianza.
Tabla de contenidos
Riesgos de seguridad, amenazas y vulnerabilidades
Las palabras riesgo, amenaza y vulnerabilidad a menudo se confunden o se usan indistintamente cuando se lee sobre seguridad informática, así que primero aclaremos la terminología:
- La vulnerabilidad se refiere a una debilidad en su software (o hardware, o en sus procesos, o cualquier cosa relacionada). En otras palabras, es una forma en que los piratas informáticos pueden encontrar el camino y explotar sus sistemas.
- Una amenaza aprovecha una vulnerabilidad y puede provocar la pérdida, el daño o la destrucción de un activo: las amenazas aprovechan las vulnerabilidades.
- El riesgo se refiere a la posibilidad de que se pierdan, dañen o destruyan activos: ¡amenazas + vulnerabilidad = riesgo!
El conocido OWASP Top 10 es una lista de los principales riesgos de seguridad para una aplicación web. La mayoría de los chatbots están disponibles a través de una interfaz web pública y, como tal, todos los riesgos de seguridad de OWASP también se aplican a esos chatbots. De estos riesgos, hay dos especialmente importantes contra los que defenderse, ya que, en contraste con los otros riesgos, esos dos son casi siempre una amenaza grave: XSS (Cross Site Scripting) y SQL Injection.
Además, para los chatbots habilitados con inteligencia artificial, existe un mayor riesgo de ataques de denegación de servicio, debido a la mayor cantidad de recursos informáticos involucrados.
Vulnerabilidad 1: XSS – Cross Site Scripting
Una implementación típica de una interfaz de usuario de chatbot:
- Hay una ventana de chat con un cuadro de entrada.
- Todo lo que el usuario ingresa en el cuadro de entrada se refleja en la ventana de chat.
- La respuesta del chatbot se muestra en la ventana de chat.
La vulnerabilidad XSS se encuentra en el segundo paso: al ingresar texto que incluye código Javascript malicioso, el ataque XSS se completa cuando el navegador web ejecuta el código inyectado:
<script>alert(document.cookie)</script>
Posible vector de ataque
Para explotar una vulnerabilidad XSS, el atacante tiene que engañar a la víctima para que envíe un texto de entrada malicioso.
- El atacante engaña a la víctima para que haga clic en un hipervínculo que apunta al chatbot e incluye algún código malicioso en el hipervínculo.
- El código malicioso se inyecta en el sitio web, lee las cookies de las víctimas y las envía al atacante sin que la víctima se dé cuenta.
- El atacante puede usar esas cookies para obtener acceso a la cuenta de la víctima en el sitio web de la empresa.
Defensa
Esta vulnerabilidad es realmente fácil de defender al validar y desinfectar la entrada del usuario, pero aún así vemos que esto sucede una y otra vez.
Vulnerabilidad 2: Inyección SQL
Una implementación típica de un backend de chatbot orientado a tareas:
- El usuario le dice al chatbot algún elemento de información.
- El backend del chatbot consulta una fuente de datos para este elemento de información.
- Basándose en el resultado, se genera una respuesta en lenguaje natural y se presenta al usuario.
Con SQL Injection, el atacante engaña al backend del chatbot para que considere el contenido malicioso como parte del elemento de información:
my order number is "1234; DELETE FROM ORDERS"
Posible vector de ataque de Chatbot
Cuando el atacante tiene acceso personal al chatbot, el atacante puede explotar directamente una inyección SQL (consulte el ejemplo anterior), realizando todo tipo de consultas SQL (o no SQL).
Defensa
Los desarrolladores suelen confiar en sus tokenizadores y extractores de entidades para defenderse de los ataques de inyección. Además, en la mayoría de los casos, las comprobaciones simples de expresión regular de la entrada del usuario cerrarán esta vulnerabilidad.
Vulnerabilidad 3: Denegación de servicio
La inteligencia artificial requiere un alto poder de computación, especialmente cuando se trata de deep learning como en los algoritmos de comprensión del lenguaje natural (NLU) de última generación. El ataque de Denegación de Servicio (Denial of Service, DoS, en sus siglas en inglés) se centra en hacer que un recurso no esté disponible para el propósito para el que fue diseñado, y no es difícil imaginar que los chatbots son más vulnerables a los ataques de Denegación de Servicio (DoS) que los backends habituales basados en sistemas altamente optimizados. Si un chatbot recibe una gran cantidad de solicitudes, es posible que deje de estar disponible para usuarios legítimos. Estos ataques introducen grandes retrasos en la respuesta, pérdidas excesivas e interrupciones del servicio, lo que tiene un impacto directo en la disponibilidad.
Posible vector de ataque de Chatbot
Un ataque de este tipo envía una gran cantidad de solicitudes al chatbot para agotar intencionalmente los recursos disponibles. Sucederá que los recursos informáticos ya no estarán disponibles para los usuarios legítimos, es decir, los que verdaderamente están haciendo uso de la plataforma.
Pero hay un riesgo adicional a considerar: es bastante común que los desarrolladores de chatbots utilicen servicios basados en la nube como IBM Watson o Google Dialogflow. Dependiendo del plan elegido, existen límites de uso y/o cuotas vigentes que pueden agotarse con bastante rapidez; por ejemplo, el plan gratuito Google Dialogflow Essential limita el acceso a 180 solicitudes por minuto, todas las demás solicitudes serán denegadas. Para un plan basado en el uso sin límites, un ataque DoS puede costar fácilmente una fortuna debido al aumento del número de solicitudes.
Defensa
Los métodos establecidos para defenderse de los ataques de denegación de servicio también se aplican a los chatbots.
Estrategias de mitigación
Además de las estrategias de defensa han explicado en las líneas anteriores, existen reglas genéricas para mitigar los riesgos de brechas en el sistema.
Educación para desarrolladores de software
Naturalmente, la mejor manera de defenderse de las vulnerabilidades es ni siquiera dejar que ocurran en primer lugar. Los desarrolladores de software deben recibir capacitación especial para considerar la seguridad del sistema como parte de su rutina diaria de desarrollo. Establecer la mentalidad y los procesos en el equipo de desarrollo es el primer paso y el más importante.
Pruebas de seguridad continuas
Las pruebas de seguridad deben ser parte de tu proceso continuo de pruebas. Cuanto antes se identifique y repare una vulnerabilidad de seguridad, más económico será el cambio.