← back
CVE-2021-3493highunder attackCWE-270

CVE-2021-3493

100Vexday Risk Score

Patch now. It under exploitation confirmed by CISA and has a working public exploit.

ssvc Actcvss 8.8epss 49%
from disclosure to weapon0 days
Published on NVDApr 17
1st PoCMar 30
metasploitApr 12
CISA KEV+551d
exploitation probability
49%top 1% of all CVEs
observed exploitation
yesCISA + VulnCheck
45 public exploit(s)
Action required by CISAfederal deadline: 2022-11-10

Apply updates per vendor instructions.

Summary

Falha de escalonamento de privilégios local no subsistema overlayfs de kernels Ubuntu, causada pela combinação de dois fatores: um patch que a Ubuntu carrega para permitir montagens overlayfs por usuários sem privilégios, e uma lacuna na validação de capabilities de arquivo (file capabilities) frente a user namespaces. Um usuário local sem privilégios pode explorar isso para obter privilégios de root. Não afeta o kernel Linux upstream — é uma vulnerabilidade específica de como a Ubuntu combinou esses dois recursos antes de portar a correção correta.

Technical detail

O kernel Linux valida e converte capabilities de arquivo (xattr security.capability) em relação ao user namespace através da função cap_convert_nscap(). Até a correção upstream, essa validação só era chamada no caminho da syscall setxattr() (em fs/xattr.c), e não dentro de vfs_setxattr(), que é a função genérica usada por sistemas de arquivos em camadas como overlayfs durante operações de copy-up. Isso significa que quando o overlayfs copiava um arquivo com capabilities do layer inferior para o layer superior via vfs_setxattr(), a checagem de user namespace era pulada.

A correção upstream (commit 7c03e2cda4a5, 'vfs: move cap_convert_nscap() call into vfs_setxattr()') moveu a chamada para dentro de vfs_setxattr(), cobrindo todos os caminhos, incluindo overlayfs. Essa correção entrou no kernel 5.10, antes do commit que liberou montagens overlayfs não privilegiadas no upstream (459c7c565ac3, kernel 5.11) — por isso o Linux upstream nunca ficou exposto: quando overlayfs sem privilégios chegou oficialmente, a validação já estava corrigida.

A Ubuntu, porém, carregava seu próprio patch permitindo montagens overlayfs não privilegiadas em kernels anteriores ao 5.11, sem ter portado a correção de cap_convert_nscap() para vfs_setxattr(). Combinado com user namespaces não privilegiados habilitados por padrão, isso deixou uma janela onde um processo dentro de um user namespace podia definir capabilities de arquivo (como cap_setuid) em um arquivo, montar via overlayfs, e o copy-up aplicava a capability sem revalidar contra o namespace real, tornando-a efetiva fora do namespace.

CWE associado pela CISA é CWE-862 (Missing Authorization) — a checagem de autorização que deveria vincular a capability ao user namespace de origem simplesmente não era executada nesse caminho de código.

How it’s exploited

Pré-requisito central: acesso local autenticado (mesmo sem privilégios) e dois recursos habilitados no kernel Ubuntu afetado — user namespaces não privilegiados (padrão na maioria das instalações Ubuntu) e o patch de montagem overlayfs não privilegiada que a Ubuntu carregava. Sem acesso local, a falha não é explorável; é estritamente escalonamento de privilégios, não execução remota.

Na prática, o atacante cria um user namespace não privilegiado, monta um overlayfs sem privilégios elevados, e manipula a xattr security.capability de um arquivo dentro desse contexto para atribuir uma capability sensível (por exemplo, a que permite trocar UID/GID ou manipular capabilities de processo). Como a conversão/validação relativa ao namespace não ocorre no caminho do copy-up do overlayfs, a capability definida dentro do namespace isolado acaba valendo fora dele, permitindo que o processo do atacante, ao executar o arquivo resultante, adquira privilégios de root no host.

