A ISH Tecnologia revelou a existência de falhas de segurança em smart TVs da marca LG. São vulnerabilidades que impactam as versões do sistema operacional webOS usadas nos dispositivos, possibilitando que um invasor evite os mecanismos de autorização da TV e crie um perfil de usuário com privilégios superiores.
O sistema operacional webOS possibilita que as TVs se conectem à internet, permitindo o acesso a serviços de streaming e redes sociais. Aproveitando as vulnerabilidades, um cibercriminoso pode obter acesso ao perfil da vítima e aos serviços utilizados, possibilitando o roubo de informações sensíveis ou detalhes de cartão de crédito, se armazenados, que podem ser explorados em golpes futuros.
Embora o serviço vulnerável tenha sido originalmente planejado para uso em redes locais, foi identificado pelo Shodan, um mecanismo de busca focado em dispositivos conectados à internet, em mais de 87.000 aparelhos expostos. No Brasil, dispositivos afetados foram localizados em cidades como São Paulo, Rio de Janeiro, Belo Horizonte, Brasília e Osasco.
Os casos confirmados no exterior estão principalmente concentrados na Coreia do Sul, Hong Kong, Estados Unidos, Suécia, Finlândia e Letônia.
Segundo a ISH, as falhas foram detectadas em quatro versões do sistema operacional:
- 4.9.7 – 5.30.40, do modelo LG43UM7000PLA
- 5.5.0 – 04.50.51, do modelo OLED55CXPUA
- 6.6.3-442 (kisscurl-kinglake) – 03.36.50, do modelo OLED48C1PUB
- 7.3.1-43 (mullet-mebin) – 03.33.85, do modelo OLED55A23LA
Como atuam as vulnerabilidades:
CVE-2023-6317
Para ativar o aplicativo ThinkQ, usado para interagir com as TVs LG, é preciso inserir um PIN exibido na tela. No entanto, uma falha no sistema de gestão de contas permite que um invasor evite a necessidade do PIN e crie um perfil de usuário com privilégios elevados. O processo que lida com os pedidos de criação de contas usa uma variável chamada skipPrompt. Essa variável é definida como verdadeira se os parâmetros client-key ou companion-client-key corresponderem a um perfil existente. O sistema também verifica as permissões necessárias para determinar se o PIN é requerido, pulando essa etapa em certas circunstâncias.
No início, é possível solicitar a criação de uma conta padrão que é aprovada instantaneamente. Em seguida, fazer um pedido para uma conta com permissões mais amplas, utilizando a chave de cliente complementar da conta original. O sistema reconhece a chave, mas não verifica sua associação correta à conta, levando à ativação do recurso skipPrompt e à criação da nova conta sem a validação do PIN na TV.
CVE-2023-6318
O método processAnalyticsReport requer três parâmetros: type, reportFile e originalFile. Ao definir o parâmetro type como analytic, o reportFile pode ser enviado para um comando de sistema sem a devida sanitização. Embora o acesso direto a este método não seja possível, é viável desviar através do endpoint system.notifications/createAlert, disponível apenas para usuários autenticados com a permissão WRITE_NOTIFICATION_TOAST. Esse endpoint aceita o parâmetro onclose, que pode ser utilizado para realizar chamadas internas a serviços não expostos externamente, operando de forma semelhante a um SSRF. Após a criação da notificação, a ação onclose é ativada usando o endpoint system.notifications/closeAlert, que por sua vez faz a chamada para o endpoint vulnerável.
O arquivo mencionado no comando deve estar presente no dispositivo, porém, essa restrição pode ser evitada através do serviço com.webos.service.downloadmanager. Esse serviço possibilita a criação de um arquivo no diretório /media/internal/downloads com um nome qualquer. O comando suscetível está definido na linha 83 do código e é executado na linha 84. Tanto o método de análise de relatórios quanto o de download são acessíveis através dos endpoints processAnalyticsReport e createAlert.
CVE-2023-6319
O método getAudioMetadata requer dois parâmetros: deviceId e fullPath. O parâmetro deviceId tem menos importância, mas o fullPath, em certas circunstâncias, é enviado para um comando de sistema sem qualquer tipo de filtragem. Quando o fullPath aponta para um arquivo com a extensão .mp3, o serviço procura no mesmo diretório por um arquivo de letras correspondente com a extensão .lrc. Se esse arquivo for encontrado, os primeiros quatro bytes são comparados com a sequência \xFF\xFE\x00\x00. Se houver uma correspondência, indicando que o arquivo está codificado em UTF1632, o serviço tenta decodificar o arquivo usando o binário iconv. Esse binário é executado com o nome completo do arquivo, sem passar por nenhuma filtragem, o que pode resultar em uma potencial injeção de comandos.
Para que funcione, é necessário ter os arquivos .mp3 e .lrc no dispositivo, os quais podem ser criados utilizando o método de download mencionado anteriormente. Todos os métodos essenciais estão disponíveis por meio do endpoint createAlert. A vulnerabilidade está presente na função convLrcStringByBinary do binário asm.
CVE-2023-6320
O endpoint setVlanStaticAddress requer três parâmetros: ip_address, bcast_address e netmask, todos enviados para um comando do sistema sem prévia sanitização. Para utilizar este endpoint, é essencial acionar primeiro o endpoint createVirtualLan. Ambos os endpoints exigem que o usuário tenha permissão READ_NETWORK_STATE. O usuário encarregado de executar esses comandos é o dbus, que, apesar do nome, possui privilégios semelhantes aos de um usuário root. A vulnerabilidade reside na função handle_set_vlan_static_address_command da biblioteca libwca2.so.
Prevenção
Segundo a ISH, a principal forma de aumentar a segurança das Smart TVs, que podem ser alvo de ataques devido à sua conexão com a internet, é verificar regularmente as atualizações de software, sistemas operacionais e aplicativos.