Spook.js, uma nova técnica para explorar vulnerabilidades de Spectre no Chrome

Um grupo de pesquisadores de universidades americanas, australianas e israelenses relataram que descreveu uma nova técnica de ataque que permite explorar vulnerabilidades Classe Spectre em navegadores com tecnologia Chromium.

O ataque, codinome Spook.js, permite ao executar o código JavaScript ignorar o mecanismo de isolamento do site e ler o conteúdo de todo o espaço de endereçamento do processo atual, ou seja, acessar os dados das páginas que são executadas em outras abas, mas que são processadas no mesmo processo.

Como o Chrome lança sites diferentes em processos diferentes, os ataques práticos são limitados a serviços que permitem que diferentes usuários hospedem suas páginas. O método de ataque do Spook.js torna isso possível a partir de uma página na qual um invasor pode incorporar seu código JavaScript, determinar a presença de outras páginas abertas pelo usuário do mesmo site e extrair informações confidenciais deles, por exemplo, credenciais ou dados bancários substituídos pelo sistema de preenchimento automático em formulários da web.

Outra aplicação do método é um ataque aos plug-ins do navegador, que permite, quando um plug-in controlado por invasor é instalado, extrair dados de outros plug-ins.

Spook.js é aplicável a qualquer navegador baseado no mecanismo Chromium, incluindo Google Chrome, Microsoft Edge e Brave. Os pesquisadores também acreditam que o método pode ser adaptado para funcionar com o Firefox, mas como o motor do Firefox é muito diferente do Chrome, o trabalho de criação de tal exploit é deixado para o futuro.

Para se proteger contra ataques relacionados à execução especulativa de instruções por meio do navegador, a segmentação do espaço de endereço é implementada no Chrome: o isolamento da sandbox permite que o JavaScript funcione apenas com ponteiros de 32 bits e compartilha a memória do controlador em pilhas de 4 GB não sobrepostas.

Para organizar o acesso a todo o espaço de endereçamento do processo e evitar a limitação de 32 bits, os pesquisadores utilizaram a técnica de confusão de tipos, que permite que o mecanismo JavaScript processe um objeto com o tipo errado, possibilitando a formação de um código baseado em uma combinação de dois valores de 64 bits.

A essência do ataque é que, ao processar um objeto malicioso especialmente criado no mecanismo JavaScript, são criadas condições que levam à execução especulativa de instruções que acessam o array. O objeto é selecionado de forma que os campos controlados pelos atacantes sejam colocados na área onde o ponteiro de 64 bits é usado.

Como o tipo de objeto malicioso não corresponde ao tipo de array que está sendo processado, em condições normais essas ações são bloqueadas no Chrome pelo mecanismo de desotimização do código usado para acessar os arrays. Para resolver esse problema, o código de ataque Type Confusion é colocado em um bloco condicional "if", que não dispara em condições normais, mas é executado em modo especulativo, se o processador predizer incorretamente mais ramificações.

Como resultado, o processador acessa especulativamente o ponteiro de 64 bits gerado e reverte o estado após determinar a previsão com falha, mas os rastros de execução são definidos no cache compartilhado e podem ser restaurados usando métodos para determinar o conteúdo do cache por meio de terceiros. canais de terceiros, analisando a mudança no tempo de acesso aos dados armazenados em cache e não armazenados em cache.

Para analisar o conteúdo do cache nas condições de precisão insuficiente do temporizador disponível em JavaScript, é utilizado um método proposto pelo Google que engana a estratégia de despejo de dados do cache Tree-PLRU usada nos processadores e permite, ao aumentar o número de ciclos, aumentar significativamente a diferença de tempo na presença e ausência de um valor no cache.

Pesquisadores lançaram um protótipo de exploit que funciona no Chrome 89 en sistemas com Intel i7-6700K e i7-7600U. O exploit foi criado usando protótipos de código JavaScript previamente publicados pelo Google para realizar ataques Spectre.

Finalmente, os pesquisadores mencionam que conseguiu preparar exploits de trabalho para sistemas baseados em processadores Intel e Apple M1, que têm a oportunidade de organizar a leitura da memória a uma velocidade de 500 bytes por segundo e com uma precisão de 96%. O método deveria ser aplicável aos processadores AMD, mas não foi possível preparar um exploit totalmente funcional.

fonte: https://www.spookjs.com