A vulnerabilidade está no catálogo KEV da CISA (adicionada em 2022-10-20, prazo de correção 2022-11-10), confirmando exploração ativa. Existem módulo Metasploit e PoCs públicos, o que reduz bastante a barreira técnica — a exploração é considerada de baixa complexidade para quem já tem uma conta local, típica de cenários de pós-exploração (elevar de usuário shell/serviço comprometido para root) em servidores multiusuário, containers mal configurados ou ambientes compartilhados.

Versions

Affected
Kernels Linux distribuídos pela Ubuntu (não o kernel upstream) nas séries 18.04 LTS, 20.04 LTS e 20.10, em todas as variantes de pacote (linux, linux-aws, linux-azure, linux-gcp, linux-gke, linux-gkeop, linux-hwe, linux-kvm, linux-oem, linux-oracle, linux-raspi, entre outras) anteriores às versões corrigidas publicadas na USN-4917-1. A condição exige que o kernel Ubuntu carregue o patch de montagem overlayfs não privilegiada sem a correção de cap_convert_nscap() em vfs_setxattr().
Fixed in
Conforme USN-4917-1: para 20.10 (groovy), kernel 5.8.0-50.56 e equivalentes por variante (ex.: 5.8.0-1021.24 raspi, 5.8.0-1024.26 kvm, 5.8.0-1026.27 oracle, 5.8.0-1028.29 gcp, 5.8.0-1029.31 azure, 5.8.0-1030.32 aws). Para 20.04 LTS (focal), versões incluindo 5.4.0-72.80 (generic), 5.8.0-50.56~20.04.1 (hwe), 5.10.0-1022.23 (oem), 5.4.0-1034.37 (raspi), 5.4.0-1038.39 (kvm), 5.4.0-1042.45 (gcp), 5.4.0-1043.46 (oracle), 5.4.0-1045.47 (aws), 5.4.0-1046.48 (azure), 5.4.0-1014.15 (gkeop). O upstream Linux kernel corrigiu o problema subjacente (cap_convert_nscap em vfs_setxattr) no commit 7c03e2cda4a5, incorporado no kernel 5.10 — antes de overlayfs não privilegiado existir oficialmente no upstream (5.11), por isso o upstream nunca esteve na condição vulnerável.

How to protect

A correção definitiva é atualizar o kernel Ubuntu para as versões corrigidas listadas na USN-4917-1 (por release: 18.04 LTS, 20.04 LTS, 20.10, incluindo variantes aws, azure, gcp, oracle, raspi, kvm, gkeop, oem, hwe). Após a atualização é necessário reiniciar o sistema, e como houve mudança de ABI, módulos de kernel de terceiros precisam ser recompilados e reinstalados — isso normalmente é feito automaticamente ao atualizar os metapacotes padrão (linux-generic, linux-virtual etc.), mas ambientes com módulos customizados fora do gerenciador de pacotes exigem atenção manual.

Se a atualização não for possível de imediato, o controle compensatório real é desabilitar user namespaces não privilegiados (via sysctl, algo como kernel.unprivileged_userns_clone=0 em kernels Ubuntu que expõem esse parâmetro). O custo é relevante: isso quebra funcionalidades que dependem de user namespaces sem privilégios, incluindo sandboxes de navegador, containers rootless e algumas ferramentas de isolamento de aplicação — não é um paliativo gratuito, é uma troca de superfície de ataque por funcionalidade.

Não existe mitigação via WAF ou controle de rede, porque a falha é puramente local, no kernel. Restringir acesso de shell/login a usuários não confiáveis reduz a exposição, mas não elimina o risco em ambientes multiusuário ou onde processos de baixo privilégio podem ser comprometidos remotamente e usados como trampolim.

How to detect

Exploração é local e não deixa assinatura de rede. Sinais a procurar em auditoria de host: chamadas de syscall mount com sistema de arquivo overlay originadas por UIDs não privilegiados fora de containers esperados; criação de user namespaces por processos não administrativos (via unshare/clone com CLONE_NEWUSER) seguida de operações setxattr envolvendo o atributo security.capability; e escalonamento anômalo de capabilities em processos filhos de sessões de usuário comum. Regras de auditd voltadas a mount(), unshare() e setxattr() com o nome de atributo security.capability, correlacionadas com UID de origem não privilegiado, são o caminho mais viável — mas não há um indicador de rede ou log padrão do fornecedor específico para essa CVE, então a ausência de alerta não implica ausência de tentativa.

