A divulgação de vulnerabilidades é o processo de trazer informações sobre falhas em sistemas operacionais, aplicativos, firmware e processos de negócios para o domínio público. O objetivo é garantir que os fornecedores de produtos corrijam as falhas, enquanto os usuários podem mitigar contra elas antes que essas mesmas falhas também sejam encontradas e exploradas por bandidos.
As vulnerabilidades geralmente são descobertas por pesquisadores de segurança que as procuram especificamente. Uma vez que os criminosos cibernéticos e os estados-nação adversárias também estão procurando por eles – e não há como saber se eles também os encontraram – é essencial que eles sejam corrigidos assim que forem descobertos e antes de serem explorados. A divulgação de vulnerabilidades por mocinhos é uma parte essencial desse processo.
Precisamos entender três termos: vulnerabilidades (uma falha ou bug no código); explorações (metodologia usada para manipular a vulnerabilidade); e patching (corrigindo a vulnerabilidade pelo fornecedor e implementando a correção pelo usuário).
Vulnerabilidades de zero-day
É útil entender o conceito de zero-dias (0-dias). As vulnerabilidades de 0 dias são conhecidas por um potencial invasor, mas ainda não conhecidas e, portanto, ainda não corrigidas pelo fornecedor. Em conseqüência, não há, em teoria, nenhuma defesa contra uma exploração de 0 dias desenvolvida para uma vulnerabilidade de 0 dias.
Tecnicamente, o termo se aplica ao período entre a descoberta e a correção. Este é um tempo variável, dependendo do tempo que o fornecedor leva para corrigir o problema. Em termos práticos, no entanto, a vulnerabilidade permanece uma vulnerabilidade de 0 dias para os indivíduos até que a correção do fornecedor seja implementada no computador do usuário.
Uma complicação para esta descrição – e um conceito que é importante para este post de blog – é a vulnerabilidade que só é conhecida, e mantida em segredo por bandidos. Foi descoberto, então é tecnicamente uma vulnerabilidade de 0 dias. Mas não é conhecido pelo público em geral. Ela efetivamente não existe – mas existe. Estes são os infames “desconhecidos desconhecidos” da segurança, e eles podem ser explorados por criminosos a qualquer momento.
Divulgação
A divulgação de vulnerabilidades é um processo importante para manter nossos produtos seguros. Os pesquisadores de segurança encontram as falhas, relatam-nas aos fornecedores, que depois as consertam. Essa é a teoria. Quando funciona, funciona bem; mas nem sempre funciona.
Existem duas abordagens básicas para a divulgação da vulnerabilidade dos pesquisadores, que se caracterizam pelos termos ‘divulgação completa’ e ‘divulgação responsável’.
Divulgação completa
O conceito de divulgação completa implica a publicação imediata e completa de todos os detalhes da vulnerabilidade descoberta – possivelmente incluindo uma exploração para demonstrar a vulnerabilidade. Seguidores desta doutrina acreditam que é a única maneira de garantir que o fornecedor corrija o problema com toda a pressa possível.
Corrigir falhas de código pode ser um exercício demorado e caro para o fornecedor, e reconhecer que eles venderam software com bugs pode prejudicar sua reputação. Historicamente, muitas empresas têm tomado a visão de que quanto menos pessoas sabem sobre a fraqueza, mais seguro seu produto permanece (e, claro, economiza tempo, dinheiro e reputação). Então, eles não fazem nada, ou fazem muito lentamente.
No entanto, os pesquisadores estão cientes de que se eles podem encontrar a falha, outros também podem. Há sempre a possibilidade de que a falha seja uma das desconhecidas desconhecidas que poderiam ser exploradas, possivelmente em grande escala, a qualquer momento. A única solução é que o fornecedor resolva o problema o mais rápido possível, e a divulgação completa é considerada por alguns pesquisadores como a melhor maneira de garantir isso.
A fraqueza neste argumento é que a divulgação completa também diz aos bandidos sobre a falha. A divulgação total da vulnerabilidade muitas vezes degenera em uma corrida entre o fornecedor e o bandido – um para corrigi-lo e o outro para explorá-lo.
Divulgação Responsável
A divulgação responsável é a rota preferida por quase todos os fornecedores e empresas de segurança. Em sua forma bruta, trata-se simplesmente da divulgação privada da vulnerabilidade apenas para o fornecedor, sem divulgação pública até depois que a vulnerabilidade for corrigida – se é que alguma vez.
Na maioria dos casos, o pesquisador aplica um limite de tempo. Se a vulnerabilidade não for corrigida dentro de um determinado tempo, ela será divulgada publicamente. Em termos práticos, a divulgação responsável é um compromisso entre o que os fornecedores gostariam (sem divulgação pública) e a divulgação completa. Programas de recompensa de bugs surgiram onde os fornecedores oferecem programas que seduzem os pesquisadores a divulgar de forma responsável bugs em troca de compensação e reconhecimento. Esses programas são um pouco controversos e justificam uma discussão mais profunda no futuro.
A equipe de pesquisa do Project Zero do Google está atualmente experimentando uma pequena variação. As vulnerabilidades são divulgadas privadamente ao fornecedor, dando ao fornecedor 90 dias para corrigir o problema antes da divulgação pública. Agora, no entanto, a divulgação pública não ocorrerá até depois do período de 90 dias, independentemente da rapidez com que o fornecedor corrige a vulnerabilidade. Esta é uma tentativa de ajudar a aliviar o ‘problema do patch’; uma questão separada que, no entanto, tem um forte impacto nas vulnerabilidades de 0 dias.
O problema do patch
A teoria da divulgação é que os pesquisadores descobrem e divulgam vulnerabilidades (nesta fase, provavelmente vulnerabilidades de 0 dias); os fornecedores corrige as vulnerabilidades e atualizaseus produtos; e as atualizações do usuário (patches) do produto instalado. O problema é que os usuários são pobres em atualizar seus produtos instalados. Até que o façam, para eles a vulnerabilidade não é apenas uma vulnerabilidade de 0 dias, agora é um dia 0 conhecido pelos criminosos. Este é um grande problema de segurança cibernética.
O hack equifax de 2017 foi realizado através de uma falha de segurança que havia sido divulgada e corrigida dois meses antes da violação ocorrer – mas a Equifax não conseguiu implementar o patch em todos os seus servidores.
Até mesmo os infames surtos globais de ransomware WannaCry e NotPetya foram ativados através de uma vulnerabilidade que já havia sido corrigida pela Microsoft. Neste caso, o ransomware se espalhou rapidamente pelo mundo usando uma vulnerabilidade conhecida como EternalBlue. EternalBlue foi uma das várias vulnerabilidades ‘secretas’ mantidas pela NSA para seu próprio uso. Ele foi roubado e tornado público por um grupo de hackers conhecido como ShadowBrokers — e tem sido usado regularmente por diferentes criminosos e diferentes malwares desde então. Embora tecnicamente tenha deixado de ser uma vulnerabilidade de 0 dias no momento em que a Microsoft a corrigiu, ela permanece efetivamente um dia 0 para todos os usuários que não implementaram a correção EternalBlue.
Vulnerabilidades de 0 dias armazenadas secretamente pelos serviços de inteligência do mundo para seus próprios fins ofensivos e defensivos é uma complicação adicional para a teoria da divulgação.
Estoques de 0 dias do governo
Agências de inteligência do governo operam – e em alguns casos publicaram – o que eles chamam de “processo de ações” (NSA aqui; GCHQ aqui). Simplificando, esta é uma admissão de que eles possuem estoques de vulnerabilidades de 0 dias, e uma confirmação de que, em alguns casos, eles não as divulgarão aos fornecedores. As agências argumentam que se as vulnerabilidades representam mais uma ameaça para a economia nacional do que fornecem uma oportunidade para operações de inteligência ofensiva, elas as divulgarão – mas não de outra forma.
Em outras palavras, são 0 dias e permanecerão 0 dias se as agências sentirem que podem ser úteis para seus próprios propósitos. O infame ataque de Stuxnet contra o projeto nuclear iraniano (pensado, mas não comprovado, como um exercício conjunto da NSA e de Israel) usou várias façanhas de 0 dias para alcançar seu propósito.
Isso significa que um pesquisador que encontra uma nova vulnerabilidade não tem como saber se essa vulnerabilidade já é conhecida por uma nação adversária, e pode ser explorada com efeito dramático a qualquer momento. Isso, por sua vez, adiciona pressão sobre a rapidez com que o pesquisador deve divulgar a vulnerabilidade e quanto tempo o fornecedor deve ser dado para emitir uma correção.
Ambos os lados do processo de ações foram testemunhados nos últimos anos. Estoques não revelados da NSA foram roubados pelos ShadowBrokers e vazaram para efeito devastador(WannaCry e NotPetya), enquanto os 0 dias da CIA vazaram no que ficou conhecido como o vazamento do ‘Vault 7’.
Mais recentemente, a NSA divulgou uma grande vulnerabilidade à Microsoft que foi corrigida pela Microsoft em janeiro de 2020. Isso mostra o processo de ações trabalhando em benefício de pessoas e negócios, embora na realidade não sabemos se a decisão de compartilhar foi altruísta, ou porque também, como eternalblue, tinha sido roubado, ou mesmo se a NSA tinha tomado conhecimento de que agências estrangeiras também estavam em posse dele.
Resumo
O problema da divulgação não tem solução. Tudo o que podemos fazer é tentar, sempre que possível, escolher a opção menos ruim. O consenso atual é que esta é uma forma de divulgação responsável dando aos fornecedores a oportunidade de corrigir a vulnerabilidade antes que ela seja tornada pública. Mas isso não leva em conta as vulnerabilidades que já são conhecidas, e talvez até mesmo sendo exploradas por criminosos e estados-nação adversários. Também não oferece qualquer solução para a possibilidade de que a vulnerabilidade possa ser mantida para uso por uma nação adversária, ou mantida e roubada de nossas próprias agências de inteligência.
Até certo ponto, no entanto, o problema é acadêmico. Mesmo quando as vulnerabilidades são encontradas e rapidamente corrigidas pelos fornecedores, nós, os usuários, somos muito ruins em implementar os patches dos fornecedores. Essas vulnerabilidades permanecem efetivamente vulnerabilidades de 0 dias para qualquer sistema não corrigido. O perigo agora, no entanto, é que os criminosos podem pegar e fazer engenharia reversa do patch, descobrir a vulnerabilidade e desenvolver uma exploração para ele às vezes dentro de dias do patch.
A ironia aqui é que as revelações que levam a correções que não implementamos nos deixam em maior risco do que nunca.
FONTE: AVAST