Apps de alto nível em risco devido à vulnerabilidade de três anos de idade

Apps de alto nível em risco devido à vulnerabilidade de três anos de idade

Um total de 6,1 milhões de dispositivos – smartphones, roteadores, TVs inteligentes – estão atualmente em risco de ataques de execução de código remoto devido a vulnerabilidades que não foram corrigidas desde 2012.

As vulnerabilidades existem no Portable SDK for UPnP™ Devices, também chamada de libupnp. Essa biblioteca em particular é usada para implementar reprodutores de mídia (DLNA) ou NAT traversal (UPnP IGD). Aplicativos em um smartphone podem usar esses recursos para reproduzir arquivos de mídia ou conectar-se a outros dispositivos dentro de uma rede doméstica do usuário.

Essas vulnerabilidades foram realmente corrigidas em dezembro de 2012, porém muitos aplicativos ainda usam a versão vulnerável, mais antiga do SDK. Nós descobrimos 547 aplicativos que usam as versões mais antigas do libupnp, 326 dos quais estão disponiveis na loja Google Play, inclusive aplicativos de alto nível como Netflix e Tencent QQMusic. Esses aplicativos são muito populares colocando milhões de usuários em risco; além dos dispositivos móveis, roteadores e TVs inteligentes que também estão em risco.

Figura 1. TV inteligente vulnerável

Como a vulnerabilidade funciona

A vulnerabilidade está no modo como a biblioteca libupnp lida com os pacotes Simple Service Discovery Protocol (SSDP). Esse protocolo faz parte do Universal Plug N’ Play (UPnP) padrão. O stack overflow ocorre durante esse processo e solicita que a porta 1900 UDP seja aberta:

Figura 2. Verificação da porta do sistema afetado mostrando a porta aberta

Um pacote feito especialmente pode ser usado para transbordamento de dados (overflow buffers). No código abaixo, o TempBuf buffer pode estourar e causar uma falha.

Figura 3. Código mostrando o buffer que pode ser transbordado.

Com uma pesquisa maior um exploit poderia ser usado não apenas para causar uma falha, mas também para executar um código arbitrário no dispositivo afetado. A capacidade de rodar um código arbitrário daria ao agressor a possibilidade de assumir o controle do dispositivo, como em um PC. Temos visto exploits ativos visando dispositivos que não usam proteções de mitigação como stack canaries, DEP e ASLR. Para sistemas bem protegidos, não conhecemos exploits que atualmente possam executar um código remoto.

Confirmamos que em pelo menos 20 aplicativos, a biblioteca libupnp vulnerável pode ser ativada. Eles são:

Captura de Tela 2015-12-10 às 11.03.01

Tabela 1. Alguns dos aplicativos afetados

Nos concentraremos em dois aplicativos dos acima listados que são particularmente de alto nível. Um é o aplicativo QQMusic, que tem 100 milhões de usuários na China e foi baixado 1,5 milhões de vezes da loja Google Play. Quando ele é iniciado, ativa o libupnp para o reprodutor de mídia DLNA. Porém, ele usa a versão 1.6.17 do SDK, uma versão que data de abril de 2012.

Figura 4. SDK incorporado vulnerável

Figura 5. Pilha com dados controlados

O aplicativo Netflix é um aplicativo muito popular no Android e também usava o que pensávamos ser uma versão antiga da libupnp – 1.6.13. O SDK é usado quando o aplicativo para Android e é usado para controlar o Netflix em outro dispositivo, como um PlayStation 3.

Figura 6. SDK incorporado no Netflix

Porém, depois de esclarecimentos da Netflix, soubemos que a Netflix usa seu próprio fork de libupnp por causa de um API que não faz mais parte das versões mais novas da libupnp. Porém, seu fork também contém as correções das novas versões da libupnp, portanto acreditamos que não foram afetados pelos potenciais ataques de execução de código remoto visando essa vulnerabilidade.

Os SDKs também podem depender de outros SDKs para executar. O Linphone SDK fornece serviços de voz sobre IP (VOIP) para várias aplicações. A libupnp SDK é uma das várias opções usadas pelo Linphone SDK para fornecer NAT traversal via UpnP. Se essa opção é escolhida o serviço vulnerável será ativado.

Figura 7. Linphone falhando devido ao uso da libupnp

Divulgação

Nós informamos a Linphone e a Tencent (desenvolvedores do aplivativo QQmusic) sobre o problema em seus aplicativos. Ambas se comprometeram a disponibilizar correções. Cotinuamos a investigar outros dipositivos ou aplicativos vulneráveis e pedimos a todos os fornecedores potencialmente afetados para disponibilizar correções.

  • 14 de novembro – problema divulgado para Linphone e Tencent.
  • 16 de novembro – Tencent reconheceu a vulnerabilidade.
  • 18 de novembro – Linphone reconheceu a vulnerabilidade.
  • 23 de novembro – Tencent disponibilizou uma atualização para seu app para Android. (versão 5.7.1.5).
  • 25 de novembro – Linphone disponibilizou uma corrreção para esse problema.

Categorias

Veja outras publicações

Menu