Allele Security Intelligence - ASA-2019-00555 – Signal Private Messenger: Chamadas podem ser aceitas sem interação do usuário
ASA-2019-00555 – Signal Private Messenger: Chamadas podem ser aceitas sem interação do usuário
ASA-2019-00555
ASA-2019-00555, CVE-2019-17191
Chamadas podem ser aceitas sem interação do usuário
Signal Private Messenger para Android versões anteriores à 4.47.7
Signal Private Messenger para Android versão 4.47.7
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.
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.
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_REMOTE_ADDRESS, recipient.getAddress());
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.
Natalie Silvanovich (Google Project Zero)
Localize call audio and video activation code
https://github.com/signalapp/Signal-Android/commit/e58823f4698dec5ecb2af0d0a75181b07d3378b1
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-17191
Com a tag Android, ASA-2019-00555, CVE-2019-17191, Divulgação de Informação, handleCallConnected, Signal Private Messenger