Uma cadeia de vulnerabilidades críticas no software UniFi OS Server colocou milhares de organizações em risco sério. Pesquisadores de segurança confirmaram que um atacante pode obter acesso root completo aos dispositivos afetados sem nenhuma credencial, transformando uma única solicitação não autenticada em uma tomada de controle total do sistema.
Descoberta e escopo da vulnerabilidade
O UniFi OS Server é a plataforma de gerenciamento para a família de aplicativos UniFi, incluindo Network, Protect e os serviços de identidade e atualização que acompanham. Ele é executado como uma coleção de serviços backend atrás de um único front-end Nginx que termina TLS, autentica solicitações e as encaminha para os serviços internos corretos. Essa função de proxy é o centro do modelo de segurança e é exatamente onde essa cadeia de ataque começa.
Pesquisadores da BishopFox identificaram e confirmaram a cadeia de ataque completa de ponta a ponta, validando que uma única solicitação a um servidor UniFi OS Server alcançável se transforma em um reverse shell com privilégios root completos. A gravidade vem do que o aparelho controla: é o plano de gerenciamento da rede que ele executa.
Vetor de exploração e técnica de ataque
O ataque possui três partes distintas. A primeira parte contorna a porta de autenticação. O Nginx impõe autenticação com uma sub-requisição auth_request ao serviço unifi-core Node, que decide se uma solicitação é pública ou deve ser autenticada.
A causa raiz é uma divergência entre duas visões do mesmo URI: a verificação de isenção pública é executada no cabeçalho x-original-uri percentualmente codificado cru, mas o Nginx encaminha a solicitação usando o uri normalizado e decodificado. Uma solicitação elaborada cuja forma raw começa com o prefixo auth-exempt /api/auth/validate-sso/, enquanto sua forma normalizada resolve para uma rota interna /proxy/, passa pela porta sem nenhuma credencial.
A segunda parte atinge o sink de injeção de comando. Atrás da porta existe uma rota package-update no backend compartilhado de identidade e atualização. O manipulador constrói uma string de comando usando fmt.Sprintf contra um formato como sudo /usr/bin/ uos runnable latest-versions % v, onde % v é o nome do pacote fornecido pelo caller interpolado literalmente.
Na versão 3.1.16 não há validação desse nome, e a string é passada para um auxiliar que a executa através de um wrapper de shell sh -c. Metacaracteres de shell na entrada são interpretados em vez de tratados como dados, permitindo injeção arbitrária de comando.
A terceira parte escala para root. O comando injetado é executado como a conta de serviço ucs-update, não diretamente como root. Essa conta possui entitlements de sudo sem senha em /usr/bin/ dpkg, /bin/ chmod, /bin/ systemctl e /usr/bin/ uos. A BishopFox tomou o caminho dpkg em um alvo ao vivo, instalando um .deb cujo script pós-instalação leu /etc/shadow, confirmando a execução root completa.
Impacto e alcance
O acesso root expõe todos os segredos armazenados, permite que um atacante forje sessões de administrador que sobrevivem ao patch e, em implantações físicas, pode comprometer controles de portas e câmeras de segurança. A única pré-condição para exploração é o acesso à interface de administração, que comumente escuta na porta TCP 443. Isso torna a cadeia alcançável em qualquer lugar onde o painel de gerenciamento web seja alcançável.
Medidas de mitigação recomendadas
A Ubiquiti corrigiu todas as três partes no UniFi OS Server 3.2.12. Um guardião de normalização de URI Nginx fecha o bypass da porta. O backend package-update ganha uma lista de permissão de nome de pacote e verificação de validação para prevenir injeção. A entrada sudoers ucs-update remove /usr/bin/dpkg e /bin/ chmod de sua lista sem senha, reduzindo a superfície de escalonamento de privilégio.
Os defensores devem fazer o patch para o UniFi OS Server 3.2.12 ou posterior imediatamente, depois rotacionar a chave de assinatura JWT, forçar o logout de todas as sessões e redefinir as credenciais do banco de dados. A cadeia atinge root sem credenciais e sem interação do usuário, então não há rastro de login falho nos logs. Restrinja o acesso externo à interface web e limite-a a uma rede de gerenciamento para que solicitações não autenticadas da internet não alcancem a porta.
O que os CISOs devem fazer imediatamente
1. Inventariar todos os dispositivos UniFi OS Server em sua rede. 2. Aplicar a atualização para a versão 3.2.12 ou superior imediatamente. 3. Rotacionar chaves de assinatura JWT e credenciais de banco de dados. 4. Restringir o acesso à porta 443 da interface de gerenciamento via firewall. 5. Monitorar logs de acesso para tentativas de acesso não autenticado.