ASA-2019-00422 – Asterisk: Crash remoto no driver do canal chan_sip


For the English version of this alert, click here.

Allele Security Alert

ASA-2019-00422

Identificador(es)

ASA-2019-00422, CVE-2019-13161, AST-2019-003

Título

Crash remoto no driver do canal chan_sip

Fabricante(s)

Digium, Inc

Produto(s)

Certified Asterisk
Asterisk Open Source

Versão(ões) afetada(s)

Certified Asterisk todos os lançamentos da versão 13.21
Asterisk Open Source todos os lançamentos da versão 13.x
Asterisk Open Source todos os lançamentos da versão 15.x
Asterisk Open Source todos os lançamentos da versão 16.x

Versão(ões) corrigida(s)

Certified Asterisk versão 13.21-cert4
Asterisk Open Source versão 13.27.1
Asterisk Open Source versão 15.7.3
Asterisk Open Source versão 16.4.1

Prova de conceito

Sim

Descrição

Quando o envio de fax T.38 é feito no Asterisk, um reinvite T.38 pode ser enviado para um terminal para alterná-lo para T.38. Se o endpoint responder com uma resposta SDP formatada incorretamente, incluindo um fluxo T.38 UDPTL e um fluxo de áudio ou vídeo contendo apenas codecs não permitidos no peer SIP ou usuário, ocorrerá uma falha. O código incorretamente pressupõe que haverá pelo menos um codec comum quando T.38 também está na resposta do SDP.

Isso requer que o Asterisk inicie um reinvite T.38, que é feito apenas ao executar a aplicação dialplan ReceiveFax ou executar a passagem T.38, em que um endpoint remoto solicitou T.38.

Detalhes técnicos

Os gateways baseados no Asterisk-13 sofreram segfaults ocasionais, e inspecionando com o GDB seus coredumps, o autor concluiu que eles são causados por um caso muito específico em process_sdp() de chan_sip.c:

  1. Asterisk foi configurado com o preferred_codec_only para o peer relevante, e a lista, possivelmente restritiva, dos codecs
  2. o peer SIP inicia uma sessão válida através do Asterisk (chan_sip) como um B2BUA
  3. Asterisk emite um T.38 reINVITE (por exemplo, com o aplicativo ReceiveFAX, mesmo que não seja o nosso caso)
  4. o SIP UA (UAS, neste caso) responde com um SDP “quebrado” com duas m-lines, uma para um codec de áudio não incluído na lista permitida do peer SIP e outra com a image/t38

Tal SDP é quebrado porque um SIP UA não tem permissão para responder com múltiplas m-lines sempre que receber apenas uma m-line.

Créditos

Francesco Castellano

Referência(s)

AST-2019-003
https://downloads.asterisk.org/pub/security/AST-2019-003.html

Broken SDP can cause a segfault in a T.38 reINVITE
https://issues.asterisk.org/jira/browse/ASTERISK-28465

crash-t38-broken-answer-with-empty-jointcaps.xml
https://issues.asterisk.org/jira/secure/attachment/58426/crash-t38-broken-answer-with-empty-jointcaps.xml

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

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

 

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

Última modificação: 23 setembro 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.