
Resumo
No final de 2023, os investigadores de segurança descobriram uma vulnerabilidade crítica encadeada que afecta o Cisco IOS XE Web UI, permitindo que atacantes não autenticados obtenham o controlo total dos dispositivos afectados. A cadeia de ataque combina duas vulnerabilidades de segurança - CVE-2023-20198 e CVE-2023-20273 - que, quando exploradas em conjunto, conduzem à execução de comandos ao nível da raiz no anfitrião Linux subjacente que executa o IOS XE. Isto permite o controlo total do dispositivo, o acesso persistente e o potencial movimento lateral nas redes empresariais.
- CVE-2023-20198: Presente nas versões 16.0.x a 17.9.x do Software Cisco IOS XE, esta vulnerabilidade permite que atacantes não autenticados obtenham acesso inicial e criem uma conta de nível de privilégio 15 (administrador) através da IU da Web. Uma vez criada, o atacante pode executar qualquer ação administrativa no dispositivo, o que representa um grave risco de segurança.

- CVE-2023-20273: Afectando as mesmas versões de software, esta vulnerabilidade permite que utilizadores autenticados com privilégios de nível 15 executem comandos arbitrários com privilégios de raiz no sistema operativo Linux subjacente através de uma falha de injeção de comandos na componente de gestão de software.

Durante o programa de bolsas OPSWAT , os nossos bolseiros, Hoa X. Nguyen e Nhan Nguyen, efectuaram uma análise técnica aprofundada desta cadeia de ataques. Na nossa investigação, reproduzimos as vulnerabilidades num comutador Cisco Catalyst 9300-24T-E com o IOS XE 17.01, demonstrando como as falhas podem ser encadeadas para conseguir o comprometimento total do sistema em condições reais.
Antecedentes
Visão geral do Cisco IOS XE

O Cisco IOS XE é um sistema operativo de rede moderno e modular que alimenta muitas das plataformas empresariais da Cisco - incluindo routers, switches e controladores sem fios. Combina a funcionalidade rica do Cisco IOS clássico com uma arquitetura mais segura, programável e baseada em Linux, proporcionando aos administradores de rede flexibilidade e melhor desempenho.
Na sua essência, o IOS XE funciona como um sistema operativo Linux que aloja o processo principal denominado IOSd (IOS Daemon). Este daemon trata das tarefas de rede tradicionais, como o encaminhamento, a gestão da CLI e o controlo da configuração. No IOS XE 17.01, o binário do IOSd reside em /usr/binos/bin/x86_64_crb_linux_iosd_ngwc-universalk9-ms.
Ao contrário dos sistemas Cisco antigos, os utilizadores do IOS XE que se ligam através de SSH são colocados numa shell de subsistema IOSd restrita e não no ambiente Linux subjacente. Esta conceção isola o verdadeiro acesso ao nível de raiz do sistema operativo, reforçando significativamente a fronteira de segurança global entre as interações do utilizador e o kernel do anfitrião.
Níveis de privilégio da Cisco
Os dispositivos Cisco implementam um modelo de privilégio hierárquico para controlar as permissões dos utilizadores:
- Nível 0 - Acesso de nível zero: Este é o nível mais restrito. Normalmente, permite apenas um conjunto limitado de comandos básicos, como logout, enable, disable, help e exit.
- Nível 1 - Modo EXEC do utilizador: Acesso padrão para logins padrão, permitindo a visualização básica do sistema, mas sem alterações de configuração.
- Nível 15 - Modo Privileged EXEC: Este é o nível de privilégio mais elevado e concede controlo total sobre o dispositivo. Os utilizadores deste nível podem executar todos os comandos, incluindo os comandos de configuração, e podem recarregar o dispositivo.
Os níveis intermédios (2-14) podem ser personalizados para conceder permissões específicas. Os privilégios são herdados, o que significa que os utilizadores de níveis superiores possuem automaticamente os direitos dos níveis inferiores.
Arquitetura Web UI da Cisco
O Cisco IOS XE Web UI fornece uma interface baseada no browser para gerir e monitorizar dispositivos - oferecendo funcionalidades de configuração e diagnóstico sem necessitar de acesso à linha de comandos. Internamente, o Web UI utiliza o NGINX como um proxy de middleware para encaminhar os pedidos dos utilizadores para vários serviços internos, incluindo o Web Services Management Agent (WSMA).
O componente WSMA funciona como uma ponte de comunicação entre a IU da Web e o daemon IOSd subjacente, traduzindo acções baseadas na Web em comandos de configuração IOS XE correspondentes.

Para impor o controlo de acesso, cada pedido é sujeito a autenticação baseada em SOAP e verificação de privilégios através de um cabeçalho HTTP dedicado (Priv-Level), garantindo que apenas os utilizadores autorizados podem executar operações privilegiadas.

Análise técnica
CVE-2023-20198 - Contorno de autenticação e escalonamento de privilégios
Os nossos colegas descobriram que a vulnerabilidade está enraizada no ponto de extremidade HTTP do Web UI do Cisco IOS XE. Ao processar pedidos de entrada, o Web UI passa comandos e as respectivas permissões de utilizador associadas para um endpoint interno (/lua5), que são depois encaminhados pelo NGINX para um de dois manipuladores WSMA - /webui_wsma_http ou /webui_wsma_https - dependendo do protocolo.


A análise estática do binário do IOSd também revela uma configuração do NGINX que inclui um manipulador de fallback padrão:

