Autor: Vinh T. Nguyen - Chefe de Equipa
Introdução
Uma vulnerabilidade num sistema informático é um ponto fraco que um atacante pode explorar para utilizar esse sistema de forma não autorizada [1]. A vulnerabilidade Software , em particular, é um desafio de cibersegurança com que as organizações têm de lidar regularmente, devido à natureza em constante mudança e à complexidade do software.
Os métodos mais comuns que as organizações utilizam para avaliar o risco de vulnerabilidades nas suas redes informáticas podem ser agrupados em duas grandes categorias: baseados na rede e baseados no anfitrião [2]. Os métodos baseados na rede sondam a rede sem iniciar sessão em cada anfitrião, para detetar serviços, dispositivos e dados vulneráveis em trânsito. Os métodos baseados no anfitrião iniciam sessão em cada anfitrião e reúnem uma lista de software, componentes e configurações vulneráveis. Cada categoria lida com o risco de formas diferentes, mas nenhuma delas pode detetar vulnerabilidades a menos que o software vulnerável já esteja implantado num anfitrião.
Na prática, as avaliações são normalmente programadas de modo a não afectarem as operações normais. Isto deixa uma janela de oportunidade entre a altura em que o software vulnerável é implementado e o início da avaliação, que os atacantes podem utilizar para comprometer um anfitrião e, consequentemente, uma rede.
Esta situação requer um método de análise que possa fechar essa janela e reduzir o risco global de vulnerabilidade. OPSWAT file-based vulnerability assessment faz isso associando ficheiros binários (como instaladores, executáveis, bibliotecas dinâmicas, etc.) a vulnerabilidades comunicadas. Este método pode detetar componentes de software vulneráveis antes de serem implantados, de modo a que os analistas de segurança e os administradores de sistemas possam rapidamente tomar as medidas adequadas, fechando assim a janela.
Nas secções seguintes, explicamos a tecnologia e os seus casos de utilização com mais pormenor e damos exemplos de ataques conhecidos que estão relacionados com estes casos de utilização. De seguida, apresentamos uma demonstração de exploração e concluímos sobre a tecnologia e o seu potencial.
Porque é necessário outro método de deteção
Limitações dos métodos tradicionais
Os métodos tradicionais de deteção de vulnerabilidades de software funcionam a um nível abstrato. Quando a análise baseada na rede sonda uma rede informática e a análise baseada no anfitrião recolhe dados de uma máquina, normalmente determinam quais as verificações a executar com base no ambiente do sistema, para garantir um elevado desempenho (tempo de análise, largura de banda da rede, utilização de memória, etc.) e para filtrar resultados irrelevantes. Por vezes, os métodos de avaliação dependem tanto do ambiente de um sistema para obter informações que não efectuam as verificações adequadas, devido a idiossincrasias no mesmo ambiente em que se baseiam.
Por exemplo, se um serviço de rede vulnerável for encerrado antes de uma avaliação (acidental ou intencionalmente), a análise não detectará qualquer vulnerabilidade no serviço. Além disso, a eliminação da chave de registo do Windows que contém o caminho de instalação de uma aplicação pode deixar a própria aplicação e as suas vulnerabilidades intactas e não detectadas pela análise baseada no anfitrião. Em ambos os casos, os métodos de verificação são menos eficazes porque dependem da pegada do produto instalado.
O produto instalado é um conjunto de ficheiros (como um executável, uma biblioteca, uma base de dados, etc.) empacotados e combinados com a lógica de implementação. A lógica de implantação segue normalmente uma convenção para escrever a pegada do produto numa localização (por exemplo, o Registo no sistema operativo Windows, a porta 3306 para o MySQL). Esta pegada não define o produto em si e pode ser alterada em qualquer altura durante o tempo de vida do produto. Por conseguinte, confiar na pegada (como o fazem as verificações baseadas na rede e no anfitrião) para detetar o produto e a sua vulnerabilidade tem o risco de deteção incorrecta.
Introdução à digitalização baseada em ficheiros
File-based vulnerability assessment é diferente dos métodos de avaliação tradicionais. Como o seu nome indica, funciona numa base de ficheiro a ficheiro e ignora todas as abstracções de alto nível do produto. Analisando cada vulnerabilidade comunicada e mapeando-as para instaladores de produtos e ficheiros de componentes principais (patente U.S. 9749349 B1), o file-based vulnerability assessment pode detetar se um ficheiro binário está associado a uma vulnerabilidade, expondo assim as vulnerabilidades mesmo quando o produto não está a ser executado ou a sua pegada foi modificada.
Embora a diferença entre o rastreio baseado em ficheiros e o rastreio baseado na rede seja clara, a diferença entre o rastreio baseado em ficheiros e o rastreio baseado no anfitrião não é tão clara. Pode argumentar-se que a verificação baseada no anfitrião não se baseia completamente na pegada do produto, que também verifica a versão do ficheiro do(s) componente(s) principal(is) do produto. Assim, a lógica de rastreio pode ser modificada para fazer apenas essa verificação da versão do ficheiro, tornando assim o rastreio baseado em ficheiros um subconjunto do rastreio baseado no anfitrião.
Não é esse o caso, uma vez que:
- A verificação baseada no anfitrião é muitas vezes programada para utilizar o ambiente do sistema e a área de cobertura do produto para filtrar as verificações a efetuar
- Ao concentrar-se em encontrar e analisar os ficheiros que causam vulnerabilidades, a análise baseada em ficheiros pode detetar algumas vulnerabilidades que são difíceis de detetar com o método baseado no anfitrião e é adequada para mais casos de utilização
A verificação baseada em ficheiros pode ser utilizada para detetar instaladores vulneráveis, pacotes de firmware, ficheiros de biblioteca, ficheiros de componentes de produtos, etc. que entram e saem das redes através de gateways ou que entram e saem de pontos finais (através de correio eletrónico, unidades flash, etc.). Isto permite que os administradores de sistemas e os utilizadores verifiquem a vulnerabilidade de um produto antes de o utilizarem e garantam a proteção quando o anfitrião não é suportado pelos métodos de verificação baseados no anfitrião ou na rede que a organização utiliza atualmente.

