← voltar
CVE-2023-4911highsob ataqueCWE-122

Glibc: buffer overflow in ld.so leading to privilege escalation

100Vexday Risk Score

Corrija agora. Ela está sob exploração confirmada pelo CISA e tem exploit funcional público.

ssvc Actcvss 7.8epss 81%
da publicação à arma1 dias
Publicada no NVD3 de out.
1ª PoC+1d
metasploit3 de out.
CISA KEV+49d
probabilidade de exploração
81%top 1% das CVEs
exploração observada
simCISA + VulnCheck
48 exploit(s) público(s)
Ação exigida pela CISAprazo federal: 2023-12-12

Apply mitigations per vendor instructions or discontinue use of the product if mitigations are unavailable.

Resumo

Buffer overflow no dynamic loader (ld.so) da glibc ao processar a variável de ambiente GLIBC_TUNABLES, batizada de 'Looney Tunables' pela Qualys, que a descobriu e publicou a análise. Permite escalonamento de privilégios local: um usuário sem privilégios que execute um binário SUID/SGID com essa variável manipulada pode obter root. A falha é séria porque quase todo binário SUID (su, sudo, mount, passwd, etc.) serve de vetor, e distribuições Linux mainstream com glibc >= 2.34 rodam esse código por padrão — não depende de configuração exótica.

Detalhamento técnico

O bug está na rotina que faz o parse da string passada em GLIBC_TUNABLES antes de o loader ativar o binário SUID. O parser processa pares chave=valor separados por dois-pontos e, ao validar o tamanho/conteúdo dos tunables, escreve fora dos limites do buffer alocado — um out-of-bounds write (CWE-787/CWE-120) em memória heap do processo do próprio dynamic loader, que roda com os privilégios elevados do binário SUID antes mesmo do código da aplicação começar a executar.

Segundo a análise da Qualys, a falha foi introduzida em abril de 2021, quando um commit reescreveu a lógica de filtragem de tunables herdados via ambiente para binários AT_SECURE (SUID/SGID), e chegou ao release glibc 2.34. Versões anteriores ao 2.34 não contêm esse trecho de código e, portanto, não são vulneráveis ao mecanismo descrito — mesmo que apareçam listadas em rastreadores de produto por dependência genérica do componente glibc.

O atacante controla integralmente o conteúdo de GLIBC_TUNABLES no ambiente do processo que ele mesmo lança. Como ld.so processa essa variável antes de dropar privilégios ou aplicar qualquer sandboxing da aplicação, o overflow ocorre num contexto já privilegiado (owner do binário SUID), o que torna a corrupção de memória diretamente aproveitável para controle de fluxo.

Como é explorada

Pré-requisito real: acesso local (shell) na máquina, sem necessidade de privilégio algum (PR:L no vetor CVSS reflete apenas a necessidade de poder executar processos, não privilégio elevado) e sem interação de terceiros. O atacante define a variável GLIBC_TUNABLES no ambiente e invoca qualquer binário instalado com bit SUID que use a glibc afetada — não é preciso vulnerabilidade adicional na aplicação SUID em si, o overflow acontece dentro do próprio ld.so antes de o binário-alvo executar sua lógica.

A Qualys publicou análise técnica detalhada e demonstrou exploração funcional, obtendo root completo em distribuições como Fedora, Ubuntu e Debian com glibc vulnerável, sem divulgar o exploit weaponizado no primeiro momento; PoCs públicas e um módulo Metasploit surgiram depois, reduzindo bastante a barreira de exploração. A CISA incluiu a CVE no catálogo KEV citando exploração confirmada, o que eleva a prioridade de patch mesmo em ambientes sem exposição à internet, já que o vetor é local e serve como etapa de pós-exploração após qualquer acesso inicial (shell de baixo privilégio via outra falha, credencial roubada, container mal configurado com escape parcial etc.).

