Mayhem: una m√°quina que puede detectar vulnerabilidades en los programas y repararlos

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.

Source: https://habr.com/ru/post/442178/


All Articles