← volver
CVE-2021-4034highbajo ataqueCWE-787

CVE-2021-4034

100Vexday Risk Score

Corrige ahora. Ella está bajo explotación confirmada por CISA y tiene exploit funcional público.

ssvc Actcvss 7.8epss 95%
de la publicación al arma0 días
Publicada en NVD28 ene
1ª PoC30 mar
metasploit25 ene
CISA KEV+150d
probabilidad de explotación
95%top 1% de las CVE
explotación observada
CISA + VulnCheck
244 exploit(s) público(s)
Acción exigida por CISAplazo federal: 2022-07-18

Apply updates per vendor instructions.

Resumen

PwnKit é uma escalada de privilégio local no pkexec do polkit, o binário setuid-root presente por padrão em praticamente toda distribuição Linux desde 2009. Qualquer usuário sem privilégios com acesso de login ao sistema consegue rodar código como root, sem autenticação e sem depender de política do polkit — é o tipo de CVE 'crítica' que realmente é crítica, porque a pré-condição (login local, mesmo sem senha sudo) é trivial de satisfazer em quase qualquer ambiente multiusuário, container mal isolado ou pós-exploração inicial.

Detalle técnico

A falha (CWE relacionado a validação incorreta de entrada / out-of-bounds write, sem CVE de tipo formalmente atribuído pelo fornecedor além da descrição funcional) está na função main() do pkexec. O binário assume que o vetor de argumentos (argv) sempre terá pelo menos um elemento além do nome do executável — ou seja, que argc nunca é zero. Quando um processo é iniciado com argc igual a zero (algo que o kernel Linux permite via execve() com um array de argumentos vazio), pkexec perde a referência ao argumento esperado e passa a ler memória adjacente que, na prática, é ocupada pelo array de variáveis de ambiente (envp).

O efeito prático é que pkexec tenta resolver o 'primeiro argumento' inexistente e acaba tratando conteúdo de envp como se fosse o caminho do comando a executar. Como o atacante controla integralmente as variáveis de ambiente do processo que ele mesmo inicia, ele consegue direcionar essa leitura equivocada para um caminho e payload de sua escolha, combinando isso com manipulação de variáveis como PATH e outras usadas por funções auxiliares de resolução de caminho dentro do pkexec para carregar código arbitrário com privilégios de root.

O commit de correção upstream (gitlab.freedesktop.org/polkit/polkit, hash a2bf5c9c83b6ae46cbd5c779d3055bff81ded683) adiciona a validação explícita de argc antes de qualquer uso do array de argumentos, encerrando a execução se ele estiver vazio.

Cómo se explota

O vetor de exploração não passa pela rede: exige execução local de código, ou seja, o atacante precisa já ter uma sessão no sistema (shell de usuário comum, sessão SSH, processo em container com acesso ao binário setuid, etc.). Não há necessidade de o usuário estar em nenhum grupo especial nem de existir uma regra polkit permitindo a ação — a exploração contorna completamente a camada de autorização do polkit, que é justamente o mecanismo que pkexec deveria impor.

A exploração pública (conhecida como PwnKit, divulgada pela Qualys) demonstrou execução confiável e reproduzível em múltiplas distribuições sem necessidade de brute-force ou condições de corrida — a complexidade técnica é baixa uma vez compreendido o mecanismo, e existem PoCs públicas e módulo Metasploit, o que explica o EPSS muito alto (~0,95) e a inclusão no catálogo KEV da CISA com confirmação de exploração ativa em campo.

O resultado final é root completo na máquina: leitura/escrita/execução irrestrita, persistência, movimento lateral a partir do host comprometido. Em ambientes de container, se o pkexec setuid estiver presente na imagem e o kernel/namespace permitir, a escalada pode levar a comprometimento do host dependendo do isolamento configurado.

Versiones