O resultado final é execução de código com privilégios de root (ou do dono do SUID), sem depender de condição de corrida ou timing preciso — a complexidade de exploração é considerada baixa uma vez compreendido o layout de memória do parser afetado.

Versões

Afetadas
glibc versões a partir da 2.34 (onde a lógica de filtragem de tunables para binários SUID/AT_SECURE foi introduzida) até versões anteriores à correção. Distribuições com glibc anterior à 2.34 (por exemplo, ramos legados como RHEL 6/7, que usam glibc 2.12/2.17) não contêm o trecho de código vulnerável, ainda que apareçam listadas em rastreadores de CVE por associação ao componente glibc.
Corrigidas em
Red Hat: glibc-2.34-28.el9_0.4 e correlatos para RHEL 9 / RHEL 9.0 EUS (RHSA-2023:5453, RHSA-2023:5454); glibc-2.28-225.el8_8.6 para RHEL 8 (RHSA-2023:5455); glibc-2.28-189.6.el8_6 para RHEL 8.6 EUS (RHSA-2023:5476); há também RHSA-2024:0033 cobrindo RHEL 9 Virtualization/EUS adicionais. Outras distribuições publicaram seus próprios backports de pacote glibc correspondentes ao fix upstream; verificar o changelog do pacote específico da distro para confirmar a versão exata que contém a correção.

Como se proteger

Aplicar a atualização de pacote glibc do fornecedor da distribuição é a correção definitiva. Para RHEL, a Red Hat publicou correção em RHSA-2023:5453 (RHEL 9), RHSA-2023:5454 (RHEL 9.0 EUS), RHSA-2023:5455 (RHEL 8) e RHSA-2023:5476 (RHEL 8.6 EUS), com pacotes como glibc-2.34-28.el9_0.4 (RHEL 9.0 EUS), glibc-2.28-225.el8_8.6 (RHEL 8) e glibc-2.28-189.6.el8_6 (RHEL 8.6 EUS). Após instalar o pacote corrigido, é necessário reiniciar todos os serviços vinculados à glibc ou reiniciar o sistema — o advisory da Red Hat destaca isso explicitamente, já que processos já em execução continuam usando a versão antiga carregada em memória.

Como paliativo, se o patch não puder ser aplicado imediatamente: remover ou reduzir a superfície de binários com bit SUID desnecessários no sistema, e monitorar/filtrar a variável de ambiente GLIBC_TUNABLES via PAM ou wrapper de execução para processos privilegiados, mas isso é mitigação incompleta e frágil — não cobre todos os caminhos de invocação e não substitui o patch. Definir GLIBC_TUNABLES vazia no ambiente global não é garantia, porque o atacante controla o próprio ambiente do processo que lança o binário SUID.

O que não funciona: restringir acesso de rede ou colocar WAF na frente de alguma aplicação não tem efeito, já que a exploração é inteiramente local, dentro do processo — não há componente de rede na cadeia de ataque.

Como detectar

Não há assinatura de rede a procurar — a exploração é inteiramente local, dentro do processo que carrega o binário SUID. O sinal mais confiável é auditoria de execução de processos (auditd, EDR/HIDS) capturando execve de binários SUID com a variável de ambiente GLIBC_TUNABLES presente e com valores anômalos (strings longas, caracteres de controle, múltiplos separadores ':' fora do padrão esperado de tunables legítimos), especialmente quando o processo pai não é um shell de administração esperado. Crash ou comportamento anômalo (segfault) em binários SUID comuns como su, sudo, passwd, mount também é indício de tentativa de exploração falha, mas ambientes sem logging de linha de comando/variáveis de ambiente detalhado dificilmente terão visibilidade retroativa confiável.

