O programa conquistou o primeiro lugar no DARPA Cyber Grand Challenge, dedicado à automação ética de hackers

Em 2011, quando o investidor Mark Andrissen
disse que "os programas comem o mundo", essa idéia era nova. Agora é óbvio que o software penetra todos os aspectos de nossas vidas. Desde dispositivos eletrônicos complexos, como equipamentos médicos e robomobiles, até os mais simples, como lâmpadas conectadas à Internet e termômetros, o software nos rodeia.
E isso significa que estamos vulneráveis a ataques a este software como nunca antes.
A cada ano,
111 bilhões de linhas de código são adicionadas aos programas existentes e cada uma delas serve como uma nova meta em potencial. Steve Morgan, fundador e editor-chefe da empresa de pesquisa
Cybersecurity Ventures, prevê que hacks de sistema cometidos por vulnerabilidades anteriormente desconhecidas - o que o setor chama de "vulnerabilidade de dia zero" - acontecerão nos EUA diariamente até 2021, embora tenham acontecido
semanalmente em 2015 .
Para resolver esse problema, meus colegas da Universidade Carnegie Mellon e eu passamos quase 10 anos criando uma tecnologia que poderia automaticamente tornar o software seguro. Então, em 2012, fundamos o
ForAllSecure para apresentar nosso produto ao mundo. Precisávamos apenas provar que podemos fazer o que dizemos e fizemos na forma de participação na competição.
Os Sete Magníficos: Os computadores concorrentes brilham diante da platéia da final do Cyber Grand Challenge, realizado em Las Vegas em 2016.Avançando para 2016: nosso grupo se acumulou no banheiro de um hotel em Las Vegas e está roendo as unhas, tendo a certeza de que perdeu a competição, que levou milhares de horas para se preparar. Foi o DARPA Cyber Grand Challenge (CGC), um dos muitos eventos (como o Robot Car Competition, no início dos anos 2000), organizado pelo Departamento de Defesa dos EUA, Projetos de Pesquisa Avançada para estimular avanços tecnológicos para garantir a segurança nacional. O CGC surgiu porque a DARPA reconheceu que talvez chegasse o dia dos Estados Unidos quando eles não tiverem pessoas ou ferramentas suficientes para repelir ataques cibernéticos.
Existem hackers experientes em tecnologia no campo de batalha pela segurança cibernética e entre os melhores estão aqueles que são capazes de explorar criativamente as fraquezas do software para penetrar na defesa da organização. Os criminosos que fazem isso para fins pessoais são chamados hackers de chapéu preto, e geralmente criam ferramentas com as quais crianças de script, pessoas que usam programas prontos, podem criar o caos, como, por exemplo, aconteceu em 2016, quando as redes de bots da Internet as coisas lançaram um ataque maciço pela Internet, obtendo acesso a câmeras de vigilância em residências de pessoas comuns. Por outro lado, hackers éticos ou de chapéu branco usam suas habilidades para impedir esses ataques. Mas hackers éticos não são suficientes para proteger todo o software, cujo número no mundo comercial está crescendo rapidamente, sem mencionar a infraestrutura comum e as plataformas militares, vitais para a segurança nacional e global.
Em 2014, a DARPA anunciou o Cyber Grand Challenge - um projeto de dois anos para testar a viabilidade do desenvolvimento de sistemas de IA que podem encontrar, verificar e corrigir deficiências de software. Em 2015, cem equipes entraram na fase de pré-qualificação. Em 2016, sete deles chegaram à final, onde precisavam apresentar um sistema capaz de raciocinar - um que não apenas notasse o problema, mas também assumisse sua origem. O campeão recebe US $ 2 milhões e o segundo e terceiro lugares - US $ 1 milhão e US $ 750.000.
Depois que a DARPA divulgou esses detalhes, meus colegas e eu imediatamente percebemos que seria uma ótima oportunidade para demonstrar que nosso sistema automático de segurança cibernética não é um brinquedo teórico simples. Quando conversamos sobre o ForAllSecure, sempre nos deparamos com um ceticismo sobre a praticidade de nossa solução. Decidimos que precisávamos vencer a competição, já que estávamos trabalhando nela há uma década.
Nossa pesquisa na universidade começou com uma suposição simples: as pessoas precisam de uma maneira de testar o software que compram para garantir que seja seguro. Os programadores, é claro, farão todos os esforços para eliminar problemas de segurança, mas suas principais tarefas são mais simples: eles precisam liberar o produto dentro do prazo e garantir que ele faça o que for necessário. O problema é que os hackers encontrarão maneiras de fazer com que o software faça o que não deveria.
Hoje, as melhores práticas no campo da segurança de software envolvem o uso de ferramentas especiais para revisar o código fonte e identificar possíveis pontos fracos. Esse processo produz muitos resultados falso-positivos - marca lugares que não são realmente fracos -, portanto, uma pessoa deve passar por todos eles e verificar cada um deles. Para melhorar a velocidade da detecção de erros, algumas empresas confiam em hackers éticos que realizam uma análise única ou participam de programas de busca de bugs mediante pagamento de uma taxa e pagam pelo número e gravidade dos bugs detectados. Mas apenas as empresas mais bem-sucedidas podem se dar ao luxo de testar os programas da mais alta qualidade. E o problema só fica mais complicado quando vários componentes de código aberto e outros trabalhos de terceiros são incluídos no produto final.
Apresentamos o sistema Mayhem na competição, que automatiza o trabalho de hackers éticos. Ela não apenas apontou possíveis fraquezas, mas também explorou essas vulnerabilidades, provando sua fraqueza. Esse também foi um ponto-chave no CGC - demonstrar a prova de vulnerabilidade e criar uma exploração de trabalho foram algumas das maneiras de obter pontos de vitória. E como o Mayhem era uma máquina que pode ser dimensionada, essa análise pode ocorrer em velocidades inacessíveis aos seres humanos.
O caos, como seus seis rivais, exigia o resfriamento da água. Mas as estatísticas de consumo e temperatura mostraram que o Mayhem trabalhou mais ativamente que o resto.Abordamos a criação do Mayhem, com um sistema de análise de software pronto desenvolvido por nós na universidade e com base em uma análise formal do texto do programa. Este método pode ser comparado com uma fórmula matemática que descreve cada caminho que um programa pode seguir, ou seja, emitindo uma árvore analítica que se ramifica constantemente. Essa árvore pode rapidamente se tornar grande demais para trabalhar, mas criamos maneiras inteligentes de eliminar alguns caminhos que reduzem a árvore inteira a vários galhos. Depois disso, já podemos estudar os ramos restantes com mais detalhes.
A execução simbólica cria uma equação que denota toda a lógica do programa - por exemplo, x + 5 = 7 - e depois resolve essa equação. Compare essa estratégia com outro método de análise de software, o
fuzzing , ao tentar fornecer valores aleatórios ao programa em uma tentativa de eliminá-lo, após o qual você já pode identificar as vulnerabilidades que levaram ao desligamento e como elas podem ser usadas em um ataque deliberado. Fuzzing insere dados aleatórios até tornar verdadeiro o valor da equação, determinando que x = 2.
Ambas as abordagens têm seus pontos fortes, mas por muitos anos a difusão teve a vantagem da facilidade de implementação e da velocidade de processamento dos dados de entrada. O desempenho simbólico estava repleto de um potencial enorme e inexplorado para quem conseguisse domá-lo. No sistema Mayhem, que começamos a criar em 2010, conseguimos alcançar isso combinando as duas abordagens.
Fuzzing é uma tentativa de fazer suposições informadas a uma velocidade tremenda sobre que tipo de dados de entrada pode fazer com que um programa se comporte de alguma maneira de uma nova maneira e depois acompanhar que tipo de dados realmente leva a esse resultado. A execução simbólica é uma tentativa de solicitar que um matemático deduza formalmente quais dados de entrada podem ajudar a criar uma exploração. Descobrimos que alguns erros são melhor encontrados através de suposições rápidas e outros usando uma abordagem matemática. Portanto, decidimos usar os dois métodos em paralelo. A execução simbólica vai mais fundo no estudo seqüencial de uma parte do programa e fornece entradas que executam essa parte do código. Em seguida, o sistema passa esses dados para o programa de difusão, que começa a martelar nesta seção do código muito rapidamente, eliminando a vulnerabilidade.
Outra habilidade do Mayhem é trabalhar diretamente com código binário, ao contrário das pessoas que estudam arquivos de texto, ou seja, código-fonte. Isso significa que o sistema pode analisar o programa sem a ajuda da pessoa que o desenvolveu, e isso é muito importante no caso de programas que incluem componentes escritos por desenvolvedores de terceiros cujo código-fonte não pode mais ser encontrado. Mas é difícil fazer julgamentos sobre o código binário, porque, diferentemente do código-fonte, ele não possui funções, nem variáveis lógicas, nem abstrações de dados. O código binário possui apenas uma parte da memória e vetores de bits de comprimento fixo - uma estrutura eficiente de armazenamento de dados. Para trabalhar com esse código, você deve ser uma máquina e, para criar uma máquina que possa trabalhar com essas restrições, os engenheiros realmente tiveram que trabalhar muito.
Depois de determinar a vulnerabilidade, o Mayhem gera uma exploração funcional - um código que um hacker de chapéu preto poderia usar para quebrar. O objetivo é demonstrar que uma exploração pode ser usada para obter acesso privilegiado ao sistema operacional. Como resultado, o Mayhem identifica vulnerabilidades com certeza absoluta, e não apenas observa possíveis problemas, como a maioria das ferramentas de análise de código.
Em 2014, testamos o Mayhem em todos os programas incluídos na distribuição Debian, uma versão popular do Linux usada em todo o mundo para computadores e servidores de trabalho. O Mayhem encontrou quase 14.000 vulnerabilidades únicas e depois reduziu a lista para 250 novas que mereciam a maior prioridade. O teste inteiro levou uma semana, porque escalamos o Mayhem para muitos servidores na nuvem da Amazon e praticamente não exigimos intervenção humana. Enviamos as descobertas mais importantes para a comunidade Debian para revisão. Um dos motivos da nossa decisão de transformar um projeto de pesquisa em uma empresa comercial foi o desejo de colaborar em uma escala com os desenvolvedores, analisando milhares de programas em busca de um grande número de vulnerabilidades.
Equipe do projeto Mayhem: os engenheiros do ForAllSecure se posicionam contra o pano de fundo de sua criação em uma cerimônia de encerramento. O autor do artigo, David Bramley, está na primeira fila, terceiro da esquerda.Em 3 de junho de 2015, mais de cem participantes foram admitidos na rodada de qualificação e receberam 131 tarefas únicas, cada uma das quais com vulnerabilidades conhecidas. As sete equipes com mais pontos (emitidas para encontrar vulnerabilidades e correções para elas) chegaram às finais do Cyber Grand Challenge. O ForAllSecure mais que dobrou a conquista do participante que terminou em segundo lugar em pontos. E esse breve momento de alegria rapidamente deu lugar à percepção de que a pressão real começa apenas agora!
A tarefa de criar um sistema de tomada de decisão cibernético totalmente autônomo, baseado na tecnologia Mayhem, acabou sendo uma empresa muito difícil. Em particular, conseguimos fazer isso graças ao fato de a DARPA alocar sete finalistas para financiar o suficiente para apoiar um ano inteiro de desenvolvimento. Entre os principais componentes da tecnologia estão um conjunto de ferramentas que traduzem programas executáveis em uma linguagem relativamente fácil de entender e analisar, além de ferramentas ativas para encontrar e explorar vulnerabilidades, ferramentas protetoras para criar automaticamente patches para código binário defeituoso e um programa para coordenação eficiente do trabalho.
Na preparação para as finais, enfrentamos duas sérias dificuldades. Primeiro de tudo, embora estivéssemos satisfeitos com a maneira como o Mayhem lidou com a busca de vulnerabilidades, parecia-nos que os patches não seriam eficazes o suficiente. Na competição, como na realidade, não faz sentido adicionar um patch que consome mais tempo do processador do que custa para resolver esse problema. Portanto, trabalhamos por muito tempo em um sistema para adicionar patches automáticos que aumentam o consumo em não mais de 5%.
Em segundo lugar, precisávamos de uma estratégia vencedora. Suponha que encontramos uma vulnerabilidade e fizemos um patch para ela. Talvez você não deva rolar imediatamente, se isso atrasar demais o programa. Às vezes, vale a pena esperar e aplicar o patch apenas como último recurso. Desenvolvemos um sistema especialista que decide sobre quando corrigir o programa.
Quando nossa equipe entrou no salão de Las Vegas, onde as finais ocorreram em 5 de agosto de 2016, vimos sete enormes racks com luzes piscantes localizadas em um enorme palco, sob o qual havia um tanque com 180 toneladas de água que resfriava os computadores dos participantes. Os participantes precisavam preparar carros na noite anterior ao início da competição e, em seguida, a DARPA retirou todo o acesso a eles. Os carros foram cortados da Internet e geralmente do mundo exterior. Só podíamos monitorar como o Mayhem funciona, observar o consumo de energia e a temperatura do sistema, cujas estatísticas eram exibidas ao lado de cada rack. O caos trabalhou constantemente mais ativamente que os rivais - e esperávamos que este fosse um bom sinal.
Por quase 100 rodadas, os sistemas concorrentes receberam novos programas e tiveram que analisar o código de vulnerabilidades e emitir os patches necessários para proteção em apenas alguns minutos. Pontos em cada rodada foram dados pela capacidade da máquina de encontrar e provar a presença de vulnerabilidade, bem como pela eficácia dos patches.
Vitória por uma ampla margem: o Mayhem conseguiu criar uma grande margem e depois caiu após a 40ª rodada. Mas a equipe não sabia nada sobre essa lacuna até o final da competição.Para tornar a apresentação mais interessante, os organizadores decidiram informar os pontos finais apenas no final da competição. Isso significava que, no processo, não sabíamos se estávamos ganhando ou perdendo, apenas vimos o Mayhem enviar mensagens sobre as vulnerabilidades encontradas. No entanto, poucas horas após o início da competição, após a 40ª rodada, ficou claro para nós que o Mayhem parou de enviar mensagens. O programa travou.
Tudo dentro de nós encolheu, porque nos pareceu que nosso pior pesadelo estava se tornando realidade. Pedimos aos organizadores a oportunidade de reiniciar o programa, mas eles não nos permitiram fazer isso. E como apenas metade da competição foi concluída, começamos a nos preparar para uma derrota vergonhosa.
Os organizadores começaram a comentar sobre a situação no final da competição e belas visualizações nos mostraram como as máquinas de cada equipe encontravam e corrigiam problemas de segurança nos programas em segundos, em comparação com os meses ou anos que as pessoas passavam nele. O salão contou com a presença de mais de 5.000 pessoas, e comentaristas convidados - um astrofísico e hackers famosos - despertaram seu interesse. Preparamos para eles anunciar nossa derrota e confirmar com informações na tela.
No entanto, observando os pontos adicionados após cada rodada, percebemos subitamente que o intervalo inicial do Mayhem era suficiente para manter o primeiro lugar, embora ele tenha terminado de trabalhar após o 40º turno. Após o anúncio dos resultados da última rodada, é como se a montanha caísse de nossos ombros. Nós vencemos.
Mike Walker, diretor do programa DARPA, disse que essa demonstração autônoma de defesa cibernética foi "apenas o começo de uma revolução" no mundo da segurança de software. Ele comparou os resultados com os primeiros vôos dos irmãos Wright, que não voaram longe, mas mostraram o caminho para os voos transcontinentais.
Até agora, a ForAllSecure está vendendo as primeiras versões de seu novo serviço para clientes antigos, incluindo o governo dos EUA e empresas de alta tecnologia e aeroespacial. Nesta fase, o serviço basicamente determina se há problemas que são corrigidos por especialistas humanos. Por algum tempo, sistemas como o Mayhem trabalharão juntos com pessoas, especialistas em segurança, tornando o mundo do software um lugar mais seguro. Mas acreditamos que, em um futuro distante, a inteligência da máquina será capaz de lidar sozinha com essa tarefa.