Precisando testar sua segurança digital?
Fale com a gente!

BLOG

Google Chrome acometido por “Type Confusion”: o que é isso?

POR:

Adriano Mauro Cansian, Prof. Dr.

Na semana passada fomos surpreendidos com uma atualização de emergência do navegador Google Chrome, visando a correção de uma vulnerabilidade de software [1] que atinge computadores com Windows, Mac OS e Linux, e que tem potencial para permitir a invasão de dispositivos que estejam rodando a versão afetada. A versão corrigida é a versão Chrome 99.0.4844.84 e posteriores. O Google não deu mais informações sobre a vulnerabilidade, e declarou que os detalhes ficariam restritos até que a maioria dos usuários atualizassem seus softwares. Acompanhando a referência [1] será possível obter atualizações sobre este caso.

O problema atinge o mecanismo Chromium Open Source Software, [2] que é usado pelo Chrome, mas também pelo navegador Edge da Microsoft. Por conta disso, um dia depois do Google, a Microsoft emitiu seu próprio alerta [3], e informou que a falha no Edge foi corrigida na versão 99.0.1150.55.

Por enquanto sabe-se que o problema é devido a uma falha chamada de “Type Confusion”, ou “Confusão de Tipo”, no V8, que é o mecanismo JavaScript do Chrome. O mecanismo V8 também é usado no lado servidor no Node.js, mas não há informações que esta parte do software seja afetada.

Mas, do que se trata uma falha de “Type Confusion”? De forma bem objetiva e direta: é uma falha lógica causada pelo programador. É resultado de um erro no processo de programação. Um erro humano que pode ficar dormente por muito tempo, até que alguém o descubra.

A vulnerabilidade Type Confusion ou “Confusão de Tipo” é um problema conhecido e que acontece em algumas linguagens de programação. Como o próprio nome indica, Type Confusion é uma falha resultante de uma confusão entre os tipos de dados ou objetos utilizados, cometida ao desenvolver o software.

Quando o programador desenvolve um software ele precisa reservar recursos do computador para colocar informações na memória RAM. A memória RAM pode ser pensada como uma quantidade enorme de caixas com endereços que armazenam os dados. Ao reservar os recursos para o programa funcionar, o programador precisa “avisar” o que cada uma destas caixas de memória vai conter. Ou seja, ele deve programar qual tipo de objeto a memória vai conter. Por exemplo, ele precisa avisar se determinada posição de memória vai conter um número inteiro (por exemplo, um CPF), ou um bloco de caracteres (por exemplo, um parágrafo de texto). Isso permite que as informações, ou objetos, sejam encontradas, utilizadas e entendidas corretamente. Além disso, permite que dados sejam trocados entre as diversas partes do software, ou entre outros programas.

Se o programador inicializar um recurso, tal como um objeto ou variável, usando um tipo de dado (por exemplo um número Inteiro), mas posteriormente acessar esse recurso usando um tipo de dado incompatível com o tipo original (por exemplo, um bloco de texto), pode acontecer uma falha de Type Confusion. Isso pode fazer com que o programa tome um rumo inesperado, e faça operações que não deveria fazer, como, por exemplo, executar um programa de ataque ou um vírus. Ou seja, o programa fica “doido” ou confuso.

Type Confusion é um tipo de vulnerabilidade que, genericamente, faz parte da classe de falhas de “Buffer Overflow” ou “Extravasamento de Buffer” [4]. Uma consulta rápida à base de dados CVE – Common Vulnerabilities and Exposures nos permite ver que existem mais de 400 vulnerabilidades ocasionadas por Type Confusion [5], sendo a primeira delas relatada em 2010.

Mas, a pergunta que não quer calar é: se este é um problema de falha de programação, como uma empresa como o Google não a encontrou antes? O que ocorre é que os softwares atuais, principalmente os navegadores, são muito, muito, complexos, e executam muitas funções. Mesmo passando por rotinas de testes adequados uma falha pode demorar muito a ser descoberta, ou mesmo nunca ser encontrada ou ativada. Além disso, técnicas de ataque que não existiam antes podem ser desenvolvidas ou descobertas depois que o software foi produzido. Por este motivo, todo e qualquer software, principalmente aqueles expostos na Internet, devem passar por rotinas constantes de testes de vulnerabilidades, seguindo as recomendações internacionais e as melhores práticas vigentes. O preço da liberdade é a eterna vigilância! [5]

Perguntas e Respostas:

1.) Esta vulnerabilidade pode ser explorada remotamente?

R: Sim. Essa vulnerabilidade pode ser explorada por um invasor remoto, sem necessidade de autenticação, pela Internet.

2.) Como o invasor pode explorar essa vulnerabilidade?

R: O invasor tem que enganar a vítima para visitar um site especialmente criado para ataca-la. Este tipo de ataque geralmente é associado a uma campanha de SPAM ou Phishing, Fake News, e-mail marketing falso, posts em redes sociais, promoções falsas, dentre outros.

3.) Existe ferramenta conhecida, que explora essa vulnerabilidade?

R: Há relatos que sim.

Referências:

[1] https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-0609

[2] https://www.chromium.org/Home/

[3] https://msrc.microsoft.com/update-guide/vulnerability/CVE-2022-1096

[4] Para entender mais tecnicamente sobre Buffer Overlow, recomendamos uma leitura da referência https://inst.eecs.berkeley.edu/~cs161/fa08/papers/stack_smashing.pdf

[5] https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=Type+Confusion

[6] John Philpot Curran. SHAPIRO, Fred R. The Yale Book of Quotations, 2006.

RESH

Compartilhe:

Artigos Relacionados

Protegendo as Transações Financeiras: O Papel Vital do PCI DSS para a Segurança Empresarial
Cibersegurança e sustentabilidade empresarial​​
Quais as vantagens da cibersegurança ofensiva?
Protegendo as Transações Financeiras: O Papel Vital do PCI DSS para a Segurança Empresarial
Cibersegurança e sustentabilidade empresarial​​
Quais as vantagens da cibersegurança ofensiva?