Se habla mucho de la inteligencia artificial y de sus efectos en todos los ámbitos de la informática y la tecnología. ¿Cómo afecta a las pruebas de penetración o ‘penetration testings’? En este artículo, analizaremos el impacto de la IA y la automatización en los servicios de pruebas de ciberseguridad y en qué hay que fijarse a la hora de evaluar a los proveedores de penetration testings.
Algunos proveedores de seguridad catalogan sus herramientas y servicios como «impulsados por la IA», pero muchas áreas de la ciberseguridad, especialmente los pentesting, llevan varios años incorporando progresivamente la IA a su trabajo. En general, la IA y la automatización se han incorporado a herramientas que reducen el tiempo que los especialistas dedican a tareas repetitivas para que puedan centrarse en aquellas en las que su experiencia es más valiosa.
Consultemos el diccionario
Uno de los problemas es que los términos estándar de la industria no siempre tienen una definición universalmente aceptada. Un proveedor de ciberseguridad puede referirse a su servicio como «prueba de penetración automatizada», mientras que otro proveedor puede utilizar el mismo término para referirse a algo ligeramente diferente. Así que, antes de seguir adelante, definamos los términos
Las pruebas de penetración (también conocidas como pentesting) son un ejercicio de seguridad ofensivo que utiliza técnicas de hacking manuales y automatizadas para desplegar ataques controlados en un activo (o varios), como una aplicación web, un entorno en la nube, una pieza de hardware, etc. Esto pone a prueba la eficacia de un activo de TI para resistir diferentes técnicas maliciosas que podrían causar interrupciones o daños, o filtrar datos o activos financieros. Los escáneres de vulnerabilidad inspeccionan redes, dispositivos y aplicaciones en busca de vulnerabilidades conocidas y luego las puntúan (normalmente según el sistema de puntuación CVSS).
Los escáneres de vulnerabilidades inspeccionan redes, dispositivos y aplicaciones en busca de vulnerabilidades conocidas y luego las puntúan (normalmente también según CVSS).
Algunos proveedores de seguridad utilizan el término pruebas de penetración automatizadas, que se refiere al uso de escáneres de vulnerabilidades para buscar vulnerabilidades y luego realizar automáticamente pruebas sobre ellas. Por desgracia, tienen dificultades para realizar técnicas de ataque más complejas con muchas variables, o para encadenar múltiples vulnerabilidades.
Sin embargo, el término «pruebas de penetración automatizadas» puede inducir a error. Implica que otros tipos de pruebas son «manuales», y «pruebas de penetración manuales» implica que todo se hace manualmente. De hecho, los técnicos de pentesting han estado desarrollando y utilizando muchas herramientas para automatizar partes del proceso durante años.
La vida secreta de los escáneres de vulnerabilidades
Los escáneres de vulnerabilidades se utilizan en la mayoría de los pentests para acelerar el proceso de identificación de vulnerabilidades, pero también se utilizan para solucionar problemas más básicos. A lo largo de los años, se han vuelto más potentes, lo que significa que el número de vulnerabilidades de seguridad que pueden detectar con éxito está aumentando. Con la incorporación de la IA, este crecimiento no hará más que continuar, al igual que su capacidad para investigar automáticamente dichas vulnerabilidades mediante la realización de los mismos ataques que un pentester humano habría hecho manualmente.
Hasta ahora, los escáneres de vulnerabilidades han tenido dificultades para probar sistemas con variables dinámicas. Por este motivo, han funcionado mucho mejor al probar infraestructuras que al probar aplicaciones web más complejas. Esto se debe a que tales variables pueden encontrarse en situaciones en las que los sistemas y sus datos cambian en función de diferentes entradas o secuencias. Por ejemplo, en un sitio web de comercio electrónico, un pentester humano podría introducir diferentes datos en los campos de pago del cliente en cada formulario de la página para ver qué efecto tiene. Un escáner, sin embargo, no ve el potencial de programar diferentes resultados interactuando con los campos. Sin contexto, sólo puede observar y realizar acciones aleatorias limitadas, en lugar de probar objetivamente el efecto de las variables. Por esta razón, la aportación y la experiencia humanas siguen siendo valiosas para probar las aplicaciones web.
El uso de escáneres en sistemas autenticados también conlleva riesgos empresariales. Esto se debe a que no pueden diferenciar de forma inteligente entre opciones «seguras» e «inseguras», sino que ejecutan un conjunto de instrucciones («if») preestablecidas. Desplegado en un sistema activo con acceso autenticado, donde el usuario está autorizado a realizar acciones críticas (como borrar datos), esto puede provocar la caída del sistema, interrupciones operativas y consecuencias irreversibles.
¿Cómo mejora la IA los escáneres de vulnerabilidades?
Empecemos por la capacidad de los escáneres para encontrar y comprobar vulnerabilidades más complejas. Antes, se necesitaba la intervención humana para encadenar acciones. Para hacerlo con eficacia, los humanos tienen que entender qué acciones están vinculadas y qué cadenas de acciones tienen consecuencias relevantes para el activo que están probando. La IA puede ordenar a los escáneres de vulnerabilidades que intenten múltiples técnicas diferentes, o que realicen una acción específica cuando se les presente un resultado, pero una acción distinta en respuesta a un resultado diferente.
Además de realizar pruebas para detectar vulnerabilidades más complejas, prevemos que la IA guiará a los escáneres sobre lo que no deben probar. La IA puede ayudar a que los escáneres sean más conscientes del contexto para que realicen menos acciones arriesgadas durante las pruebas. Utilizando conjuntos de reglas preprogramadas, los escáneres podrían recibir indicadores sobre funcionalidades que, si se probaran, podrían causar daños irreparables, como la eliminación de cuentas, datos o código. Tales reglas indicarían al escáner: «si te encuentras con X, no hagas Y».
Una vez finalizadas las pruebas, los escáneres tienen que enumerar las vulnerabilidades que han descubierto y clasificarlas según la gravedad del riesgo que presentan. Desgraciadamente, muchos escáneres enumeran varias de ellas de forma duplicada, como una configuración errónea que hace que la misma vulnerabilidad aparezca en docenas de lugares diferentes de una aplicación o sitio web, por ejemplo. La IA puede ayudar a los escáneres a evitar estos resultados. Del mismo modo, la IA puede ayudar a clasificar su gravedad con mayor precisión.
Cómo mejora la IA los escáneres de vulnerabilidades:
- Aumenta las vulnerabilidades que pueden identificar
- Mejora la capacidad para probar automáticamente esas vulnerabilidades
- Ayuda a comprender qué vulnerabilidades no deberían probar porque son demasiado arriesgadas
- Ayuda a eliminar el duplicado en los resultados de un escaneo para crear resultados más útiles para los pentester humanos
- Clasifica mejor la gravedad de las vulnerabilidades
¿La IA puede realizar penetration tests?
En febrero de 2024, los investigadores lograron demostrar que los agentes LLM (Large Language Models) pueden piratear sitios web de forma autónoma, realizando tareas tan complejas como la extracción de esquemas de bases de datos e inyecciones SQL sin necesidad de respuesta humana. Y lo que es más importante, estos agentes LLM no necesitan conocer de antemano las vulnerabilidades presentes en el sitio web.
Para ello, primero entrenaron a los agentes LLM para leer documentos, activar funciones para manipular un navegador web y recuperar resultados, así como acceder a información contextual de acciones anteriores. Probaron 15 vulnerabilidades, desde simples vulnerabilidades de inyección SQL hasta hacks más complejos que requerían tanto cross-site scripting (XSS) como cross-site request forgery (CSRF). Definieron un objetivo específico para cada vulnerabilidad (por ejemplo, robar información privada del usuario), y animaron al modelo a perseguir técnicas hasta la conclusión, sondear dificultades y problemas dentro de ciertas técnicas, y probar alternativas para que el agente LLM no se quedara atascado cuando ciertas técnicas fallaban.
GPT-4 tuvo una tasa de éxito del 42,7%, mientras que otros LLM de código abierto fracasaron por ser incapaces de utilizar las herramientas correctamente y no planificar adecuadamente. (De hecho, «planificar» cómo abordar tareas complejas es un área en la que los LLM siguen teniendo dificultades; intenta darle una suma muy compleja, por ejemplo, y verás resultados diferentes a los de una calculadora). Los investigadores lograron demostrar que si se elimina la capacidad de GPT-4 para recuperar documentos relacionados con la tarea, como instrucciones del sistema o blogs sobre piratería web, se reduce sustancialmente el rendimiento.
A pesar de su baja tasa de éxito, se trata de un indicio positivo de hacia dónde se dirige el uso de la IA para el pentesting y la explotación de vulnerabilidades. Lamentablemente, los actores de amenazas también tienen acceso a estas herramientas y las utilizarán con fines nefastos, como acelerar el desarrollo de exploits para nuevas vulnerabilidades que acaban de hacerse públicas en avisos de amenazas. Los nuevos hallazgos de la Universidad de Illinois Urbana-Champaign (UIUC) descubrieron que GPT-4 fue capaz de idear con éxito exploits para vulnerabilidades que han sido públicas durante un día.
Está claro que, aunque la IA sigue teniendo limitaciones y necesita un despliegue cuidadoso, también tiene el potencial de mejorar las actividades de pruebas de penetración.
Menos hombre versus máquina, más máquina
Tras empatar contra DeepMind, de IBM, el gran maestro ruso de ajedrez Gary Kaspárov empezó a explorar el concepto de ajedrez avanzado: humanos enfrentados entre sí utilizando superordenadores para planificar y predecir su siguiente movimiento. Explicó su hipótesis en DEF CON 25 con una fórmula sencilla: «Un jugador débil con una máquina ordinaria y un proceso superior dominará en una partida contra un jugador fuerte con una máquina fuerte y un proceso inferior». O, en pocas palabras, «tu trabajo no te lo quitará la IA, pero te lo quitará alguien que use IA».
En Claranet utilizamos la misma inspiración cuando estábamos construyendo Continuous security testing (CST). Al automatizar tareas repetitivas y de poco valor, como la búsqueda y clasificación de vulnerabilidades, permitimos a los expertos en pentesting centrarse en áreas en las que podían aplicar mejor su experiencia e ingenio.
Las CST aprovechan lo mejor de los escáneres automatizados y las pruebas de penetración manuales. Las herramientas de exploración automatizada funcionan 24 horas al día, 7 días a la semana, para revelar las vulnerabilidades de los activos orientados a la web, las API y la infraestructura externa. Después, expertos en pentesting analizan los resultados del escaneado, eliminan los falsos positivos, verifican manualmente las vulnerabilidades presentes y realizan más pruebas sobre algunas más complejas, o sobre aquellas que requieran encadenar varios ataques para alcanzar un objetivo final.
CST utiliza Qualys para automatizar la identificación de vulnerabilidades. También utiliza IA patentada desarrollada por Simon Kubicsek -Director Senior de Seguridad Ofensiva de Claranet- para acelerar la priorización de vulnerabilidades en función de su riesgo y la probabilidad de que sean explotadas. Esto ayuda a clasificar las vulnerabilidades para darles una puntuación de riesgo, que siempre es comprobada y aprobada por un probador de penetración humano.
¿La IA automatizará el proceso de pruebas de penetración?
La respuesta corta es, no completamente y no por mucho tiempo todavía. Si estás en el mercado del pentesting (o cualquier otro tipo de pruebas de seguridad ofensivas) ten cuidado con los proveedores de seguridad que destacan las pruebas de penetración automatizadas o autónomas, o las impulsadas por IA, en su marketing. Si dudas de su credibilidad, haces bien.
Los fallos de la IA son bien conocidos y las investigaciones actuales muestran que estos fallos ya son objetivos de los ciberatacantes. El «typosquatting», el intento de envenenar los conjuntos de datos de entrenamiento, la capitalización de las alucinaciones de la IA y la creación de repositorios de código que contienen malware, son sólo algunos ejemplos de por qué debemos invertir más recursos en asegurar los modelos de gran lenguaje.
La IA generativa puede hacer que las herramientas de pentesting sean más rápidas y exhaustivas, pero dichas herramientas seguirán necesitando ser creadas, gestionadas y ejecutadas por expertos en ciberseguridad. La dependencia excesiva de la IA plantea otras dificultades, relacionadas con algunos de los principios fundamentales del pentesting:
- Resultados incoherentes - Los resultados producidos por la IA generativa y los grandes modelos lingüísticos no siempre son coherentes. Los procesos utilizados en el pentesting deben ser coherentes y repetibles para que tengan valor para el cliente.
- Metodología poco clara - A menudo no está claro cómo una IA ha llegado a sus conclusiones y no pueden «mostrar su trabajo». Los modelos de IA tienen dificultades para proporcionar pruebas claras de lo que han hecho o podrían haber hecho. Los pentesting deben basarse en metodologías claras, proporcionando una prueba de concepto para que el exploit pueda recrearse después de la prueba.
- Falta de un control de calidad riguroso - Todas las pruebas de penetración manuales se someten a un control de calidad exhaustivo por parte de los miembros más veteranos del equipo, para garantizar que el cliente no reciba una prueba o un informe deficientes. Cuando se desconoce cómo ha llegado una IA a sus conclusiones, ¿de qué forma un proveedor de pentest puede garantizar razonablemente la calidad de sus resultados?
Debes tener cuidado al utilizar cualquier servicio o herramienta que parezca depender demasiado de las herramientas de IA. Para asegurarte de que estás obteniendo las mismas pruebas exhaustivas y la misma experiencia, así como el nivel de servicio que esperarías de las pruebas de penetración «tradicionales» o «manuales», investiga los detalles técnicos más finos. Pregunta a los posibles proveedores qué es exactamente lo que está automatizado, qué hace la IA, qué hacen los humanos y qué nivel de experiencia tienen. Pregúntales qué herramientas de acceso público utilizan sus probadores y qué software o herramientas patentados utilizan (si los hay). Compara los detalles de la descripción del servicio o el alcance del trabajo con cualquier otro proveedor de seguridad.
Si necesitas más información sobre cómo los penetration testing y los continuous security testing pueden mejorar la seguridad de tus aplicaciones web, contacta con nosotros. Estaremos encantados de ayudarte.