83 views 3 mins

Tecnologia 27/12/2018

em Tecnologia
quarta-feira, 26 de dezembro de 2018

Cylance detecta vulnerabilidade de corrupção de memória no mecanismo de scripts do Internet Explorer

A equipe global de Pesquisa e Inteligência da Cylance vem conduzindo análises sobre o CVE-2018-8653, uma vulnerabilidade que afeta o Microsoft Internet Explorer. O ataque foi elaborado para ocorrer dentro do navegador

“Existe uma vulnerabilidade de código de execução remota que permite que o mecanismo de script manipule objetos na memória no Internet Explorer. A vulnerabilidade pode corromper a memória de tal forma que um invasor pode executar códigos arbitrários no contexto do usuário atual. Um invasor que tenha explorado com êxito a vulnerabilidade pode obter os mesmos direitos de usuário de quem estiver utilizando o equipamento. Se o usuário atual estiver conectado com direitos de usuário administrativo, o invasor poderá assumir o controle do sistema afetado, podendo então instalar programas; visualizar, alterar ou excluir dados; ou até criar novas contas com direitos totais de administrador. Em um cenário de ataque com base na Web, o invasor pode hospedar um site especialmente criado para explorar a vulnerabilidade do Internet Explorer e, então, enviar e-mails de phishing para atrair visitas para o site”

Análise técnica
O CVE-2018-8653 utiliza um use-after-free (UAF) para executar arbitrariamente os códigos dentro do contexto do jscript.dll, mascarando-o como um falso RegExpObj. O exploit usa a execução do código para vazar o endereço base de:

jscript.dll

kernel32!GetModuleHandleA e

kernel32!GetProcAddress

o shellcode

o indicador atual da pilha de segurança

Com essas informações em mãos, um invasor pode evitar o uso de técnicas tradicionais de exploração, como pulverização de pilha, nop sleds, ret sleds, e cadeias de ROP complicadas. Em vez disso, ele usa o recurso de execução de código para gravar uma cadeia ROP simples na ponta da pilha atual para alterar as proteções de memória no endereço de heap que contém a payload.
O resultado final, do ponto de vista da CPU e da memória, é que o ataque se parece com uma compilação Just-In-Time (JIT) tradicional, na qual o software otimiza o código durante a alocação de memória heap, escrevendo byte-code para ela, marcando a memória como executável e, em seguida, executando-a.
Esse ataque evita as técnicas de exploração tradicionais e, em vez disso, grava uma nova pilha de chamadas na pilha real, que então altera as permissões da memória heap na qual o shellcode está aguardando e o executa.