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-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-00500 – Wind River VxWorks: Erro lógico de estado em TCP Urgent Pointer causado por opção malformada em TCP AO

Uma série de segmentos TCP especialmente criados, em que a última etapa é um TCP-segment com o conjunto URG-flag, pode causar overflow do buffer passado para as rotinas de socket recv(), recvfrom() ou recvmsg(). Um pré-requisito é que o sistema use sockets TCP e tenha ao menos uma porta TCP no estado listening. O impacto da vulnerabilidade é um buffer overflow de até uma 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 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 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).