File-based vulnerability assessment também pode ser utilizada para descobrir potenciais vulnerabilidades em máquinas existentes. Uma vez que os métodos de análise tradicionais efectuam normalmente verificações de vulnerabilidades com base em relatórios vagos e de alto nível em fontes de divulgação pública, a análise em si pára frequentemente a um nível elevado (pegada do produto) e não entra nos pormenores nem da vulnerabilidade nem do produto comunicado.
No entanto, uma vez que os produtos reutilizam frequentemente os componentes uns dos outros (bibliotecas dinâmicas e serviços partilhados são alguns exemplos), a atualização de um produto vulnerável ou mesmo a sua eliminação nem sempre garante que os ficheiros que causam a vulnerabilidade desapareceram. Podem ainda estar algures no sistema de ficheiros e fornecer uma plataforma para os atacantes voltarem a ligar esses componentes e causarem estragos. Estes ficheiros têm frequentemente toda a integridade que se pode pedir. Têm um objetivo claro, são amplamente conhecidos, provêm de fontes fidedignas, têm assinaturas válidas e ainda existem em alguns dos mais recentes pacotes de software. A tecnologia File-based vulnerability assessment permite aos administradores de sistemas analisar as máquinas e encontrar ficheiros vulneráveis escondidos antes de os atacantes terem a oportunidade de os utilizar.