Researched and written with AI from the vendor advisory and public analysis, with the sources above. Always confirm the fixed version in the official advisory before acting.
The overlayfs implementation in the linux kernel did not properly validate with respect to user namespaces the setting of file capabilities on files in an underlying file system. Due to the combination of unprivileged user namespaces along with a patch carried in the Ubuntu kernel to allow unprivileged overlay mounts, an attacker could use this to gain elevated privileges.
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Affected products
Ubuntu · linux kernel
public PoCs found45
githubgithub.com/briskets/CVE-2021-3493442githubgithub.com/inspiringz/CVE-2021-349342githubgithub.com/oneoy/CVE-2021-34933githubgithub.com/cerodah/overlayFS-CVE-2021-34931githubgithub.com/puckiestyle/CVE-2021-34931githubgithub.com/fei9747/CVE-2021-34931githubgithub.com/Abdennour-py/CVE-2021-34930githubgithub.com/derek-turing/CVE-2021-34930githubgithub.com/pmihsan/OverlayFS-CVE-2021-34930githubgithub.com/iamz24/CVE-2021-3493_CVE-2022-33570githubgithub.com/ptkhai15/OverlayFS---CVE-2021-34930githubgithub.com/George-Yanni/DeepRoot0githubgithub.com/iqbalhussainas/OverlayFS-LPE-Exploit0githubgithub.com/fathallah17/OverlayFS-CVE-2021-34930githubgithub.com/Sornphut/OverlayFS---CVE-2021-34930githubgithub.com/cyberx-1/OverlayFS-CVE-2021-34930vulncheckvulncheck.com/xdb/b1b3a8751d53unverifiedvulncheckvulncheck.com/xdb/ed42677360baunverifiedvulncheckvulncheck.com/xdb/bf6732e3dacaunverifiedvulncheckvulncheck.com/xdb/df20ad5b82e3unverifiedvulncheckvulncheck.com/xdb/f8390219793funverifiedvulncheckvulncheck.com/xdb/93af15d63cbbunverifiedvulncheckvulncheck.com/xdb/9f1aa472b331unverifiedvulncheckvulncheck.com/xdb/cb542684d6e8unverifiedvulncheckvulncheck.com/xdb/c7b918e28754unverifiedvulncheckvulncheck.com/xdb/e11475eed700unverifiedvulncheckvulncheck.com/xdb/cdab85ebdf2eunverifiedvulncheckvulncheck.com/xdb/2741081d8c00unverifiedcve_referencepacketstormsecurity.com/files/162434/Kernel-Live-Patch-Security-Notice-LSN-0076-1.htmlunverifiedvulncheckvulncheck.com/xdb/f87c55028b1eunverifiedcve_referencepacketstormsecurity.com/files/162866/Ubuntu-OverlayFS-Local-Privilege-Escalation.htmlunverifiedcve_referencepacketstormsecurity.com/files/165151/Ubuntu-Overlayfs-Local-Privilege-Escalation.htmlunverifiedvulncheckvulncheck.com/xdb/80b50ee28342unverifiedvulncheckvulncheck.com/xdb/260ad0a548b5unverifiedvulncheckvulncheck.com/xdb/8bc3c24df427unverifiedvulncheckvulncheck.com/xdb/c90d13040f2aunverifiedvulncheckvulncheck.com/xdb/76f421f52f8funverifiedvulncheckvulncheck.com/xdb/44567c4bebd7unverifiedvulncheckvulncheck.com/xdb/f90698fb4173unverifiedvulncheckvulncheck.com/xdb/53855273d7f8unverifiedvulncheckvulncheck.com/xdb/39754c7f28a6unverifiedvulncheckvulncheck.com/xdb/165ca931536bunverifiedvulncheckvulncheck.com/xdb/2ab470a88220unverifiedvulncheckvulncheck.com/xdb/f3abef618150unverifiedvulncheckvulncheck.com/xdb/586ebe33df5funverified
⚠ Public resources, to assess the exposure of systems you control or are authorized to test. Test only with authorization.