DARPA busca alertar sobre vulnerabilidades sem abrir caminho para cibercriminosos

https://network-king.net/wp-content/uploads/2021/05/attack-successful_1341253412-769x414.jpg

Hoje, o processo de divulgação de vulnerabilidades de software é repleto de desafios. Pesquisadores de segurança cibernética e analistas de segurança de software enfrentam um dilema entre ética e eficácia quando se trata de relatar ou compartilhar bugs descobertos. Revelar uma vulnerabilidade publicamente pode chamar a atenção dos desenvolvedores do programa e motivar uma resposta oportuna, mas também pode resultar em um processo judicial contra o pesquisador. Além disso, a divulgação pública pode permitir que atores mal-intencionados explorem a descoberta antes que um patch ou correção possa ser aplicado. 

Em outra palavras, divulgar vulnerabilidades sem abrir caminho para ação de agentes mal-intencionados é um grande desafio, enfrentado por pesquisadores da área de segurança cibernética quando se sentem no dever de relatar publicamente a descoberta de falhas em software de terceiros, mas não desejam que essas informações se tornem uma arma nas mãos de  cibercriminosos.

Em tempos em que a demora na liberação de patches pode custar milhões ou bilhões de dólares ou até mesmo comprometer agências governamentais e o setor privado de países do porte dos Estados Unidos, como aconteceu com o caso SolarWinds, é fundamental contar com a capacidade de levar desenvolvedores de software a tomar ações corretivas diante da pressão da opinião pública, sem  contudo elevar o risco de atividades criminosas capazes de explorar as falhas divulgadas para promover invasões de sistemas e roubo de dados valiosos.

É nesse ponto nevrálgico que está atuando o programa SIEVE (Securing Information for Encrypted Verification and Evaluation) da DARPA, agência de pesquisas avançadas do Departamento de Defesa dos Estados Unidos. O projeto está explorando possíveis soluções por meio do uso das chamadas zero-knowledge proofs (ZKPs), ou provas de conhecimento zero, no processo de divulgação de vulnerabilidade.

O conceito, que não é novo, se baseia em métodos de criptografia, ZKPs são declarações de problemas matematicamente verificáveis ​​que podem ser usadas para raciocinar sobre software ou sistemas. As provas podem ser usadas publicamente sem revelar informações confidenciais. No caso da divulgação de vulnerabilidades, permitiria provar a desenvolvedores de software a existência de vulnerabilidades sem ter que revelar, por exemplo, um roteiro que, em mãos inadequadas, provocaria prejuízos incalculáveis.

Segundo o gerente do projeto da DARPA, antes do SIEVE, o foco principal da aplicação das ZKPs era maximizar a velocidade de comunicação e verificação de provas. Além do uso no próprio Departamento de Defesa, aplicações de criptomoedas e blockchain, por exemplo, exigem eficiência da comunicação e da verificação.

Em um ano do programa SIEVE, duas equipes já demonstraram a capacidade inédita de provar matematicamente a existência de vulnerabilidades, sem revelar detalhes críticos das falhas nem como explorá-las. Uma delas, liderada por Galois, comunicou uma vulnerabilidade de segurança de memória encontrada no dispositivo Game Boy Advance. A equipe combinou diferentes protocolos e análises de programa para avaliar as declarações do ZKP.  

Vulnerabilidades de segurança de memória são uma classe crítica de vulnerabilidades que ocorrem freqüentemente em softwares modernos. Na demonstração liderada por Galois, um pesquisador de vulnerabilidade foi capaz de convencer interativamente outra parte da existência da vulnerabilidade específica em cerca de oito minutos.

Uma segunda equipe de pesquisadores da Trail of Bits está trabalhando para modelar vulnerabilidades no nível de arquitetura de sistemas, que é um nível inferior de abstração do que Galois está trabalhando. Seu trabalho inicial criou uma maneira de representar arquiteturas de conjunto de instruções do mundo real como circuitos booleanos – ou modelos matemáticos de circuitos lógicos digitais – compatíveis com ZKPs para que os usuários possam demonstrar sua capacidade de forçar um binário público a um estado malicioso específico. 

O trabalho inicial da equipe usou o microcontrolador MSP430, um microprocessador comumente usado em sistemas embarcados. A partir daí, eles descobriram uma maneira de representar matematicamente uma variedade de vulnerabilidades comuns para que ZKPs pudessem ser desenvolvidos para provar a existência dessas vulnerabilidades. Os tamanhos das instruções ZKP variaram de 86 MB a 1,1 GB. Agora, essa equipe está buscando expandir a lista de arquiteturas e ambientes de execução com a qual poderia trabalhar. O objetivo é incluir grande parte da popular arquitetura x86. Por exemplo, eles planejam produzir ZKPs de binários do Cyber ​​Grand Challenge 2016 da DARPA, que são executados em DECREE – um sistema operacional simples construído em x86. 

Para os pesquisadores da DARPA, o grande obstáculo para adoção mais ampla desse método é encontrar uma maneira de traduzi-lo em uma linguagem fácil de compreender. Afinal, não adiantaria apresentar uma prova precisa se quem a recebê-la não for capaz de decifrá-la a ponto de se convencer.

Como funciona

Um exemplo simples para ilustrar como o método ZKP funciona é imaginar uma caverna e duas personagens, A e B. Ambos se encontram na frente dessa caverna, que tem duas entradas diferentes (1 e 2) para dois caminhos separados. Dentro da caverna, há uma conexão entre os caminhos, que só pode ser aberta com um código secreto. A personagem B é quem possui esse código, e a personagem A quer se certificar de que B não está mentindo.

Como B pode provar que tem o código sem revelar seu conteúdo? A solução é fazer com que a personagem A espere fora da caverna e B avance por qualquer uma das entradas aleatoriamente (1 ou 2). Então, na frente da caverna, a personagem A pede que B saia pelo outro caminho. De posse do código secreto, B poderá fazer isso sem problema algum, provando o fato.

FacebookTwitterLinkedIn