ASA-2019-00555 – Signal Private Messenger: Chamadas podem ser aceitas sem interação do usuário


For the English version of this alert, click here.

Allele Security Alert

ASA-2019-00555

Identificador(es)

ASA-2019-00555, CVE-2019-17191

Título

Chamadas podem ser aceitas sem interação do usuário

Fabricante(s)

Signal Messenger LLC

Produto(s)

Signal Private Messenger

Versão(ões) afetada(s)

Signal Private Messenger para Android versões anteriores à 4.47.7

Versão(ões) corrigida(s)

Signal Private Messenger para Android versão 4.47.7

Prova de conceito

Desconhecido

Descrição

O aplicativo Signal Private Messenger (versões anteriores à 4.47.7) para Android permite que um indivíduo efetue uma chamada e force que esta seja atendida (ou seja, sem a interação do usuário). A existência da chamada é perceptível para o terminal chamado; no entanto, o canal de áudio pode ser aberto antes que o receptor possa bloquear tal operação.

Detalhes técnicos

Existe um erro lógico no Signal que pode fazer com que uma chamada seja atendida, na ausência de qualquer ação do receptor.

No cliente Android, o método handleCallConnected faz com que uma chamada execute a conexão. Durante o uso normal, ele é chamado em duas situações: quando o dispositivo chamado aceita a chamada, quando o usuário seleciona “aceitar” e quando o dispositivo executor da chamada recebe uma mensagem de “conexão” de entrada indicando que o receptor aceitou a chamada. Usando um cliente modificado, é possível enviar a mensagem “conectar” a um dispositivo chamado quando uma chamada está em andamento, mas ainda não foi aceita pelo usuário. Isso faz com que a chamada seja atendida, mesmo que o usuário não tenha interagido com o dispositivo. A chamada conterá apenas um canal de áudio (uma vez que o usuário precisa ativar manualmente o canal de vídeo em todas as chamadas). O cliente iOS tem um problema lógico semelhante, mas a chamada não é concluída devido a um erro na interface do usuário causado pela sequência inesperada de estados.

Para reproduzir a falha no cliente Android, se deve substituir o método handleSetMuteAudio no arquivo WebRtcCallService.java pelo método a seguir.

private void handleSetMuteAudio(Intent intent) {

Log.e(TAG, "SENDING MESSAGE");

this.dataChannel.send(new DataChannel.Buffer(ByteBuffer.wrap(Data.newBuilder().setConnected(Connected.newBuilder().setId(this.callId)).build().toByteArray()), false));

intent.putExtra(EXTRA_CALL_ID, this.callId);
intent.putExtra(EXTRA_REMOTE_ADDRESS, recipient.getAddress());
handleCallConnected(intent);
}

Quando a chamada está tocando, o botão de silenciar áudio pode ser pressionado para forçar a conexão do dispositivo chamado, e o áudio do dispositivo chamado será audível.

Créditos

Natalie Silvanovich (Google Project Zero)

Referência(s)

Issue 1943: Signal: Incoming call can be connected without user interaction
https://bugs.chromium.org/p/project-zero/issues/detail?id=1943

Localize call audio and video activation code
https://github.com/signalapp/Signal-Android/commit/e58823f4698dec5ecb2af0d0a75181b07d3378b1

CVE-2019-17191
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-17191

CVE-2019-17191
https://nvd.nist.gov/vuln/detail/CVE-2019-17191

Se encontrou algum erro neste alerta ou deseja uma análise compreensiva, entre em contato.

Última modificação: 14 outubro 2019

Não somos responsáveis por qualquer perda de dados, corrupção de dispositivos ou qualquer outro tipo de problema devido ao uso de qualquer informação mencionada em nossos alertas de segurança.