Afectadas
Todas as versões de pkexec/polkit desde a introdução do utilitário pkexec em maio de 2009 até a aplicação do patch de correção — ou seja, praticamente todo o histórico do polkit em uso até janeiro de 2022, em qualquer distribuição Linux que instale pkexec como setuid-root por padrão.
Corregidas en
Corrigido pelo commit upstream a2bf5c9c83b6ae46cbd5c779d3055bff81ded683 no repositório do polkit. Cada distribuição empacotou esse fix separadamente; no caso da Red Hat, os pacotes corrigidos foram distribuídos via RHSA-2022:0265, 0266, 0267, 0268, 0269, 0270, 0271, 0272, 0273 e 0274, cobrindo RHEL 6, 7 e 8 e seus ramos de Extended/Advanced Update Support. Consulte o gerenciador de pacotes da sua distribuição para a versão específica que incorpora o patch.

Cómo protegerse

A correção definitiva é atualizar o pacote polkit para a versão corrigida pela distribuição, que incorpora o commit a2bf5c9c83b6ae46cbd5c779d3055bff81ded683. Não existe um único número de versão upstream 'limpo' citado de forma consistente nas fontes — cada distribuição lançou seu próprio pacote corrigido (RHEL 6/7/8 via RHSA-2022:0265 até 0274 e correlatas; outras distros com seus próprios avisos). Verifique o changelog do pacote polkit da sua distribuição para confirmar a versão que inclui esse commit.

Se não for possível atualizar imediatamente, a Red Hat publicou um paliativo funcional: remover o bit setuid do pkexec (chmod 0755 /usr/bin/pkexec) impede a execução privilegiada, mas quebra qualquer fluxo legítimo que dependa de pkexec. Alternativamente, a Red Hat documenta um mitigador via SystemTap que intercepta a chamada a main() de pkexec e aborta a execução se não houver argumento de linha de comando — mitigação mais cirúrgica, mas que não funciona em sistemas com Secure Boot habilitado (o módulo do kernel gerado precisaria ser assinado por uma chave confiável) e exige reaplicação após reboot.

Não funciona como mitigação: restringir acesso via política polkit (pklocalauthority/regras), porque a falha ocorre antes de qualquer verificação de autorização ser consultada — a exploração nunca chega a essa camada.

Cómo detectar

Como a exploração original (execução com argv vazio) não deixa necessariamente entradas de log de autenticação — o pkexec nunca chega a registrar uma tentativa de autorização, já que a falha ocorre antes dessa etapa — o sinal mais confiável é o de nível de processo/kernel: monitorar execve() de /usr/bin/pkexec com argc igual a zero ou com um número anormal de argumentos, e observar spawns subsequentes de shells ou binários incomuns como filhos de pkexec com UID efetivo 0 vindo de um processo pai não privilegiado. Ferramentas de auditoria de syscalls (auditd com regras para execve, EDR com telemetria de linha de comando) que capturem a ausência de argumentos na invocação de pkexec são o indicador mais direto; sem essa instrumentação específica, não há um rastro confiável em logs padrão do sistema (syslog, auth.log) porque o fluxo normal de autorização do polkit simplesmente não é acionado.

