CVE-2023-0386
Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.
Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.
Resumo
Falha no subsistema OverlayFS do kernel Linux permite que um usuário local, dentro de um namespace de usuário sem privilégios, faça 'copy-up' de um arquivo com capabilities do Linux a partir de um mount nosuid para outro mount, preservando as capabilities de forma que ele pode escalar para root no host. É relevante porque a feature que abriu a janela de exploração — mounts de overlayfs sem privilégios — está habilitada por padrão em kernels 5.11+ e é amplamente usada por runtimes de contêiner e ferramentas de sandboxing (ex.: rootless containers), tornando o pré-requisito mais comum do que a descrição sugere.
Detalhamento técnico
A vulnerabilidade está na rotina de cópia (copy-up) do OverlayFS, em fs/overlayfs/copy_up.c. Quando um arquivo é promovido do lower dir (camada somente leitura, tipicamente montada com nosuid) para o upper dir (camada gravável, dentro de um mount overlay sem privilégios), o kernel não validava se o uid/gid do arquivo original tinha um mapeamento válido no user namespace do processo que fazia a montagem. CWE-282 (Improper Ownership Management) descreve o problema: a ausência dessa verificação permite que um uid/gid sem mapeamento explícito seja tratado de forma inconsistente com o restante do kernel — por exemplo, com o comportamento do overflow uid (65534) usado por stat(2) quando não há mapeamento.
Como é explorada
O vetor é 100% local (AV:L) e não requer interação de usuário, mas exige que o atacante consiga criar um user namespace sem privilégios e montar dentro dele um overlayfs — capacidade habilitada por padrão em kernels 5.11+ que suportam 'unprivileged mounts' de overlayfs (introduzida no commit 459c7c565ac3). O atacante posiciona um arquivo com capabilities do Linux (setuid-like via file capabilities) numa camada lower montada nosuid, força o copy-up para a camada upper dentro do seu próprio namespace, e o mapeamento de uid/gid inválido do arquivo resultante permite que as capabilities sejam efetivamente exercidas fora do isolamento pretendido do namespace, concedendo privilégios elevados — potencialmente root — no sistema host.
Versões
Como se proteger
A correção definitiva é o commit 4f11ada10d0a (fs/overlayfs/copy_up.c), que passou a checar kuid_has_mapping()/kgid_has_mapping() no user_ns atual antes do copy-up e retorna -EOVERFLOW se o uid/gid não tiver mapeamento válido, alinhando o comportamento ao de 'cp -a' e às ACLs POSIX. O patch foi marcado para stable (Cc: stable@vger.kernel.org # v5.11), ou seja, deve ser backportado a qualquer branch estável a partir da 5.11, onde a feature de overlayfs sem privilégios foi introduzida. Como paliativo quando a atualização não é imediata, restringir ou desabilitar a criação de user namespaces sem privilégios (parâmetro de sysctl que controla unprivileged_userns_clone, quando disponível na distribuição) reduz a superfície de exploração, mas quebra funcionalidade de contêineres rootless e sandboxes que dependem disso — não é mitigação gratuita.
Como detectar
Não há assinatura de rede confiável, pois a exploração é inteiramente local. Em auditoria de sistema, sinais possíveis incluem chamadas de syscall mount com fstype 'overlay' originadas por processos não-root dentro de user namespaces recém-criados (visível via auditd com regras para mount/unshare/clone com CLONE_NEWUSER), tentativas de copy-up envolvendo arquivos com capabilities extraídos de mounts nosuid, e negações de MAC (SELinux/AppArmor) relacionadas a operações em overlayfs, se essas políticas estiverem ativas. A presença de módulo Metasploit e PoC pública facilita replicação em ambientes de teste, mas não fornece um IOC de rede ou log padronizado.