ASA-2019-00506 – Wind River VxWorks: TCP Urgent Pointer = 0 conduz a integer underflow

Um segmento TCP criado com o conjunto URG-flag pode causar overflow do buffer passado para as rotinas de socket recv(), recvfrom() ou recvmsg(). Tendo como pré-requisito que o sistema use sockets TCP, um atacante pode sequestrar uma sessão TCP existente e injetar segmentos TCP inválidos ou estabelecer uma nova sessão TCP em qualquer porta que o sistema vítima esteja escutando. O impacto da vulnerabilidade é um buffer overflow de até uma TCP window (por padrão 10k-64k dependendo da versão). O buffer overflow ocorre na task executando recv()/recvfrom()/recvmsg(). Aplicações que passam um buffer igual ou maior que uma TCP window completa não são suscetíveis a esse ataque. As aplicações que passam uma variável alocada na stack como buffer são os mais fáceis de explorar. O resultado mais provável é um crash na aplicação que lê dados do socket afetado. Na pior das hipóteses, essa vulnerabilidade pode levar a RCE (Execução Remota de Código).

ASA-2019-00504 – Wind River VxWorks: Falha lógico em atribuição IPv4 pelo cliente ipdhcpc DHCP

O cliente DHCP VxWorks falha ao validar corretamente se o endereço IP oferecido em uma renovação DHCP ou resposta de oferta contém um endereço unicast válido. Um invasor pode atribuir endereços multicast ou broadcast à vítima. Um invasor conectado à rede local pode escolher roubar uma sessão de cliente DHCP que solicite um endereço IPv4. O invasor pode enviar um endereço IP multicast na mensagem de oferta/confirmação DHCP, que o sistema da vítima atribui incorretamente. Essa vulnerabilidade não é muito útil isoladamente, mas pode ser combinada com o CVE-2019-12259 para criar um ataque de negação de serviço.

ASA-2019-00503 – Wind River VxWorks: Confusão do estado TCP Urgent Pointer devido à race condition

Uma série de segmentos com e sem o conjunto URG-flag deve chegar em tempo específico enquanto uma aplicação sendo executada pela vítima estiver recebendo dados da sessão. A vítima deve estar usando um kernel SMP e dois ou mais núcleos de CPU, alternativamente, um kernel uni-processador, em que a task de recebimento e a task de rede são executadas em prioridades diferentes. Um pré-requisito é que o sistema use TCP-sockets e haja pelo menos uma sessão TCP ativada na qual um atacante pode injetar tráfego. Essa vulnerabilidade depende de uma race condition entre a tarefa de rede (tNet0) e a aplicação de recebimento. É essencialmente impossível acionar o race condition em um sistema com apenas uma único thread na CPU e nenhuma maneira de acioná-lo de forma confiável em alvos SMP. O impacto da vulnerabilidade é um buffer overflow de até um TCP receive-windows (por padrão 10k-64k dependendo da versão). O buffer overflow ocorre na task que executa  recv()/recvfrom()/recvmsg(). Aplicações que passam um buffer igual ou maior que um TCP window não são suscetíveis a esse ataque. Aplicações que passam uma variável alocada na stack como buffer são os mais fáceis de explorar. O resultado mais provável é um crash na aplicação que lê do socket afetado. Na pior das hipóteses, essa vulnerabilidade pode levar a RCE (Execução Remota de Código).

ASA-2019-00502 – Wind River VxWorks: Tratamento de Reverse ARP replies não solicitados

O RARP reception handler verifica se o pacote está bem formado, mas não consegue verificar se o nó tem uma RARP-transaction em andamento que corresponde ao pacote recebido. Um atacante conectado na rede local pode enviar reverse-ARP responses ao sistema da vítima para atribuir endereços IPv4 unicast ao alvo. A ação não causará danos diretos além do aumento do uso de RAM. No entanto, a vulnerabilidade pode causar indiretamente um problema de conectividade de rede para o sistema na LAN se os endereços IP atribuídos colidirem com outras máquinas.

ASA-2019-00501 – Wind River VxWorks: Erro lógico de estado em TCP Urgent Pointer durante connect() em um host remoto

Uma resposta criada para tentativas de conexão, na qual também são definidas as flags FIN e URG, é enviada como resposta. Isso pode colocar a vítima em um estado inconsistente, o que torna possível enviar ainda outro segmento que aciona um buffer overflow. Um pré-requisito é que o sistema use sockets TCP e um usuário mal-intencionado possa acionar o alvo para estabelecer uma nova conexão TCP da qual o atacante rouba o tráfego. O impacto da vulnerabilidade é um buffer overflow de até uma TCP receive-window (por padrão 10k-64k dependendo da versão). O buffer overflow ocorre na task que executa recv()/recvfrom()/recvmsg(). Aplicações que passam um buffer igual ou maior que uma TCP receive-window completa não são suscetíveis a esse ataque. Aplicações que passam uma variável alocada na stack como buffer são os mais fáceis de explorar. O resultado mais provável é um crash na aplicação na leitura do socket afetado. Na pior das hipóteses, essa vulnerabilidade pode levar a RCE (Execução Remota de Código).