Pesquisado e redigido com IA a partir do advisory do fornecedor e de análises públicas, com as fontes acima. Confira sempre a versão corrigida no advisory oficial antes de agir.
A buffer overflow was discovered in the GNU C Library's dynamic loader ld.so while processing the GLIBC_TUNABLES environment variable. This issue could allow a local attacker to use maliciously crafted GLIBC_TUNABLES environment variables when launching binaries with SUID permission to execute code with elevated privileges.
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
PoCs públicas encontradas48
cve_referencewww.exploit-db.com/exploits/52479não verificadogithubgithub.com/leesh3288/CVE-2023-4911392githubgithub.com/RickdeJager/CVE-2023-4911167githubgithub.com/chaudharyarjun/LooneyPwner43githubgithub.com/hadrian3689/looney-tunables-CVE-2023-491129githubgithub.com/ruycr4ft/CVE-2023-491118githubgithub.com/KernelKrise/CVE-2023-491118githubgithub.com/Green-Avocado/CVE-2023-491115githubgithub.com/Diego-AltF4/CVE-2023-49119githubgithub.com/NishanthAnand21/CVE-2023-4911-PoC7githubgithub.com/puckiestyle/CVE-2023-49112githubgithub.com/jarpex/cve-2023-4911-exploit-optimized2githubgithub.com/teraGL/looneyCVE1githubgithub.com/xiaoQ1z/CVE-2023-49111githubgithub.com/snurkeburk/Looney-Tunables0githubgithub.com/baeseungwon1010/CVE-2023-49110githubgithub.com/silent6trinity/looney-tuneables0githubgithub.com/guffre/CVE-2023-49110githubgithub.com/0xMOGA/CVE-2023-4911-Lab0githubgithub.com/Billar42/CVE-2023-49110githubgithub.com/KillReal01/CVE-2023-49110githubgithub.com/Aryan20057/CVE-2023-49110vulncheckvulncheck.com/xdb/c66f71d05ca3não verificadovulncheckvulncheck.com/xdb/dd2d2990ad7anão verificadovulncheckvulncheck.com/xdb/c3f0dfef6dc3não verificadocve_referencepacketstormsecurity.com/files/174986/glibc-ld.so-Local-Privilege-Escalation.htmlnão verificadovulncheckvulncheck.com/xdb/912fdfa3ffcbnão verificadocve_referencepacketstormsecurity.com/files/176288/Glibc-Tunables-Privilege-Escalation.htmlnão verificadovulncheckvulncheck.com/xdb/847bf09204canão verificadovulncheckvulncheck.com/xdb/c1e2b0d1e872não verificadovulncheckvulncheck.com/xdb/6ddd35f752a2não verificadovulncheckvulncheck.com/xdb/24a3ae6b3ae0não verificadovulncheckvulncheck.com/xdb/e9cc8a9653c6não verificadovulncheckvulncheck.com/xdb/e8ba401a5397não verificadovulncheckvulncheck.com/xdb/0bfd16ee5c6enão verificadovulncheckvulncheck.com/xdb/1bf2c7948d0anão verificadovulncheckvulncheck.com/xdb/7154c8a75572não verificadovulncheckvulncheck.com/xdb/d7f283c48b1anão verificadovulncheckvulncheck.com/xdb/847b8ad5421fnão verificadovulncheckvulncheck.com/xdb/4a0f3cecfcf5não verificadovulncheckvulncheck.com/xdb/d9dc0002293fnão verificadovulncheckvulncheck.com/xdb/270ec9b3f4c1não verificadovulncheckvulncheck.com/xdb/794f2256b177não verificadovulncheckvulncheck.com/xdb/7386501edb9enão verificadovulncheckvulncheck.com/xdb/60ac54a2a53anão verificadovulncheckvulncheck.com/xdb/b43d5e2b6b33não verificadovulncheckvulncheck.com/xdb/208283cc4e70não verificadovulncheckvulncheck.com/xdb/6dd56d3450b7não verificado
⚠ Recursos públicos, para você avaliar a exposição de sistemas que controla ou está autorizado a testar. Teste apenas com autorização.