Acadêmicos encontraram oito vulnerabilidades nos componentes de VoIP do Android

Acadêmicos encontraram oito vulnerabilidades nos componentes de VoIP do Android
voip

Uma equipe de acadêmicos encontrou oito vulnerabilidades nos componentes de VoIP do sistema operacional Android. Essas vulnerabilidades podem ser exploradas para fazer chamadas VoIP não autorizadas, falsificar identificadores de chamadas, negar chamadas de voz e até executar código malicioso nos dispositivos dos usuários. Portanto, acadêmicos encontraram oito vulnerabilidades nos componentes de VoIP do Android.

A pesquisa é a primeira deste tipo. Até agora, pesquisadores e acadêmicos de segurança analisavam apenas os recursos de segurança de equipamentos de voz sobre IP (VoIP), servidores e aplicativos móveis de VoIP. Porém, nenhum analisava os componentes de VoIP dentro do próprio Android.

Acadêmicos encontraram oito vulnerabilidades nos componentes de VoIP do Android

A equipe de pesquisa composta por três homens decidiu corrigir isso. Ao longo dos últimos anos, eles desenvolveram três métodos para analisar o back-end VoIP do Android e vasculharam sistematicamente os componentes em busca de falhas de segurança que poderiam ser exploradas por um invasor.

A maioria de seus testes girava em torno do uso do fuzzing, uma técnica bem conhecida de teste automatizado de software. Ela se baseia em enviar dados aleatórios e malformados para um componente de software e observar como ele reage. Assim, procura anormalidades na saída, como falhas ou vazamentos de memória.

A equipe do rsearch disse que primeiro procurou as APIs do Android Intent e System para interações com os componentes VoIP nativos do sistema operacional. Eles montaram um laboratório de testes de VoIP em seu laboratório. Então, analisaram os diferentes protocolos de VoIP (como SIP [Session Initiation Protocol], SDP [Session Description Protocol] e RTP [Real-time Transport Protocol]); e eles revisaram manualmente os logs e realizaram auditorias manuais de código, como o último estágio de suas pesquisas.

Eles só testaram versões recentes do sistema operacional Android. Portanto, do Android 7.0 (Nougat) ao 9.0 do ano passado (Pie). O trabalho da equipe de pesquisa produziu nove vulnerabilidades, todas relatadas ao Google e algumas corrigidas. Dos nove, oito impactaram o retransmissão de VoIP do Android, enquanto o nono (V1 na tabela abaixo) impactou um aplicativo de terceiros.

Abaixo está um detalhamento de todos os nove erros:

V1: CHAMADA VOIP NO APLICATIVO VK

Nenhuma interação do usuário é necessária para explorar esse bug e, embora exija acesso local, o bug é ideal para ser integrado ao spyware do Android, aos trojans de acesso remoto (RATs) e a outros tipos de malware.

V2: TRANSFERÊNCIA DE CHAMADA NÃO AUTORIZADA NA INTERFACE IMS

Aplicativos maliciosos no dispositivo podem usar indevidamente duas APIs privilegiadas locais (no componente VoIP do QtilMS) para transferir chamadas recebidas sem autorização para o dispositivo do invasor

Isso foi corrigido em 2017, quando o problema foi descoberto, e mais tarde recebeu o identificador CVE-2017-11042.

V3: SPAM DE CHAMADAS VOIP DEVIDO AO NOME LONGO DO SIP

Esse é o primeiro de seis problemas exploráveis remotamente. Segundo os pesquisadores, os invasores podem iniciar chamadas para o telefone da vítima usando um nome SIP longo (1.043 caracteres).

Esse nome SIP preenche a tela do telefone do usuário e impede que ele atenda ou recuse a chamada. Se os atacantes encadearem várias chamadas uma após a outra, eles poderão impedir o usuário de usar o telefone durante um período crítico – como ao executar outro ataque, como seqüestrar uma conta de email ou ignorar o 2FA.

“Chamamos esse tipo de ataque de negação de serviço de ‘bomba de chamada de VoIP’, semelhante à bomba de SMS”, disseram os pesquisadores. Nas versões atuais do sistema operacional Android, o Google limita o tamanho do nome SIP nas chamadas VoIP, para evitar abusos.

android-voip-demo-1.png
Imagem: He et al.

V4: CHAMADA REMOTO EM TELEFONIA, UMA VEZ QUE ACEITA UMA CHAMADA

