El programa ganó el primer lugar en el DARPA Cyber Grand Challenge, dedicado a la automatización de piratería ética

En 2011, cuando el inversionista Mark Andrissen
dijo que "los programas comen el mundo", esta idea era nueva. Ahora es obvio que el software penetra todos los aspectos de nuestras vidas. Desde dispositivos electrónicos complejos como equipos médicos y robots robóticos hasta los más simples, como bombillas conectadas a Internet y termómetros, el software nos rodea.
Y esto significa que somos vulnerables a los ataques a este software como nunca antes.
Cada año, se agregan
111 mil millones de líneas de código a los programas existentes, y cada una de ellas sirve como un nuevo objetivo potencial. Steve Morgan, fundador y editor jefe de la firma de investigación
Cybersecurity Ventures, predice que los piratas informáticos cometidos a través de vulnerabilidades previamente desconocidas, lo que la industria llama una "vulnerabilidad de día cero", ocurrirán en los Estados Unidos diariamente para 2021, aunque ocurrieron
semanalmente en 2015 .
Para resolver este problema, mis colegas de la Universidad Carnegie Mellon y yo pasamos casi 10 años creando una tecnología que automáticamente podría hacer que el software sea seguro. Luego, en 2012,
fundamos ForAllSecure para presentar nuestro producto al mundo. Solo necesitábamos demostrar que podemos hacer lo que decimos, y lo hicimos en forma de participación en la competencia.
The Magnificent Seven: las computadoras competidoras brillan frente a la audiencia de la final del Cyber Grand Challenge, celebrado en Las Vegas en 2016.Avance rápido hasta 2016: nuestro grupo se ha acumulado en el baño de un hotel en Las Vegas y se está mordiendo las uñas, asegurándose de que ha perdido la competencia, para lo que tomó varios miles de horas prepararse. Fue el DARPA Cyber Grand Challenge (CGC), uno de los muchos eventos (como el Robot Car Competition a principios de la década de 2000) organizado por los Proyectos de Investigación Avanzada del Departamento de Defensa de los Estados Unidos para estimular avances tecnológicos para garantizar la seguridad nacional. El CGC surgió porque DARPA reconoció que podría llegar el día de los Estados Unidos cuando no tengan suficientes personas o herramientas para repeler los ciberataques.
Hay piratas informáticos expertos en tecnología en el campo de batalla por la ciberseguridad, y entre los mejores están aquellos que pueden explotar creativamente las debilidades del software para penetrar en la defensa de la organización. Los delincuentes que hacen esto para sus fines personales se llaman piratas informáticos, y a menudo crean herramientas con las que los niños de script, las personas que usan programas ya preparados, pueden crear el caos, como, por ejemplo, sucedió en 2016, cuando las botnets de Internet Las cosas lanzaron un ataque masivo a través de Internet, obteniendo acceso a cámaras de vigilancia en hogares de personas comunes. Por el contrario, los piratas informáticos éticos o de sombrero blanco, usan sus habilidades para prevenir tales ataques. Pero los piratas informáticos éticos no son suficientes para proteger todo el software, cuyo número en el mundo comercial está creciendo rápidamente, sin mencionar la infraestructura común y las plataformas militares, vitales para la seguridad nacional y global.
En 2014, DARPA anunció el Cyber Grand Challenge, un proyecto de dos años para probar la viabilidad de desarrollar sistemas de inteligencia artificial que puedan encontrar, verificar y parchear las debilidades del software. En 2015, cien equipos entraron en la fase de precalificación. En 2016, siete de ellos llegaron a la final, donde debían presentar un sistema que fuera capaz de razonar, uno que no solo notara el problema, sino que también asumiera su origen. El campeón recibe $ 2 millones, y segundo y tercer lugar: $ 1 millón y $ 750,000.
Después de que DARPA publicara estos detalles, mis colegas y yo inmediatamente nos dimos cuenta de que esta sería una gran oportunidad para demostrar que nuestro sistema automático de ciberseguridad no es un simple juguete teórico. Cuando hablamos de ForAllSecure, siempre nos enfrentamos a un escepticismo sobre la practicidad de nuestra solución. Decidimos que necesitábamos ganar la competencia, dado que habíamos estado trabajando en ello durante una década.
Nuestra investigación en la universidad comenzó con una suposición simple: las personas necesitan una forma de probar el software que compran para garantizar que sea seguro. Los programadores, por supuesto, harán todo lo posible para eliminar los problemas de seguridad, pero sus tareas principales son más simples: necesitan lanzar el producto a tiempo y asegurarse de que haga lo que necesita. El problema es que los hackers encontrarán formas de hacer que el software haga lo que no debería.
Hoy, las mejores prácticas en el campo de la seguridad del software implican el uso de herramientas especiales para revisar el código fuente e identificar posibles debilidades. Este proceso produce muchos resultados falsos positivos, marca lugares que no son realmente débiles, por lo que una persona debe revisarlos todos y verificar cada uno de ellos. Para mejorar la velocidad de detección de errores, algunas empresas confían en piratas informáticos éticos que realizan un análisis único o participan en programas de búsqueda de errores por una tarifa, y les pagan por el número y la gravedad de los errores detectados. Pero solo las empresas más exitosas pueden permitirse probar los programas de más alta calidad. Y el problema solo se vuelve más complicado cuando se incluyen varios componentes de código abierto y otros trabajos de terceros en el producto final.
Presentamos el sistema Mayhem en la competencia, que automatiza el trabajo de los hackers éticos. Ella no solo señaló posibles debilidades, sino que explotó estas vulnerabilidades, demostrando su debilidad. Este también fue un punto clave en CGC: demostrar pruebas de vulnerabilidad y crear un exploit funcional fueron algunas de las formas de ganar puntos de victoria. Y dado que Mayhem era una máquina que se puede escalar, dicho análisis puede realizarse a velocidades inaccesibles para los humanos.
Mayhem, al igual que sus seis rivales, requería refrigeración por agua. Pero las estadísticas sobre consumo y temperatura mostraron que Mayhem trabajó más activamente que el resto.Nos acercamos a la creación de Mayhem, con un sistema de análisis de software listo para usar desarrollado por nosotros en la universidad, y basado en un análisis formal del texto del programa. Este método se puede comparar con una fórmula matemática que describe cada ruta que puede tomar un programa, es decir, emitir un árbol analítico en constante ramificación. Tal árbol puede volverse demasiado grande para trabajar rápidamente, pero hemos encontrado formas inteligentes de eliminar algunos caminos que reducen todo el árbol a varias ramas. Después de eso, ya podemos estudiar las ramas restantes con más detalle.
La ejecución simbólica crea una ecuación que denota toda la lógica del programa, por ejemplo, x + 5 = 7, y luego resuelve esta ecuación. Compare esta estrategia con otro método de análisis de software,
fuzzing , cuando intente alimentar valores aleatorios al programa en un intento de eliminarlo, después de lo cual ya puede identificar las vulnerabilidades que llevaron al cierre y cómo podrían usarse en un ataque deliberado. Fuzzing ingresa datos aleatorios hasta que hace que el valor de la ecuación sea verdadero, determinando que x = 2.
Ambos enfoques tienen sus puntos fuertes, pero durante muchos años el fuzzing tuvo la ventaja de la facilidad de implementación y la velocidad de procesamiento de datos de entrada. El rendimiento simbólico estaba cargado de un enorme potencial sin explotar para cualquiera que pudiera domesticarlo. En el sistema Mayhem, que comenzamos a crear en 2010, pudimos lograr esto combinando ambos enfoques.
Fuzzing es un intento de hacer suposiciones informadas a una velocidad tremenda sobre qué tipo de datos de entrada pueden hacer que un programa se comporte de una manera nueva, y luego realizar un seguimiento de qué tipo de datos realmente conduce a este resultado. La ejecución simbólica es un intento de pedirle a un matemático que deduzca formalmente qué datos de entrada pueden ayudar a crear un exploit. Descubrimos que algunos errores se encuentran mejor mediante suposiciones rápidas, y otros utilizando un enfoque matemático. Por lo tanto, decidimos usar ambos métodos en paralelo. La ejecución simbólica profundiza en el estudio secuencial de una parte del programa y proporciona información que ejecuta esta parte del código. Luego, el sistema pasa estos datos al programa fuzzing, que comienza a afectar esta sección de código muy rápidamente, eliminando la vulnerabilidad.
Otra capacidad de Mayhem es trabajar directamente con código binario, a diferencia de las personas que estudian archivos de texto, es decir, el código fuente. Esto significa que el sistema puede analizar el programa sin la ayuda de la persona que lo desarrolló, y esto es muy importante en el caso de programas que incluyen componentes escritos por desarrolladores externos cuyo código fuente ya no se puede encontrar. Pero es difícil hacer juicios sobre el código binario, porque, a diferencia del código fuente, no tiene funciones, ni variables lógicas, ni abstracciones de datos. El código binario tiene solo una pieza de memoria y vectores de bits de longitud fija, una estructura de almacenamiento de datos eficiente. Para trabajar con dicho código, debe ser una máquina, y para crear una máquina que pueda funcionar con tales restricciones, los ingenieros realmente tuvieron que trabajar mucho.
Después de determinar la vulnerabilidad, Mayhem genera un exploit funcional, un código que un hacker de sombrero negro podría usar para descifrar. El objetivo es demostrar que se puede utilizar un exploit para obtener acceso privilegiado al sistema operativo. Como resultado, Mayhem identifica vulnerabilidades con absoluta certeza y no solo observa posibles problemas, como lo hacen la mayoría de las herramientas de análisis de código.
En 2014, probamos Mayhem en todos los programas incluidos en la distribución Debian, una versión popular de Linux que se usa en todo el mundo para computadoras y servidores de trabajo. Mayhem encontró casi 14,000 vulnerabilidades únicas, y luego redujo la lista a 250 nuevas que merecían la máxima prioridad. Toda la prueba tomó una semana, porque escalamos Mayhem a muchos servidores en la nube de Amazon, y prácticamente no requirimos intervención humana. Enviamos los hallazgos más importantes a la comunidad Debian para su revisión. Una de las razones de nuestra decisión de convertir un proyecto de investigación en una empresa comercial fue nuestro deseo de colaborar a tal escala con los desarrolladores, analizando miles de programas en busca de una gran cantidad de vulnerabilidades.
Equipo del proyecto Mayhem: los ingenieros de ForAllSecure posan en el contexto de su creación en una ceremonia de clausura. El autor del artículo, David Bramley, está en primera fila, tercero a la izquierda.El 3 de junio de 2015, más de cien participantes fueron admitidos en la ronda de calificación, y se les asignaron 131 tareas únicas, cada una de las cuales tenía vulnerabilidades conocidas. Los siete equipos con más puntos (emitidos para encontrar vulnerabilidades y parches para ellos) llegaron a las finales del Cyber Grand Challenge. ForAllSecure más que duplicó el logro del participante que terminó segundo en puntos. ¡Y este breve momento de alegría rápidamente dio paso a la comprensión de que la presión real comienza solo ahora!
La tarea de crear un sistema de toma de decisiones cibernético totalmente autónomo basado en la tecnología Mayhem resultó ser una empresa muy difícil. En particular, logramos hacer esto gracias al hecho de que DARPA asignó a siete finalistas suficientes fondos para apoyar todo un año de desarrollo. Entre los componentes principales de la tecnología se encuentran un conjunto de herramientas que traducen programas ejecutables a un lenguaje que es relativamente fácil de entender y analizar, así como herramientas activas para encontrar y explotar vulnerabilidades, herramientas de protección para crear automáticamente parches para código binario defectuoso y un programa para la coordinación eficiente del trabajo.
En preparación para la final, enfrentamos dos serias dificultades. En primer lugar, aunque estábamos satisfechos con la forma en que Mayhem manejó la búsqueda de vulnerabilidades, nos pareció que los parches no serían lo suficientemente efectivos. En la competencia, como en realidad, no tiene sentido agregar un parche que devorará más tiempo del procesador del que cuesta resolver este problema. Por lo tanto, trabajamos durante mucho tiempo en un sistema para agregar parches automáticos que aumentan el consumo en no más del 5%.
En segundo lugar, necesitábamos una estrategia ganadora. Supongamos que encontramos una vulnerabilidad e hicimos un parche para ello. Tal vez no debería rodarlo de inmediato si ralentiza demasiado el programa. A veces vale la pena esperar y aplicar el parche solo como último recurso. Hemos desarrollado un sistema experto que toma una decisión sobre cuándo parchear el programa.
Cuando nuestro equipo ingresó al salón de baile de Las Vegas, donde se celebraron las finales el 5 de agosto de 2016, vimos siete enormes estantes con luces intermitentes ubicadas en un gran escenario, debajo del cual había un tanque con 180 toneladas de agua que enfriaba las computadoras de los participantes. Los participantes debían preparar los autos la noche anterior al inicio de la competencia, y luego DARPA les quitó todo el acceso. Los automóviles fueron desconectados de Internet y, en general, del mundo exterior. Solo pudimos monitorear cómo funciona Mayhem, observar el consumo de energía y la temperatura del sistema, cuyas estadísticas se muestran al lado de cada rack. Mayhem trabajó constantemente más activamente que sus rivales, y esperábamos que fuera una buena señal.
Durante casi 100 rondas, los sistemas de la competencia recibieron nuevos programas y tuvieron que analizar el código para detectar vulnerabilidades y emitir los parches necesarios para protección en solo unos minutos. Se otorgaron puntos en cada ronda por la capacidad de la máquina para encontrar y demostrar la presencia de vulnerabilidad, así como por la efectividad de los parches.
Victoria por un amplio margen: Mayhem logró crear un gran margen, y luego cayó después de la ronda 40. Pero el equipo no sabía nada sobre esta brecha hasta el final de la competencia.Para hacer la presentación más interesante, los organizadores decidieron informar los puntos finales solo al final de la competencia. Esto significaba que en el proceso no sabíamos si estábamos ganando o perdiendo, solo vimos a Mayhem enviar mensajes sobre las vulnerabilidades encontradas. Sin embargo, unas horas después del comienzo de la competencia, después de la 40ª ronda, nos quedó claro que Mayhem dejó de enviar mensajes. El programa se bloqueó.
Todo dentro de nosotros se encogió, porque nos parecía que nuestra peor pesadilla se estaba convirtiendo en realidad. Pedimos a los organizadores la oportunidad de reiniciar el programa, pero no nos permitieron hacerlo. Y como solo se completó la mitad de la competencia, comenzamos a prepararnos para una vergonzosa derrota.
Los organizadores comenzaron a comentar sobre la situación al final de la competencia, y hermosas visualizaciones nos mostraron cómo las máquinas de cada equipo encontraron y solucionaron problemas de seguridad en los programas en segundos, en comparación con los meses o años que la gente pasaría en él. Al salón asistieron más de 5,000 personas, y los comentaristas invitados, un astrofísico y hackers famosos, despertaron su interés. Nos preparamos para anunciar nuestra derrota y confirmarla con información en la pantalla.
Sin embargo, al observar los puntos que se agregaron después de cada ronda, de repente nos dimos cuenta de que la brecha inicial de Mayhem era suficiente para retener el primer lugar, aunque terminó trabajando después de la 40ª ronda. Después del anuncio de los resultados de la última ronda, es como si la montaña se cayera de nuestros hombros. Hemos ganado.
Mike Walker, director del programa DARPA, dijo que esta demostración autónoma de defensa cibernética fue "solo el comienzo de una revolución" en el mundo de la seguridad del software. Comparó los resultados con los primeros vuelos de los hermanos Wright, que no volaron lejos, pero mostraron el camino a los vuelos transcontinentales.
Hasta el momento, ForAllSecure está vendiendo las primeras versiones de su nuevo servicio a los primeros clientes, incluidos el gobierno de los EE. UU. Y las empresas de alta tecnología y aeroespaciales. En esta etapa, el servicio básicamente determina si hay problemas que luego son resueltos por expertos humanos. Durante bastante tiempo, sistemas como Mayhem trabajarán junto con personas, expertos en seguridad, haciendo del mundo del software un lugar más seguro. Pero creemos que en un futuro lejano, la inteligencia artificial podrá hacer frente a esta tarea por sí sola.