A vulnerabilidade resulta da forma como o NGINX e o IOSd tratam a codificação de URL. Ambos os componentes descodificam caminhos de URL de forma independente, permitindo a um atacante explorar um desvio de dupla codificação.
Por exemplo, se /webui_wsma_https for enviado como /%2577ebui_wsma_https, o NGINX executa uma única descodificação e vê /%77ebui_wsma_https(que não corresponde diretamente à rota interna protegida), pelo que envia o pedido através de um manipulador de recurso menos restritivo. Quando a solicitação chega ao backend do IOSd, o IOSd executa uma segunda decodificação e resolve o caminho para /webui_wsma_https.

Como o NGINX encaminha inicialmente este pedido malformado utilizando o seu manipulador predefinido, não consegue aplicar a lógica normal de autenticação e controlo de acesso. Como resultado, o atacante pode injetar um cabeçalho Priv-Level forjado, atribuindo a si próprio privilégios de nível de administrador (15). Combinado com um payload SOAP XML que contém um comando para criar um novo utilizador, isto resulta na criação silenciosa de uma conta local com privilégios elevados.

Esta exploração não requer autenticação prévia e fornece ao atacante o controlo total da configuração do dispositivo através da IU da Web - estabelecendo a primeira fase da cadeia de ataque.
CVE-2023-20273 - Injeção de comandos na gestão de Software
Uma vez autenticado com a conta de administrador recém-criada, o atacante pode explorar a CVE-2023-20273, uma vulnerabilidade de injeção de comandos na componente de gestão de software (/webui/rest/softwareMgmt/*). Este ponto final destina-se a administradores legítimos para instalar ou atualizar pacotes de software no dispositivo.
A falha tem origem na lógica de validação de entrada na função validateSmuRequest(req), que chama validator.validateIPv4IPv6HostNameAddress(req.ipaddress) para verificar o endereço IP fornecido no pedido. Esta etapa de validação foi concebida para garantir que o endereço fornecido está corretamente formatado e pode ser utilizado com segurança.
Dentro de validateIPv4IPv6HostNameAddress, a validação baseia-se na rotina auxiliar utils.isIPv6Address(ip) para avaliar a conformidade da sintaxe IPv6. Esta função tenta analisar a entrada dividindo-a em dois pontos (:) e avaliando cada segmento com uma expressão regular destinada a rejeitar padrões hexadecimais inválidos ou valores fora do intervalo. A falha de implementação reside nesta expressão regular: devido a um quantificador * demasiado permissivo, corresponde a qualquer entrada, permitindo efetivamente que valores malformados ou maliciosos passem a validação sem serem verificados.

Consequentemente, os dados controlados pelo atacante são aceites como válidos e fluem para a lógica a jusante, onde são utilizados na construção do comando. O valor do endereço IP não fiável é eventualmente utilizado na função runPexecCommand() para construir um comando do sistema que inicia um pedido TFTP. Como esta operação ocorre sem validação de entrada ou escape, um atacante pode injetar comandos arbitrários no processo, levando à execução de comandos com privilégios elevados e ao comprometimento total do dispositivo Cisco.

Prova de conceito (PoC)
Durante o OPSWAT Fellowship Program, os nossos bolseiros Hoa X. Nguyen e Nhan Nguyen reproduziram a exploração encadeada num laboratório controlado e com ar comprimido num Cisco Catalyst 9300-24T-E com o IOS XE 17.01. A sequência de exploração pode ser resumida nas seguintes etapas:

- Pedido de dupla codificação: enviar um POST especialmente criado para um caminho interno de dupla codificação (por exemplo, /%2577ebui_wsma_https) que é encaminhado através do fallback de proxy e contém um cabeçalho Priv-Level forjado e uma carga útil SOAP de criação de conta.
- Obter sessão de administrador: iniciar sessão com a conta criada e recolher tokens de sessão/CSRF.
- Upload payload: utilizar o upload da IU da Web para colocar attacker_shell.sh no dispositivo (ação apenas para administradores).
- Executar via SMU: enviar um pedido SMU com um endereço IP criado (por exemplo, 100:100:100:100:$(/bin/sh /bootflash/attacker_shell.sh)); a validação é contornada e o script carregado é executado como root.

Remediação
A Cisco lançou versões corrigidas do Software Cisco IOS XE que abordam tanto o CVE-2023-20198 como o CVE-2023-20273. Todas as organizações que operam versões afectadas de 16.0.x a 17.9.x devem atualizar imediatamente para a versão corrigida mais recente, conforme descrito no aviso de segurança oficial da Cisco. A aplicação destas actualizações elimina eficazmente as vulnerabilidades subjacentes e impede o aumento de privilégios não autorizado ou a injeção de comandos através da IU da Web.
Para ambientes em que não é possível efetuar uma atualização imediata, os administradores devem restringir ou desativar o acesso à IU da Web a partir de redes não fidedignas, aplicar controlos de autenticação rigorosos para interfaces administrativas e monitorizar continuamente o comportamento invulgar do sistema, como a criação não autorizada de contas ou alterações anormais na configuração.
Para reforçar a ciber-resiliência global, as organizações podem complementar a aplicação de patches dos fornecedores com a Plataforma MetaDefender daOPSWAT, uma estrutura de segurança unificada concebida para proteger infra-estruturas críticas através da deteção e prevenção de ameaças em ficheiros, dispositivos e fluxos de dados. A integração do MetaDefender nos fluxos de trabalho operacionais e de rede aumenta a visibilidade, assegura uma inspeção mais profunda das ameaças e fornece uma salvaguarda adicional contra potenciais tentativas de exploração dirigidas aos sistemas de gestão.
Combinando actualizações atempadas da Cisco, controlos de acesso robustos e uma estratégia de defesa em camadas suportada pela Plataforma MetaDefender , as organizações podem reduzir significativamente a exposição a cadeias de exploração semelhantes e manter uma postura de segurança mais forte e resiliente.