Desafios da tecnologia
Ainda assim, operar ao nível do ficheiro tem as suas limitações. Pode marcar um ficheiro como vulnerável quando a vulnerabilidade exige que vários ficheiros sejam carregados em conjunto para ser desencadeada (falso positivo). Isto deve-se, em parte, à falta de contexto (ao analisar um único ficheiro) e à imprecisão dos relatórios de divulgação. Pode também marcar um ficheiro verdadeiramente vulnerável como limpo (falso negativo), devido à incompletude da base de dados de ficheiros e, mais uma vez, à imprecisão dos relatórios.
Na OPSWAT, entendemos isso e estamos constantemente a melhorar a nossa tecnologia de file-based vulnerability assessment , de modo a cobrir mais vulnerabilidades, reduzindo ao mesmo tempo as taxas de falsos positivos/negativos. Integrámos esta tecnologia em muitos dos produtos da nossa família MetaDefender (como o MetaDefender Core, MetaDefender Cloud, Drive, Kiosk, ICAP Server, etc.), para ajudar as organizações a fornecer uma defesa aprofundada das suas redes críticas [3].
Explorações conhecidas
Já é suficientemente difícil para os administradores de sistemas monitorizarem os relatórios de divulgação de todo o software que a organização utiliza, quanto mais conhecer e monitorizar todos os componentes desse software. O que torna possível que o software que utiliza componentes antigos que contêm vulnerabilidades evite a deteção e entre nas organizações. Isto pode tornar os componentes vulneráveis num grande problema.
Um exemplo é o CVE-2019-12280 [4], a vulnerabilidade do caminho de pesquisa de biblioteca não controlada do Dell SupportAssist. Esta vulnerabilidade permite que um utilizador com poucos privilégios execute código arbitrário com privilégios SYSTEM e obtenha controlo total sobre uma máquina. Originalmente, esta vulnerabilidade provinha de um componente fornecido pelo PC-Doctor para diagnosticar máquinas. Ambos os fornecedores lançaram correcções para resolver o problema.
Outro exemplo é o CVE-2012-6706 [5], uma vulnerabilidade crítica de corrupção de memória que pode levar à execução arbitrária de código e ao comprometimento de uma máquina ao abrir um ficheiro especialmente criado. Foi originalmente reportado que afectava os produtos antivírus Sophos, mas mais tarde descobriu-se que provinha de um componente chamado UnRAR, que lida com a extração de ficheiros [6].
Estes tipos de vulnerabilidades muitas vezes não podem ser completamente denunciados, uma vez que existem demasiados produtos que utilizam os componentes vulneráveis. Por conseguinte, mesmo que os administradores de sistemas conheçam todos os produtos em utilização e os monitorizem de perto em relação a fontes comuns de divulgação, ainda há muito espaço para um atacante passar.
Demonstração
Vamos analisar mais detalhadamente um caso em que um componente vulnerável causa problemas num anfitrião. Vamos utilizar uma versão antiga do Total Commander [7] que contém um UnRAR.DLL [8] que é afetado pelo CVE-2012-6706 [5]. Observe que esse CVE não relata o Total Commander. Os utilizadores avançados com privilégios de administração utilizam frequentemente este software, pelo que a exploração bem sucedida da vulnerabilidade pode ajudar um atacante a utilizar um anfitrião para assumir o controlo da rede de uma organização.
Especificação da demonstração:
- Sistema operativo: Windows 10 1909 x64.
- Software: Total Commander v8.01 x86 com a biblioteca UnRAR v4.20.1.488.
- Os dados criados são criados pelo grupo de investigação de segurança da Google no Exploit-DB [9].
A corrupção da memória ocorre quando o Total Commander utiliza o UnRAR.DLL para extrair um ficheiro especialmente concebido. O atacante pode então executar código arbitrário na máquina com o privilégio do utilizador do Total Commander. Os atacantes sofisticados podem plantar mais ficheiros aparentemente legítimos, mas vulneráveis, em toda a máquina para outros ataques.

As versões recentes do Total Commander não têm esta vulnerabilidade, uma vez que utilizam uma versão mais recente do UnRAR.DLL. Assim, como sempre, os utilizadores devem manter o seu software atualizado, mesmo que não exista qualquer relatório de divulgação sobre o mesmo, e especialmente se não tiverem efectuado uma atualização durante muito tempo (esta versão do Total Commander foi lançada em 2012).
Conclusão
As vulnerabilidades Software permitem aos atacantes obter acesso ou assumir o controlo dos recursos organizacionais. Dois métodos comuns para detetar vulnerabilidades são o scanning baseado na rede e no anfitrião. Normalmente operam a um nível de abstração elevado e podem perder informações importantes, devido a alterações no ambiente de um computador.
A tecnologia de file-based vulnerability assessment da OPSWATopera ao nível dos ficheiros para alertar os administradores de sistemas sobre instaladores e componentes de software vulneráveis que entram e saem da organização, reduzindo o risco de segurança antes da implementação e durante a utilização. A tecnologia foi integrada nos produtos MetaDefender , tais como Core, Cloud API, Drive, Kiosk, etc., para cobrir uma vasta gama de casos de utilização.
A deteção de vulnerabilidades numa base de ficheiro a ficheiro é diferente dos métodos tradicionais e tem um novo potencial, novos casos de utilização, bem como desafios. Em OPSWAT, estamos constantemente a melhorar a nossa tecnologia para ultrapassar os desafios e ajudar a proteger as redes críticas das organizações contra ameaças de cibersegurança em constante evolução.
Referências
[1] "Vulnerabilidade (computação)", [Online].
[2] "Vulnerability scanner," [Online].
[3] "MetaDefender - Plataforma Avançada de Prevenção de Ameaças," [Online].
[4] "CVE-2019-12280 - MetaDefender," [Online].
[5] "CVE-2012-6706 - MetaDefender," [Online].
[7] "Total Commander - home", [Em linha].
[8] "WinRAR archiver - RARLAB," [Online].
[9] "unrar 5.40 - 'VMSF_DELTA' Filtro de escrita de memória arbitrária," [Online].