O quarto bug também pode ser explorado remotamente. Os invasores podem usar pacotes SDP malformados para travar o dispositivo da vítima ao aceitar uma chamada recebida (veja a imagem acima).

Assim como os dois erros anteriores, isso foi corrigido em 2017, após o relatório dos pesquisadores.

V5: EXECUÇÃO REMOTA DE CÓDIGO DEVIDO AO ESTOURO DE BUFFER

O pior bug encontrado pelos pesquisadores foi o CVE-2018-9475, corrigido no Android Oreo, em 2018. Esse é um problema de execução remota de código (RCE) que permite que os invasores executem código malicioso em um dispositivo remoto por meio de uma chamada VoIP.

Os pesquisadores descobriram que poderiam desencadear um estouro de buffer de pilha se um nome de usuário (ou número de chamador) em uma chamada VoIP tivesse mais de 513 bytes.

Essa vulnerabilidade permite que um adversário substitua o endereço de retorno da função ClccResponse, causando a execução remota de código, disseram os pesquisadores.

Esse bug afetou todas as versões do Android até a v9 (torta), incluídas.

V6: DOS REMOTO NO BLUETOOTH APÓS RECEBER UMA CHAMADA

O V6 é semelhante ao V5 e também é um bug que também pode ser explorado ao fazer chamadas VoIP com números de chamadas longas, mas este apenas causa a falha dos telefones, em vez de permitir que os invasores executem o código no dispositivo.

V7: VAZAMENTO DE DADOS E DOS PERMANENTE DEVIDO A PASSAGEM DO CAMINHO

O sétimo bug encontrado não é remotamente explorável, o que significa que só pode ser abusado por outros aplicativos maliciosos instalados no dispositivo.

No entanto, esse bug é bem sério. É um problema clássico de passagem de caminho que ocorre porque o protocolo SIP e o Android tratam os caracteres “..” e “/” de maneira diferente. Os pesquisadores explicam:

Por exemplo, configurando fisicamente “sipuser” e “serverip” no formato da Fig. 10 (a), o mProfileDirectory se torna “/data/data/-com.android.phone/files/alice/@SomeSite/../. ./../../../../sdcard/ “e vaza o arquivo de perfil SIP sensível para o cartão SD público. Um DoS permanente também pode ocorrer se “serverip” estiver configurado para substituir o arquivo de outro aplicativo do sistema, por exemplo, mmssms.db mostrado na Fig. 10 (b).

android-voip-demo-2.png
Imagem: He et al.

V8: FALSIFICAÇÃO DE IDENTIFICAÇÃO DE CHAMADAS DEVIDO A UMA ANÁLISE INCORRETA “&”

Essa vulnerabilidade ocorre devido ao formato de número PSTN (Rede telefônica pública comutada), que não é responsável pelo caractere “&”.

As chamadas VoIP recebidas que contêm caracteres “e” resultam no sistema operacional Android lendo apenas os números antes do caractere, mas não depois, permitindo uma fácil falsificação de identificação de chamadas.

android-voip-demo-3.png
Imagem: He et al.

V9: FALSIFICAÇÃO DE IDENTIFICAÇÃO DE CHAMADAS DEVIDO AO “CONTEXTO DO TELEFONE”

A nona e última vulnerabilidade também se deve ao formato de número PSTN (Rede telefônica pública comutada), mas desta vez por meio do parâmetro PSTN “phone-context”. A equipe de pesquisa explica.

Por exemplo, na convenção da PSTN, o número “650253000; contexto do telefone = + 1” é equivalente a “+1650253000”, onde o valor de “contexto do telefone” se torna o prefixo do número. No entanto, essa convenção não deve se aplicar às chamadas VoIP, que infelizmente são ignoradas pelo aplicativo discador. Como resultado, um adversário pode definir intencionalmente o número do chamador como “650253000; contexto do telefone = + 1”, e o aplicativo discador o interpretará como “+1650253000” e exibirá como a chamada do Google, que é claramente apresentada na Fig. 12)

O white paper completo é intituladoNoções básicas sobre segurança de VoIP para Android: uma avaliação de vulnerabilidade no nível do sistema e está disponível para download aqui.

Os autores do artigo são do Laboratório de Segurança Cibernética OPPO ZIWU em Shenzen, China; Universidade Chinesa de Hong Kong; e a Singapore Management University.

Fonte: ZDNet