Investigado y redactado con IA a partir del advisory del fabricante y análisis públicos, con las fuentes citadas. Verifica siempre la versión corregida en el advisory oficial antes de actuar.
A local privilege escalation vulnerability was found on polkit's pkexec utility. The pkexec application is a setuid tool designed to allow unprivileged users to run commands as privileged users according predefined policies. The current version of pkexec doesn't handle the calling parameters count correctly and ends trying to execute environment variables as commands. An attacker can leverage this by crafting environment variables in such a way it'll induce pkexec to execute arbitrary code. When successfully executed the attack can cause a local privilege escalation given unprivileged users administrative rights on the target machine.
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Productos afectados
n/a · polkit
PoCs públicas encontradas244
exploitdbwww.exploit-db.com/exploits/50689no verificadogithubgithub.com/berdav/CVE-2021-40342043githubgithub.com/ly4k/PwnKit1322githubgithub.com/arthepsy/CVE-2021-40341157githubgithub.com/PwnFunction/CVE-2021-4034351githubgithub.com/dadvlingd/CVE-2021-403420githubgithub.com/chenaotian/CVE-2021-403412githubgithub.com/wudicainiao/cve-2021-403410githubgithub.com/rvzsec/CVE-2021-40348githubgithub.com/Y3A/CVE-2021-40344githubgithub.com/tahaafarooq/poppy4githubgithub.com/artemis-mike/cve-2021-40343githubgithub.com/Pixailz/CVE-2021-40342githubgithub.com/jayhutajulu1/PwnKit-CVE-2021-40342githubgithub.com/Nosferatuvjr/PwnKit2githubgithub.com/wechicken456/CVE-2021-4034-CTF-writeup2githubgithub.com/jscamposx/hack1githubgithub.com/dr4xp/pwnkit-helper1githubgithub.com/CYB3RK1D/CVE-2021-4034-POC1githubgithub.com/trinetra-1308/PwnKit-1githubgithub.com/h3x0v3rl0rd/CVE-2021-4034_Python31githubgithub.com/devianntsec/CVE-2021-40341githubgithub.com/jehovah2002/CVE-2021-4034-pwnkit1githubgithub.com/cdxiaodong/CVE-2021-4034-touch1githubgithub.com/mutur4/CVE-2021-40341githubgithub.com/ropydev/CVE-2021-4034-PwnKit1githubgithub.com/A1vinSmith/CVE-2021-40341githubgithub.com/usmansec/-CVE-2021-40341githubgithub.com/xcanwin/CVE-2021-4034-UniontechOS1githubgithub.com/CronoX1/CVE-2021-40340githubgithub.com/supportingmx/cve-2021-40340githubgithub.com/fei9747/CVE-2021-40340githubgithub.com/pyhrr0/pwnkit0githubgithub.com/asepsaepdin/CVE-2021-40340githubgithub.com/JohnGilbert57/CVE-2021-4034-Capture-the-flag0githubgithub.com/Part01-Pai/Polkit-Permission-promotion-compiled0githubgithub.com/LucasPDiniz/CVE-2021-40340githubgithub.com/Pol-Ruiz/CVE-2021-40340githubgithub.com/cerodah/CVE-2021-40340githubgithub.com/FancySauce/PwnKit-CVE-2021-40340githubgithub.com/ASG-CASTLE/CVE-2021-40340githubgithub.com/X-Projetion/Exploiting-PwnKit-CVE-2021-4034-0githubgithub.com/evkl1d/CVE-2021-40340githubgithub.com/kali-guru/Pwnkit-CVE-2021-40340githubgithub.com/BugVex/Poison-HTB-Report0githubgithub.com/boro03/CVE-2021-40340githubgithub.com/ramahmdr/PwnKit0githubgithub.com/0x4ndy/CVE-2021-4034-PoC0githubgithub.com/marcosChoucino/CVE-2021-40340githubgithub.com/galoget/PwnKit-CVE-2021-40340githubgithub.com/HellGateCorp/pwnkit0githubgithub.com/Silencecyber/cve-2021-40340githubgithub.com/Geni0r/cve-2021-4034-poc0githubgithub.com/toecesws/CVE-2021-40340githubgithub.com/ps-interactive/lab_cve-2021-4034-polkit-emulation-and-detection0githubgithub.com/zxybfq/CVE-2021-40340githubgithub.com/EuJin03/CVE-2021-4034-PoC0githubgithub.com/dh4r4/PwnKit-CVE-2021-4034-0githubgithub.com/12bijaya/CVE-2021-4034-PwnKit-0githubgithub.com/nagorealbisu/CVE-2021-40340githubgithub.com/igonzalez357/CVE-2021-4034-PwnKit-0githubgithub.com/ikerSandoval003/CVE-2021-40340githubgithub.com/AsierEgana/cve-2021-40340githubgithub.com/Z3R0space/CVE-2021-40340githubgithub.com/Milad-Rafie/PwnKit-Local-Privilege-Escalation-Vulnerability-Discovered-in-polkit-s-pkexec-CVE-2021-40340githubgithub.com/Abbykito/KERNELexploits0githubgithub.com/Allu-mette/cve-2021-40340githubgithub.com/vaibhavkrishna12004/ubuntu-privesc-lab0githubgithub.com/Murguii/DEV-CVE-2021-40340githubgithub.com/B1gN0Se/PwnKit_CVE-2021-40340githubgithub.com/vorkampfer/pwnkit_safety_check0githubgithub.com/rusakalimantan/PwnKit-CVE-2021-40340githubgithub.com/Leemyunglyul/cve-2021-4034-mock0githubgithub.com/mac3d0/CVE-2021-4034-pwnkit0githubgithub.com/krleejihyeong/WHS4_CVE-2021-40340githubgithub.com/antoinenguyen-09/CVE-2021-40340githubgithub.com/TanmoyG1800/CVE-2021-40340vulncheckvulncheck.com/xdb/a851d92d0b6fno verificadovulncheckvulncheck.com/xdb/48147332ce2bno verificadovulncheckvulncheck.com/xdb/fb7cc0ba1dd7no verificadovulncheckvulncheck.com/xdb/3c5ab90e5a59no verificadovulncheckvulncheck.com/xdb/28f7b014212ano verificadovulncheckvulncheck.com/xdb/554bad753edano verificadovulncheckvulncheck.com/xdb/8be356a486c4no verificadovulncheckvulncheck.com/xdb/14dd45d27287no verificadovulncheckvulncheck.com/xdb/6d5efc2b7ff9no verificadovulncheckvulncheck.com/xdb/0d3ecb1c75fcno verificadovulncheckvulncheck.com/xdb/2cf2be7ba166no verificadovulncheckvulncheck.com/xdb/148e1dcef753no verificadovulncheckvulncheck.com/xdb/91cfa39a3866no verificadovulncheckvulncheck.com/xdb/b46d72a94313no verificadovulncheckvulncheck.com/xdb/b7e4df92a4d4no verificadovulncheckvulncheck.com/xdb/ff2419e574a6no verificadovulncheckvulncheck.com/xdb/f591e47123fcno verificadovulncheckvulncheck.com/xdb/306f7e9e244bno verificadovulncheckvulncheck.com/xdb/fe47fe6ea534no verificadovulncheckvulncheck.com/xdb/939114e4914eno verificadovulncheckvulncheck.com/xdb/f32860e93f99no verificadovulncheckvulncheck.com/xdb/5580126ba38cno verificadovulncheckvulncheck.com/xdb/8d29d67ad340no verificadovulncheckvulncheck.com/xdb/398590244678no verificadovulncheckvulncheck.com/xdb/5cbdc401e4c7no verificadovulncheckvulncheck.com/xdb/2fbfcd89b625no verificadovulncheckvulncheck.com/xdb/1f50a9f9474ano verificadovulncheckvulncheck.com/xdb/3bfba57943e6no verificadovulncheckvulncheck.com/xdb/5c1b6088a2b9no verificadovulncheckvulncheck.com/xdb/39d787f93c25no verificadovulncheckvulncheck.com/xdb/a3f4d60ee73dno verificadovulncheckvulncheck.com/xdb/2da3980b43c5no verificadovulncheckvulncheck.com/xdb/dc9c347e8516no verificadovulncheckvulncheck.com/xdb/15d01c8fd429no verificadovulncheckvulncheck.com/xdb/3fbc89827712no verificadovulncheckvulncheck.com/xdb/84077398cd2fno verificadovulncheckvulncheck.com/xdb/942f4234ebafno verificadovulncheckvulncheck.com/xdb/96b10f9f9462no verificadovulncheckvulncheck.com/xdb/443c740547a3no verificadovulncheckvulncheck.com/xdb/5dd88cd8c9e6no verificadovulncheckvulncheck.com/xdb/b56f14805318no verificadovulncheckvulncheck.com/xdb/438507d272fano verificadovulncheckvulncheck.com/xdb/7b392e48f101no verificadovulncheckvulncheck.com/xdb/dbff6b3f68a2no verificadovulncheckvulncheck.com/xdb/7a12f449c111no verificadovulncheckvulncheck.com/xdb/6aa6d1ff0af5no verificadovulncheckvulncheck.com/xdb/da8065962774no verificadovulncheckvulncheck.com/xdb/df5b9312957bno verificadovulncheckvulncheck.com/xdb/e22fe812e2c8no verificadovulncheckvulncheck.com/xdb/c615a22c11b5no verificadovulncheckvulncheck.com/xdb/03e0030161c2no verificadovulncheckvulncheck.com/xdb/4e869d74e438no verificadovulncheckvulncheck.com/xdb/af2920365802no verificadovulncheckvulncheck.com/xdb/aeecf13a2fe2no verificadovulncheckvulncheck.com/xdb/f81ade7ce959no verificadovulncheckvulncheck.com/xdb/648c06dea4e8no verificadovulncheckvulncheck.com/xdb/8e64384edb6fno verificadovulncheckvulncheck.com/xdb/2355bc59a8b4no verificadovulncheckvulncheck.com/xdb/8cbd93d3f54fno verificadovulncheckvulncheck.com/xdb/4f033f2ca1dano verificadovulncheckvulncheck.com/xdb/f79d44984be7no verificadovulncheckvulncheck.com/xdb/0b7b8bfadb64no verificadovulncheckvulncheck.com/xdb/1f98fd3754fano verificadovulncheckvulncheck.com/xdb/e53709a1c012no verificadovulncheckvulncheck.com/xdb/42cfe42e7d59no verificadovulncheckvulncheck.com/xdb/6b8d0b342171no verificadovulncheckvulncheck.com/xdb/242a109de376no verificadovulncheckvulncheck.com/xdb/f7eb725d575dno verificadovulncheckvulncheck.com/xdb/881ce2b1d4e9no verificadovulncheckvulncheck.com/xdb/355c6f6064c4no verificadovulncheckvulncheck.com/xdb/e6b891d3c91fno verificadovulncheckvulncheck.com/xdb/859bec1aa0fbno verificadovulncheckvulncheck.com/xdb/608b06d79801no verificadovulncheckvulncheck.com/xdb/0c55a914d370no verificadovulncheckvulncheck.com/xdb/786d142f23c9no verificadovulncheckvulncheck.com/xdb/18d7915df6fcno verificadovulncheckvulncheck.com/xdb/15ffa52545a3no verificadovulncheckvulncheck.com/xdb/0aeaa9f9cdd7no verificadovulncheckvulncheck.com/xdb/6a50c42e523dno verificadovulncheckvulncheck.com/xdb/cd1b41fc5cc6no verificadovulncheckvulncheck.com/xdb/156799513645no verificadovulncheckvulncheck.com/xdb/72c137737131no verificadovulncheckvulncheck.com/xdb/b128312ce95fno verificadovulncheckvulncheck.com/xdb/2ad678aa1f5dno verificadovulncheckvulncheck.com/xdb/a90f217d0deeno verificadocve_referencepacketstormsecurity.com/files/166196/Polkit-pkexec-Local-Privilege-Escalation.htmlno verificadocve_referencepacketstormsecurity.com/files/166200/Polkit-pkexec-Privilege-Escalation.htmlno verificadovulncheckvulncheck.com/xdb/21f519b95a66no verificadovulncheckvulncheck.com/xdb/4e85a3145f0bno verificadovulncheckvulncheck.com/xdb/ca5c3e2fb49fno verificadovulncheckvulncheck.com/xdb/a6499a9f0eceno verificadovulncheckvulncheck.com/xdb/29f6b470020fno verificadovulncheckvulncheck.com/xdb/f0523fed79c3no verificadovulncheckvulncheck.com/xdb/fcffa308ff36no verificadovulncheckvulncheck.com/xdb/bdac5d88146fno verificadovulncheckvulncheck.com/xdb/17b6417968ebno verificadovulncheckvulncheck.com/xdb/3e38d35f4014no verificadovulncheckvulncheck.com/xdb/344207902686no verificadovulncheckvulncheck.com/xdb/493568e38cd7no verificadovulncheckvulncheck.com/xdb/2526c4e141f3no verificadovulncheckvulncheck.com/xdb/2d3bdbe3b846no verificadovulncheckvulncheck.com/xdb/75e973a32ca0no verificadovulncheckvulncheck.com/xdb/5a6b21dad53fno verificadovulncheckvulncheck.com/xdb/ff0ef95d1a40no verificadovulncheckvulncheck.com/xdb/30fcd0d191a3no verificadovulncheckvulncheck.com/xdb/8edd43972ceano verificadovulncheckvulncheck.com/xdb/7f47a9a77ae8no verificadovulncheckvulncheck.com/xdb/6f2b648a1f3ano verificadovulncheckvulncheck.com/xdb/c12e2f1e8b68no verificadovulncheckvulncheck.com/xdb/c8939ffa9f47no verificadovulncheckvulncheck.com/xdb/3d94e1e3d56fno verificadovulncheckvulncheck.com/xdb/8aa7e042d851no verificadovulncheckvulncheck.com/xdb/244786f0586ano verificadovulncheckvulncheck.com/xdb/f7eb79323eecno verificadovulncheckvulncheck.com/xdb/48e01189be2fno verificadovulncheckvulncheck.com/xdb/fb1c03042f33no verificadovulncheckvulncheck.com/xdb/0dc62d3c155ano verificadovulncheckvulncheck.com/xdb/e60dc3425a52no verificadovulncheckvulncheck.com/xdb/1db24935e067no verificadovulncheckvulncheck.com/xdb/722d83b48dd0no verificadovulncheckvulncheck.com/xdb/0822b980ab59no verificadovulncheckvulncheck.com/xdb/5008ad912a6bno verificadovulncheckvulncheck.com/xdb/82d76074ec2cno verificadovulncheckvulncheck.com/xdb/967303c3d942no verificadovulncheckvulncheck.com/xdb/4e83675a9d9bno verificadovulncheckvulncheck.com/xdb/4d2ae30ede35no verificadovulncheckvulncheck.com/xdb/343ddc1361a9no verificadovulncheckvulncheck.com/xdb/5cdf60043d8cno verificadovulncheckvulncheck.com/xdb/b80421acd99dno verificadovulncheckvulncheck.com/xdb/dcb8ccccb4a4no verificadovulncheckvulncheck.com/xdb/cef0cb4ead97no verificadovulncheckvulncheck.com/xdb/d7f5349cf878no verificadovulncheckvulncheck.com/xdb/50a7d45a3497no verificadovulncheckvulncheck.com/xdb/ca1dec61675dno verificadovulncheckvulncheck.com/xdb/6bec8c0df126no verificadovulncheckvulncheck.com/xdb/63b2573f076fno verificadovulncheckvulncheck.com/xdb/b006b2fe1bf8no verificadovulncheckvulncheck.com/xdb/901cf6699765no verificadovulncheckvulncheck.com/xdb/273b1f8f417fno verificadovulncheckvulncheck.com/xdb/3b1f261f3bafno verificadovulncheckvulncheck.com/xdb/6458cc9b6c90no verificadovulncheckvulncheck.com/xdb/5770e6fe3bf8no verificadovulncheckvulncheck.com/xdb/acfc56af30a1no verificadovulncheckvulncheck.com/xdb/56fa565d9f0dno verificadovulncheckvulncheck.com/xdb/5cef827064b0no verificadovulncheckvulncheck.com/xdb/ff9f3019c482no verificadovulncheckvulncheck.com/xdb/566964b48b0ano verificadovulncheckvulncheck.com/xdb/de924e14635bno verificadovulncheckvulncheck.com/xdb/9ba9a40cd868no verificadovulncheckvulncheck.com/xdb/f3c18b402a6eno verificadovulncheckvulncheck.com/xdb/c650576cc1dcno verificadovulncheckvulncheck.com/xdb/f6773c8e8540no verificadovulncheckvulncheck.com/xdb/5e2e4073e0f1no verificadovulncheckvulncheck.com/xdb/96b7b896707cno verificadovulncheckvulncheck.com/xdb/fc91e648cdb7no verificadovulncheckvulncheck.com/xdb/ee97190e81dfno verificadovulncheckvulncheck.com/xdb/48c06988841ano verificadovulncheckvulncheck.com/xdb/a82a11bda873no verificadovulncheckvulncheck.com/xdb/6ccd3614a0e6no verificadovulncheckvulncheck.com/xdb/0d8ebba65e94no verificadovulncheckvulncheck.com/xdb/f02cebe5dcc2no verificadovulncheckvulncheck.com/xdb/a7d202f88e7eno verificadovulncheckvulncheck.com/xdb/0a57ebc4b646no verificadovulncheckvulncheck.com/xdb/0602fa69a56fno verificadovulncheckvulncheck.com/xdb/57f121c7d9edno verificadovulncheckvulncheck.com/xdb/04d259e3479dno verificadovulncheckvulncheck.com/xdb/21e6735149bano verificado
⚠ Recursos públicos, para evaluar la exposición de sistemas que controlas o estás autorizado a probar. Prueba solo con autorización.