La omnipresencia de la IA es un fenómeno con el que nos topamos a diario. Basta con recorrer la Ruta 101 a través de San Francisco para ver decenas de vallas publicitarias que anuncian productos de inteligencia artificial. En nuestra vida cotidiana, vemos la IA en la medicina, en las compras e incluso en el lavado de nuestra ropa. Como ocurre con cualquier tecnología nueva, existe un lado siniestro, y los delincuentes, por supuesto, están utilizando la IA para cometer delitos.
En Okta, nuestro negocio es combatir a los ciberdelincuentes, ya sea que cuenten con la ayuda de la IA o no. El modelado de amenazas es una de las técnicas de ciberseguridad que utilizamos para reforzar nuestros productos frente a los atacantes. Es un ámbito idóneo para la aplicación de la IA.
Comprensión del modelado de amenazas de ciberseguridad
La modelización de amenazas puede parecer algo exótico, pero en realidad es bastante sencilla. Evaluamos los posibles ataques, su probabilidad e impacto, y cómo mitigarlos. Es algo que muchos hacemos en otros contextos sin darnos cuenta.
Un ejemplo práctico de modelado y mitigación de amenazas.
Hace poco me compré una bicicleta eléctrica nueva. Determinar cómo evitar que sea robado es un ejercicio de modelado de amenazas. Guardo la bicicleta en mi garaje, así que ese es un escenario que necesito analizar. Donde vivimos, es poco probable que un ladrón entre en nuestro garaje; algo que podría no ser cierto si viviera en un edificio de apartamentos en una gran ciudad, donde el acceso al garaje podría ser más fácil. Sin embargo, es muy probable que mis hijos adolescentes dejen la puerta del garaje abierta. Para mí, basta con usar un candado en U sencillo para que un posible ladrón no pueda agarrar la bicicleta y llevársela. Por otro lado, si uso mi bicicleta en el centro de San Francisco, tal vez quiera un candado resistente a las amoladoras angulares para disuadir a los ladrones más agresivos.
Cómo Okta aborda el modelado de amenazas
En Okta, hacemos el mismo ejercicio con nuestro software. Meditamos sobre cómo un atacante podría sortear nuestras defensas y cómo podemos fortalecerlas.
En Okta, contamos con un proceso codificado, aunque en constante evolución, para realizar modelos de amenazas. Diagramamos cómo fluyen los datos a través del sistema y cómo interactúan los distintos componentes. Enumeramos cuidadosamente las posibles formas en que un atacante podría comprometer nuestro sistema y cómo podemos protegernos. Tras elaborar nuestro modelo de amenazas, lo sometemos a revisión interna por parte de nuestros compañeros y expertos en seguridad, al igual que hacemos con el código. Acabamos de empezar a utilizar la IA como parte de nuestro proceso de modelado de amenazas, y a continuación compartiré algunos de los primeros resultados.
Uso de Claude AI para el modelado de amenazas
La nueva función de inicio de sesión único (SSO) vinculada al dispositivo de Okta utiliza una clave privada específica para firmar la carga útil que se envía al sistema back-end de Okta. Al firmar la carga útil con esta clave, Okta puede verificar detalles específicos sobre la máquina del usuario final.
Le pedí Claude de Anthropic que me ayudara a crear el modelo de amenazas para la versión de macOS de la función SSO vinculada al dispositivo. Hemos redactado varias especificaciones técnicas para la función, incluyendo un documento arquitectónico de alto nivel, detalles de implementación para clientes Windows y macOS, y un modelo de amenazas para un cliente Windows.
Elaboración de la solicitud de IA
Proporcioné todo esto como contexto y utilicé el siguiente prompt bastante sencillo:
La carpeta recursos contiene una descripción de la función clave especial que estamos desarrollando. En el directorio de recursos, se encuentran las especificaciones técnicas de la función tanto para macOS como para Windows. Ese archivo se llama SpecialKeySpec.pdf. También existe una especificación para macOS, llamada macOSSpecialKeySpec.pdf.
Eres un experto en ciberseguridad que va a desarrollar un modelo de amenazas para esta función utilizando el marco STRIDE.
Me gustaría obtener el siguiente resultado:
* un diagrama de contexto de nivel 0 construido utilizando el formato Mermaid;
* un diagrama de secuencia construido utilizando el formato Mermaid;
* Una enumeración de las amenazas que encuentre con sugerencias de mitigación escritas en formato Markdown.
Análisis de los resultados del modelo de amenazas de IA
La elaboración de modelos de amenazas puede resultar abrumadora, pero el uso eficaz de la IA reduce la angustia que se siente al mirar un documento vacío de Google Docs. Claude no tenía esa angustia y rápidamente elaboró una lista de unas 20 amenazas. El resultado se parecía a lo que cabría esperar de un niño inteligente de 12 años con interés en la ciberseguridad: mucho entusiasmo, algunas buenas ideas, pero una falta general de matices.
Puntos fuertes: Donde la IA destaca en el modelado de amenazas
Claude destaca por poner las cosas en marcha y realizar el trabajo pesado.
Claude demostró gran habilidad para redactar los primeros borradores de los diagramas que utilizamos en la modelización de amenazas. Elaboramos los diagramas utilizando el lenguaje de marcado Mermaid, y los diagramas Mermaid implican una cantidad considerable de código repetitivo. Si Claude se encarga de iniciar el proceso, obtendrás un diagrama funcional más rápidamente que si empezaras desde cero o incluso si copiaras y pegaras un diagrama existente. En general, el diagrama de secuencia y los diagramas de flujo de datos eran aceptables. Como dediqué muy poco tiempo a la estructura inicial, tuve más tiempo para centrarme en editar y perfeccionar los diagramas para hacerlos más precisos.
Ejemplo de diagrama de flujo de datos
Ejemplo de un diagrama de secuencia
Claude hizo bien en enumerar las amenazas relacionadas con la vulneración de nuestra clave privada. Claude también hizo un buen trabajo al enumerar los ataques de intermediario («machine-in-the-middle»). Este tipo de ataque se produce cuando alguien o algo intercepta el tráfico de internet entre los componentes de su sistema.
Finalmente, Claude enumeró varios ataques que podrían ocurrir si un agente malintencionado comprometiera alguno de nuestros componentes de software. Estoy seguro de que no los habríamos echado de menos si hubiéramos empezado desde cero, pero nos ahorró mucho tiempo.
Limitaciones: sugerencias de seguridad de IA menos útiles
Sin embargo, la obra de Claude a menudo carecía de matices. Se identificaron múltiples amenazas relacionadas con la filtración de datos no secretos. Por ejemplo, tenemos un identificador de sesión, que es una cadena única que no es secreta en absoluto. No lo especificamos en nuestra solicitud, sin embargo, Claude planteó repetidamente el problema de la divulgación de ese identificador.
Otras amenazas simplemente no tenían sentido y podíamos ignorarlas por completo. Claude nos instó a reemplazar HTTPS por XPC, algo que en realidad no es práctico. Claude escribió un par de amenazas sobre la divulgación de contraseñas, pero en el flujo de datos no hay contraseñas involucradas.
Realización de un análisis de brechas en el modelo de amenazas
Tras dedicar varias horas a editar la lista inicial de amenazas y el conjunto de diagramas de Claude, presenté mi borrador en nuestro taller de modelado de amenazas. Allí, modeladores de seguridad experimentados criticaron el diseño, proporcionando valiosas ideas que incorporé directamente al modelo. Luego volví a contactar con Claude y le pedí que tomara mi modelo semiacabado y lo analizara en busca de fallos, utilizando de nuevo el modelo de amenazas de Windows como contexto.
Claude, muy amablemente prolijo, me dio una larga lista de posibles problemas. La mayoría no eran relevantes, pero había algunas joyas. Por ejemplo, debido a que habíamos reforzado adecuadamente un componente específico del sistema, no había considerado las amenazas que podrían surgir sin dicho refuerzo.
Una buena regla para modelar amenazas es asumir que una amenaza en particular no tiene medidas de mitigación y considerar el resultado. Yo había ignorado esa regla, pero Claude no.
Claude aportó un par de ideas útiles: una sobre el cifrado de la comunicación entre procesos y otra sobre el secuestro de sesiones. Probablemente habría incorporado estas ideas con el tiempo, tras cotejarlas con el modelo de amenazas de Windows, pero contar con «otra opinión» me ahorró tiempo.
Conclusiones clave sobre el uso de la IA en los flujos de trabajo de ciberseguridad
Por supuesto, existen riesgos al utilizar la IA para el modelado de amenazas. Para empezar, debes asegurarte de que las herramientas de IA no estén realizando exfiltración de datos. Aunque hayas protegido tu conjunto de herramientas de IA para que los resultados maliciosos no sean un problema, los resultados pueden carecer de sentido. Tienes que hacer tu trabajo con la misma diligencia de siempre. Es fácil obtener algunos buenos resultados de la IA—un correo electrónico bien redactado o una función bien programada, por ejemplo—y suponer que los resultados siempre son perfectos. Del mismo modo, Claude no puede ser el único que participe en la lluvia de ideas: el hecho de que Claude no haya mencionado una amenaza en particular no significa que puedas ignorarla.
La IA hace un gran trabajo poniendo las cosas en marcha. Genera una avalancha de ideas. Algunas de esas ideas son útiles para construir el modelo final, algunas incitan al modelador de amenazas humano a pensar en otras cosas, y otras pueden ser ignoradas. La IA puede evitar sesgos cognitivos, como ignorar ciertas amenazas porque asumimos que una parte del sistema es segura.
En Okta, vemos claramente el valor de la IA para el modelado de amenazas, pero nuestros puestos de trabajo siguen estando seguros (al menos como modeladores de amenazas). La IA sigue estando firmemente en el ámbito de una herramienta útil en nuestro flujo de trabajo, no como el motor ni el propietario del flujo de trabajo en sí.
¿Quiere ver cómo otros equipos están utilizando estas tecnologías? Descubre cómo los empleados de Okta aprovechan la IA para impulsar la innovación.