25 vulnerabilidades no RTOS Zephyr, incluindo aquelas exploradas por meio de um pacote ICMP

Pesquisadores do Grupo NCC publicado resultados gratuitos de auditoria de projeto zéfiro, em desenvolvimento um sistema operacional em tempo real (RTOS), destinado a equipar dispositivos que atendam ao conceito de Internet das Coisas (IoT, Internet of Things). Durante a auditoria foi revelado 25 vulnerabilidades no Zephyr e 1 vulnerabilidade no MCUboot. O Zephyr está sendo desenvolvido com a participação de empresas Intel.

No total, foram identificadas 6 vulnerabilidades na pilha de rede, 4 no kernel, 2 no shell de comando, 5 nos manipuladores de chamadas do sistema, 5 no subsistema USB e 3 no mecanismo de atualização de firmware. Duas questões são classificadas como críticas, duas são altas, 9 são moderadas, 9 são baixas e 4 são para consideração. Problemas críticos afetam a pilha IPv4 e o analisador MQTT, os perigosos afetam o armazenamento em massa USB e os drivers USB DFU. No momento da divulgação da informação, tinham sido preparadas correções apenas para as 15 vulnerabilidades mais perigosas; problemas que levam à negação de serviço ou associados a falhas em mecanismos adicionais de proteção do kernel permanecem sem correção.

Foi identificada uma vulnerabilidade explorável remotamente na pilha IPv4 da plataforma, que leva à corrupção de memória ao processar pacotes ICMP modificados de uma determinada forma. Outro problema sério foi encontrado no analisador do protocolo MQTT, que é causado pela falta de verificação adequada do comprimento do campo do cabeçalho e pode levar à execução remota de código. Problemas menos graves de negação de serviço são encontrados na pilha IPv6 e na implementação do protocolo CoAP.

Outros problemas podem ser explorados localmente para causar negação de serviço ou executar código no nível do kernel. A maioria dessas vulnerabilidades está relacionada à falta de verificações adequadas dos argumentos de chamada do sistema e pode levar à gravação e leitura de áreas arbitrárias da memória do kernel. Os problemas também se estendem ao próprio código de processamento de chamadas do sistema – chamar um número de chamada de sistema negativo resulta em um estouro de número inteiro. O kernel também identificou problemas na implementação da proteção ASLR (randomização do espaço de endereço) e no mecanismo de definição de marcas canário na pilha, tornando esses mecanismos ineficazes.

Muitos problemas afetam a pilha USB e os drivers individuais. Por exemplo, problemas no armazenamento em massa USB podem causar estouro de buffer e executar código no nível do kernel quando o dispositivo está conectado a um host USB controlado pelo invasor. Uma vulnerabilidade no USB DFU, um driver para carregar novo firmware via USB, permite carregar uma imagem de firmware modificada no Flash interno do microcontrolador sem usar criptografia e ignorando o modo de inicialização seguro com verificação de componentes usando uma assinatura digital. Além disso, o código do bootloader aberto foi estudado MCUboot, em que uma vulnerabilidade benigna foi encontrada,
o que pode levar a um buffer overflow ao usar o protocolo SMP (Simple Management Protocol) sobre o UART.

Lembre-se de que no Zephyr, apenas um espaço de endereço virtual compartilhado global (SASOS, Single Address Space Operating System) é fornecido para todos os processos. O código específico do aplicativo é combinado com um kernel específico do aplicativo para formar um executável monolítico que pode ser carregado e executado em hardware específico. Todos os recursos do sistema são determinados em tempo de compilação, reduzindo o tamanho do código e aumentando o desempenho. A imagem do sistema pode incluir apenas os recursos do kernel necessários para executar o aplicativo.

Vale ressaltar que entre as principais vantagens do Zephyr mencionado desenvolvimento com a segurança em mente. aprovadoque todas as etapas de desenvolvimento passem por etapas obrigatórias de confirmação da segurança do código: testes de difusão, análise estática, testes de penetração, revisão de código, análise de implementação de backdoor e modelagem de ameaças.

Fonte: opennet.ru

Adicionar um comentário